5.1算法原理

来自CloudWiki
跳转至: 导航搜索

线性回归是机器学习中最基本的一个算法,但是那些所谓的效果很好的算法也无非是从这些基础算法慢慢演变而来。 线性回归包括一元线性回归和多元线性回归,一元的是只有一个x和一个y。多元的是指有多个x和一个y。

下面我只讲下一元的,多元只是将y=mx+b 变成了y=m1x1+m2b2+b 一元线性回归其实就是去找到一条直线,这条直线能以最小的误差(Loss)来拟合数据。

AIred002.jpg

怎么来表示误差呢?

AIred003.jpg

如上图所示,横坐标表示x,纵坐标表示y。我们要找的就是图中的这条直线。我们要去找到这条直线,大家可以想象,我们肯定希望找到的那条线,距离每个点都很近,最好所有的点上都在这条线上,但是一条直线去拟合所有的点都在这条直线上肯定不现实,所以我们希望这些点尽量离这条直线近一点。即去找每个点和直线的距离 AIred004.jpg 最小的那条线,为了简单起见,将绝对值转化为平方,那么误差可以表示为AIred005.jpg ,这里i表示第i个数据,N表示总的样本个数。一般我们还会把Loss求和平均,来当作最终的损失,即 Aired006.jpg

怎么去最小化误差?

我们要怎么去找到最能拟合数据的直线?即最小化误差呢? 一般有两个方法:


最小二乘法


上面我们讲了我们定义的损失,AIred007.jpg,其中的x,y,i,N都是已知的,那么我们就可以把这个方程看作是m和b的方程。作为一个m和b的二次方程。那么求Loss最小值的问题就转变成了求极值问题,这个高数学过的都应该知道点。

怎么求极值呢?

令每个变量的偏导数为零,求方程组的解呗,这个是很基础的高数问题了。 我们可以得到下面的方程组 Aired008.jpg

AIred009.jpg

然后就是巴拉巴拉巴拉把m和b求出来,这样就得到我们要的线性方程了。


梯度下降法


没有梯度下降就没有现在的深度学习,这是一个神奇的算法。 最小二乘法可以一步到位,直接算出m和b,但他是有前提的,具体我有点记不清了,好像是需要满秩什么的。梯度下降法和最小二乘不一样,它通过一步一步的迭代,慢慢的去靠近到那条最优直线。 最小二乘法里面我们提到了两个偏导数,分别为

AIred010.jpg

AIred011.jpg