单变量线性回归就是从一个输入值预测一个输出值。输入/输出关系是一个线性函数。
模型表示:
我们用一个根据房屋尺寸预测房屋售价的例子开始。
假设有一个数据集,我们称作训练集,如下表所示
我们用来描述回归问题的标记如下:
m 代表训练集中实例的数量
x 代表特征/输入变量
y 代表目标变量/输出变量
(x,y) 代表训练集中的实例
代表第i个观测实例
h 代表学习算法的函数也称为假设(hypothesis)
然后我们看一下监督学习的工作方式
我们把训练集(房屋尺寸)作为输入喂给学习算法,学习算法训练后输出一个函数
(h),通过这个函数我们可以预测房屋售价。
假设房屋尺寸与房屋售价是线性关系,我们假设函数(hypothesis function)为
,因为只有一个特征/输入变量,所以这样的问题叫做单变量线性回归问题。
代价函数(cost function):
现在我们有了假设函数,接下来要做的就是选择合适的参数(parameter)
Θ。
我们的目标是用假设函数进行预测,因此
要最接近
y
因此我们引出代价函数(cost function)也叫平方误差代价函数:
,其中½是为了接下来的计算方便。
我们的目标就是找出
和
使得代价函数
最小。
我们绘制一个等高线图,三个坐标分别为
、
和
:
我们可以看到存在一个点使得
最小。
现在我们看看代价函数是干什么的。
当
=0时,
与
随着
变化如下:
在
=1时,
取得最小值,
与y最接近。
正如我们上面提到的,当
与
均不为0时,存在一个点使得
最小,
现在我们知道了代价函数,那么我们接下来就要一个有效的算法,自动地找出使代价函数
最小的参数
和
。
梯度下降(gradient descent):
梯度下降是一个用来计算函数最小值的算法,所以我们要使用梯度下降算法来求出代价函数的最小值。
梯度下降的基本思想是:开始随机定义一个参数组合
,然后不断地改变参数的值,使得每次代价函数J下降最多,直到找到一个局部最小值。
想象一下,你现在站在山上一个点,然后运用梯度下降观察周围,找到下降最快的方向,并朝着这个方向下山。
当然,如果你的起始点不同,你所走的路径和找到的最低点也可能不同。
下面是批量梯度下降(batch gradient descent)算法的公式:
其中,
是学习率(learning rate),就是梯度下降每次下降的步长(学习速率),需要注意的是,我们要同时更新
和
。
下面是梯度下降的直观理解:
减去红线斜率(正数),所以
减小,直到红线斜率等于0,
不变,J最小;
另一方向同理,
减去红线斜率(负数),
增大,直到斜率为0,
不变,J最小。
如果学习率太小,那么下降速度比较慢,而如果学习率太大,梯度下降可能无法收敛。
如果一开始参数选择在局部最优点,那么这个点的导数为0,参数
Θ不会更新。
在梯度下降的过程中,导数的值会不断变小,下降幅度也会减小,因此在下降过程中没有必要对学习率进行调整。
梯度下降的线性回归:
现在我们将梯度下降和代价函数结合。
表示代价函数对
和
分别求导:
j=0时:
j=1时:
所以算法改写成:
这就是线性代数的梯度下降法。
下面是线性分类与线性回归比较
参考资料:Machine Learning——Andrew Ng (Coursera)
机器学习基石——林轩田 (Coursera)