本篇讲述linear regression线性回归模型。参考资料为http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=MachineLearning&doc=exercises/ex2/ex2.html。这个网站很好的是同时提供了源代码,可以直接在matlab上跑。因为之前比较了解,所以视频是跳着看的。同时参考了<pattern analysis and machine learning>中的第三章。这本书对linear regression的本质解释的更清楚。
在所有讨论之前,我们先把linear regression线性回归的模型画出来吧,给大家一个直观的感受
图0. linear regression线性回归模型
这就是linear regression的模型了。接下来我们引入我们的问题。
问题
首先考虑如下的一个例子(例程源码来自这里)
图1
求如何进行拟合?
模型建立
我们很自然的想到可以用直线拟合
(1)
给定预测值,每个样本点发生的概率服从正态分布,为
即
如果我们有N个样本,则似然函数为
将(3)代入(4)得到
我们的任务是最大化似然函数L,那么也就成了
一般说来我们希望此式随着样本的变化不变,且为了计算方便,因此可以加上一个系数,即
我们记代价函数(cost function)为
我们需要求得w使得(7)式代价函数最小,从而转换成为一个最优化问题。这就从本质上解释了为什么代价函数是平方项。
模型求解
有两类方法可以求解w,一种是解析法(代表:最小二乘法),另一种是迭代法。
下面我们将逐条简要介绍各种算法。
1.解析法
解析法的优点是速度快,而且保证是最优解。
为方便陈述,我们不妨假设w是三维,,其中1代表偏置。我们将样本用矩阵的形式表示(习惯了会发现矩阵形式非常精简)
那么(7)式可以写成
当(8)式对w求导为0时可以取得极值。
令(9)式为0可以解得
从而得出w,这也是我对最小二乘法的本质理解。
2.迭代法
迭代法又分为梯度下降法和牛顿法,下面给出了算法框图。
(1)梯度下降法,算法如下
while (不满足终止条件) END |
(2)牛顿法,算法如下
while (不满足终止条件) END |
其中H为Hessian矩阵
梯度下降法与牛顿法比较
梯度下降法 | 牛顿法 | |
迭代次数 | 多次,慢 | 很少,快 |
算法复杂度 | O(特征数),简单 | O(特征数^3),复杂 |
最终跑出的结果
图2
小结
以前看过不少资料,发现还是需要把思路好好地理清一下,线性回归模型是最基本的学习方法。【1】真的是很好的资料,值得一读。
参考资料
【1】 http://openclassroom.stanford.edu/MainFolder/DocumentPage.php?course=MachineLearning&doc=exercises/ex2/ex2.html (stanford的开放公开课,本文的matlab例程来自这里,写的很精简)
【2】 《统计学习方法》李航 (附录A,B讲了梯度下降法和牛顿法)
【3】 Pattern Recognition and Machine Learning (对线性模型讲得最本质,不过Bishop写的跳跃性比较大,我是看了其他资料才发觉Bishop写的极好!)