linear regression 线性回归

本篇讲述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线性回归的模型画出来吧,给大家一个直观的感受

linear regression 线性回归_第1张图片

图0. linear regression线性回归模型

这就是linear regression的模型了。接下来我们引入我们的问题。


问题

首先考虑如下的一个例子(例程源码来自这里)

linear regression 线性回归_第2张图片

图1

求如何进行拟合?


模型建立

我们很自然的想到可以用直线拟合

(1)

给定预测值,每个样本点发生的概率服从正态分布,为

(2)

(3)

如果我们有N个样本,则似然函数为

(4)

将(3)代入(4)得到

(5)

我们的任务是最大化似然函数L,那么也就成了

(5)

一般说来我们希望此式随着样本的变化不变,且为了计算方便,因此可以加上一个系数,即

(6)

我们记代价函数(cost function)为

(7)

我们需要求得w使得(7)式代价函数最小,从而转换成为一个最优化问题。这就从本质上解释了为什么代价函数是平方项。


模型求解

有两类方法可以求解w,一种是解析法(代表:最小二乘法),另一种是迭代法。

linear regression 线性回归_第3张图片

下面我们将逐条简要介绍各种算法。


1.解析法

解析法的优点是速度快,而且保证是最优解。

为方便陈述,我们不妨假设w是三维,,其中1代表偏置。我们将样本用矩阵的形式表示(习惯了会发现矩阵形式非常精简)

linear regression 线性回归_第4张图片

那么(7)式可以写成

(8)

当(8)式对w求导为0时可以取得极值。

(9)

令(9)式为0可以解得

(10)

从而得出w,这也是我对最小二乘法的本质理解。


2.迭代法

迭代法又分为梯度下降法和牛顿法,下面给出了算法框图。

(1)梯度下降法,算法如下

赋随机值

while (不满足终止条件)

    

END


(2)牛顿法,算法如下

赋随机值

while (不满足终止条件)

   

END

其中H为Hessian矩阵

linear regression 线性回归_第5张图片


梯度下降法与牛顿法比较

  梯度下降法 牛顿法
迭代次数 多次,慢 很少,快
算法复杂度 O(特征数),简单 O(特征数^3),复杂
Andrew Ng说特征<1000次时用牛顿法较好,>1000时梯度下降较好


最终跑出的结果

linear regression 线性回归_第6张图片

图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写的极好!)

你可能感兴趣的:(机器学习,统计学,线性回归,Regression,Linear)