1、单变量的线性回归
依然以房价问题为例,以面积为变量。
训练集相关的几个说明:m 训练数据的个数
x1 ,x2 ,x3 ....xm input/features 这里是面积值
y1 ,y2 ,y3 ....ym output/target 这里是房价值
模型描述:
h(x)的一种表达方式是
即用一条直线来拟合。
因为只含有一个特征变量,所以称为单变量线性回归问题。
代价函数:
接下来我们需要找到合适的参数值sita来使得直线最大程度fit to the data
模型所预测的值与实际值的差距就是modeling error,所以我们的目标是找到使得误差的平方和最小的模型参数,即使得cost function J 最小。
改变参数的值得到的代价函数大小不一样,假设只有一个参数时可以简化出下图的变化情况:
如果有两个参数sita 0和1,则下面的等高线图:
可以想到如果变量更多的话是很难用这种直观地图来表示的,更不可能人来自己选择最佳的参数值,所以我们需要使用合适的算法能够自动找出使得代价函数J最小的参数值。
梯度下降:
梯度下降通常也称为最速下降法,开始时我们随机选择参数们的初始值,计算代价函,然后寻找下一个能让代价函数下降最大的参数值,重复做下去知道找到一个局部最优解。
注:阿尔法表示学习率,它决定了每次下降的步幅。步幅太小会导致收敛时间过长,很慢;步幅太大可能会无法收敛;
这里的J不一定是线性回归问题中的代价函数,也可以是其它问题;
梯度下降存在的问题:靠近极小值时收敛速度减慢(导数值很小);不同初始值可能会收敛得到不同的极小值。
对线性回归问题运用梯度下降:
代入线性回归的代价函数J,(单变量)对J求偏导如下后得到:
上面所说的是“ 批量梯度下降” 算法。因为每一步都要考虑m个样本,复杂度为O(m*n),当训练集非常大时通常都太慢了,所以提出了随机梯度下降(增量梯度下降)算法,即每一次只考虑一个训练项,
复杂度为O(n).。但是增量梯度下降算法可能不会精确收敛于最小值而是接近最小值,但是考虑到效率问题在实际中应用更多一些。
上述使用了迭代的方法求最小值,实际上对于这类特定的最小二乘回归问题,或者普通最小二乘问题,存在其他方法给出最小值,后面将介绍正规方程组的方法。