Linear Regression (Least Square Regression)

转载:http://blog.sina.com.cn/s/blog_a18c98e50101108a.html

Linear Regression (Least Square Regression)_第1张图片

首先通过某种学习算法训练已有的数据,得到function  h。H叫做hypothesis。给定x值,它可以预测对应的y值。举个例子,x可以是住房的面积,y是房子的价格。当你给h输入任意一个面积值,他就可以预测出这个房子价值多少钱。

当输出Y的值是连续性的时候,这个问题叫做regression

当输出Y的值是离散性的时候,这个问题叫做classification

 

上面的例子大致符合线性的关系(房子价格大致和面积成线性关系)。

Linear Regression就是一种可以解决如上问题的监督学习算法。

假设有如下数据,x轴是房子面积,y轴是房子价格。假设我们用Least square的方法,实际上就是求一条直线,它可以让每个点数据到直线距离的平方的和最小。

Linear Regression (Least Square Regression)_第2张图片

如果是上面的例子,x 是一维的(房子面积),那么H可以写成:

Linear Regression (Least Square Regression)_第3张图片

如果房子价格不仅仅依据房子面积,同时也依据房子的房间数,那么H可以被写成:

Linear Regression (Least Square Regression)_第4张图片

如果假设x0等于 1,那么这个式子就可以写成:

Linear Regression (Least Square Regression)_第5张图片

H(x)是预测的值,y是真实的值,我们就是要找到一个Ө,使两者差的平方最小。

 

写成公式的话,Cost Function可以定义成:

Linear Regression (Least Square Regression)_第6张图片

我们的目标就是计算出一个Ө值,使J最小。

 

下列方法可以解决这个问题:

 

Gradient Descent:

这个算法理解起来很简单,首先初始化一个Ө值。之后望向四面八方,看那条路可以接近正确的值就向那个方向迈一步。更新Ө值,再重复上面过程,直到J的值不怎么变化为止。数学表达为:

Linear Regression (Least Square Regression)_第7张图片

当然上述算法有可能得到的只是local minimum。所以重复几次上面的过程,用不同的初始值,如果得到相同的结果,那么就可以认为当前的Ө值可以让J最小。

 

Stochastic Gradient Descent (Incremental gradient descent)

前面的方法,需要处理完所有的训练数据之后才会每次更新一次Ө,如果训练数据很多的话,就会变得很慢。Stochastic Gradient Descent每处理完一个训练数据,就会立即更新Ө。在某种程度上,这可以提高程序的效率。

 

The Normal Equation

这种方法不需要经过任何循环,也不需要假设初始值。虽然推导本身有点复杂,但是结果一步到位,简单又效率。非常牛逼的方法啊。

我刚看完这个推导之后,不得不佩服那些数学家,居然可以如此简单的算出上述需要循环才能得到的复杂的结果。唉,感叹一下数学之美。

 

准备工作:

定义function f(A):Mapping from M-by-n matrices to the real numbers。

定义f(A)的微分为:

Linear Regression (Least Square Regression)_第8张图片

 

定义trace operator。对于一个n by n的matrix A, the trace of A is:

Linear Regression (Least Square Regression)_第9张图片

 

Trace有如下特性:

如果a是一个real number, 那么tr a = a

Linear Regression (Least Square Regression)_第10张图片
Linear Regression (Least Square Regression)_第11张图片

矩阵微分有如下特性:

 

Linear Regression (Least Square Regression)_第12张图片

开始推导:

首先,设计一个m行n列的(实际上是n+1列,应为我们假设x0 =1 )矩阵X,他的每一行都是一个training sample,每列都是一个特征。

Linear Regression (Least Square Regression)_第13张图片

 

设计y成为一个m列的目标值(输出值)向量,也就是房子的价格在我们例子中。

Linear Regression (Least Square Regression)_第14张图片

因为:

Linear Regression (Least Square Regression)_第15张图片

所以:

Linear Regression (Least Square Regression)_第16张图片

因为对于一个向量z来说:

Linear Regression (Least Square Regression)_第17张图片

所以:

Linear Regression (Least Square Regression)_第18张图片

 

最后我们用之前提到的矩阵微分特性的第二和第三条:

 

Linear Regression (Least Square Regression)_第19张图片

所以:

Linear Regression (Least Square Regression)_第20张图片
 

因为我们要让J最小,所以J的微分必须等于0。

所以:

Linear Regression (Least Square Regression)_第21张图片

 

这就是最后的结果了。非常简单明了也很容易实现出来。

需要注意的是,当你实现的时候,记得把数据X最右边加上全部是“1”的一列,因为我们前面的时候假设

X0 = 1。

下图是Matlab的结果:

Linear Regression (Least Square Regression)_第22张图片

 

"x"是原始数据,蓝线是用Matlab的polyfit()方法算出来的linear regression。红圈就是用normal method计算出来的预测值,可以看到他们全部都完美的对齐在蓝线上。

 

不记得在哪里看到的了,有人说,当数据量过大的时候normal equation method会变得不稳定。QR Factorization是一种更好的方法。

你可能感兴趣的:(Linear Regression (Least Square Regression))