Linear Regression(线性回归)
线性回归的目的,就是从一堆已知数据和结果中,模拟出一条合适的函数线,之后再对这个函数输入新数据,便能产生出新的预测结果。
线性回归假设特征和结果满足线性关系。其实线性关系的表达能力非常强大,每个特征对结果的影响强弱可以由前面的参数体现,而且每个特征变量可以首先映射到一个函数,然后再参与线性计算。这样就可以表达特征与结果之间的非线性关系。
从二维空间中引入问题,例如房屋的价格和房屋的面积是有一定关系的,以下是一些房屋的数据
我们可以把这些数据绘制成二维图
还记得我们一开始说的,就是要从已知数据中,进行回归绘制,产生一条回归函数,用来预测新的房屋价格,这里先给出对应的回归函数图形。
这个过程就是线性回归,那么我们如何进行线性回归呢?在二维上,我们已经在高中就学会了,因为二维的线性回归方程就是y = kx +b ,这个函数的求解我们再熟悉不过了。可是如果在三维、四维、N维中如何求解,回到这个例子,这里只描述一个feature,就是房屋大小,如果还有影响房屋价格的因素,比如房屋的朝向、房屋的地理位置等,也就是说feature有多个,整个数据模型处于多维度空间中了。
不要怕,细细分析。😀
我们用X1,X2..Xn 去描述feature里面的分量,比如x1=房间的面积,x2=房间的朝向,等等,我们可以做出一个估计函数:
θ在这儿称为参数,在这的意思是调整feature中每个分量的影响力,就是到底是房屋的面积更重要还是房屋的地段更重要。如果我们令X0 = 1,就可以化简式子来表示,其中W和X都是向量。
那么我们如何来求解这个函数呢,首先我们要知道,这个函数的有多个解,我们第一步必须先找出哪个是最优的解,然后再解出参数得到函数全貌。
如何知道什么样的函数最符合我们的数据模型,或者说我们需要一个机制去评估我们W是否比较好,所以说需要对我们做出的h函数进行评估,一般这个函数称为损失函数(cost function)或者错误函数(error function),描述h函数不好的程度,在下面,我们称这个函数为J函数:
其实在机器学习中,很多情况就是从先产生预测函数(估计函数),再用损失函数对预测函数进行评估,只要预测函数中的cost function越小,也就是 J(W),也就说明该预测函数越好,所选取的参数越符合!
所以问题转化为,求函数 J 的最小值问题。
先来介绍第一种解法。
求极值,自然联想到函数求导,只不过多维求导,略有复杂,以下给出求导过程。
但是这种解法有一个前提,就是矩阵满秩可求解时(求导等于0)。
那如果矩阵不满秩呢?
这里有一种更为通用的解法,梯度下降法。
梯度下降法概念:梯度下降算法是一种求局部最优解的方法,对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向。
原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;
注意:当变量之间大小相差很大时,应该先将他们做处理,使得他们的值在同一个范围,这样比较准确。
我们以二元参数为例:
(1)首先对θ(就是W)赋值,这个值可以是随机的,也可以让θ是一个全零的向量。
(2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。
梯度下降法,更通俗的来说,就是对于我们的函数J(θ)求偏导,然后进行不断更新迭代。
补充
1、为什么线性回归的损失函数是这样的
答案是:这是最小二乘法,其中1/2系数是为了处理求导时候的约分而设置的,最小二乘法是作为线性回归中比较靠谱的损失函数,详细证明见参考。
2、数值归一化(Feature Scaling)
这是一种处理数值的思想:将各个feature的值标准化,使得取值范围大致都在-1<=x<=1之间;减少迭代次数或者数值太大导致的权重过大。常用的方法是Mean Normalization:
3、梯度下降法参数的选择
迭代次数和learning rate是影响梯度下降法是否成功收敛到最优值的重要因素。
- 迭代次数:
- 过少可能使得算法还没有收敛就停止,
- 过多导致资源(时间等)的浪费;
- learning rate:
- 过小,使得每次迭代时theta的变化量过小,从而算法收敛过慢,换言之需要增加迭代次数使得算法收敛;
- 过大,使得每次迭代时theta的变化量过大,可能在变化(迭代)过程中越过最优(收敛)点。
参考出处
http://blog.csdn.net/xiazdong/article/details/7950084
http://blog.csdn.net/xbinworld/article/details/43919445
http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971867.html
http://www.cnblogs.com/llhthinker/p/5248586.html
最近一次修改:2017/8/29
修改次数:1