这里是斯坦福大学机器学习网络课程的学习笔记。课程地址是:https://class.coursera.org/ml-2012-002/lecture/index
如上一节:线性回归问题介绍 中所讲, 解决线性回归问题,其实就是找使成本函数最小值的点。
成本函数:J(a,b)=1/2m * sum[(a+bx)-y]2,
多特征情况下成本函数为:J(a) = 1/2m *sum( (Xa-y).^2),
其中X是m*n矩阵,a是n*1特征权重向量,y是n*1向量,m为样本个数,n为特征个数,X(i,j)为第i个样本中第j个特征的值。
1. 正规化方程组解法:
要取得J(a)的最小值,只需要求出J(a)关于a的导数为0点即可。
导数函数,记为J'(a) = 1/m*((Xa-y)T*X)T
令J'(a)=0, 则a=(XT*X)-1*XT*y,此a就是要求的特征权重。 此方法即为正规方程组解法。
当m或n值较大时,a=(XT*X)-1*XT*y的计算量很大,O(n3)计算量,此时正规方程组解法就会遇到瓶颈,需要引入其他解法。
2. 梯度下降法:并不是直接求出最小值点,而是通过一个初始点,一步一步寻找最小值点,寻找的方式是:以最快的下降方向上,以一定步长前进,递归到最小值点。
其中:
最快的下降方向为:该点导数为斜率的方向。
步长:固定值,可以用0.1, 0.01, 0.001尝试不同值,选取最合适的。
初始位置:随机指定。
何时终止:迭代了一定次数,或者成本函数值收敛或足够小。
3. 正规化方程组解法 P.K. 梯度下降法:
正规化方程组简洁,但支持数据量小。
梯度下降法,需要考虑初始值和步长的指定以及特征归一化,但可以支持大数据量。
问题1:固定步长,会不会在接近最小值点时步长过大?
答: 不会。因为实际起作用的步长是 步长*斜率值,而越接近最小值点时斜率约接近0,步长*斜率就会变小。
问题2: 步长大小如何选择?
答:步长过小会导致成本函数收敛速度慢,过大可能会导致成本函数不收敛。可以用0.1,0.01,0.001这样间隔10倍或者3倍尝试,看成本函数变化曲线。曲线下降太平缓需要加大步长,曲线波动较大、不收敛时需要减小步长。