Linear Regression

Linear Regression(线性回归)

​ 线性回归的目的,就是从一堆已知数据和结果中,模拟出一条合适的函数线,之后再对这个函数输入新数据,便能产生出新的预测结果。

​ 线性回归假设特征和结果满足线性关系。其实线性关系的表达能力非常强大,每个特征对结果的影响强弱可以由前面的参数体现,而且每个特征变量可以首先映射到一个函数,然后再参与线性计算。这样就可以表达特征与结果之间的非线性关系。

​ 从二维空间中引入问题,例如房屋的价格和房屋的面积是有一定关系的,以下是一些房屋的数据

QQ截图20170829180302

​ 我们可以把这些数据绘制成二维图

2png

​ 还记得我们一开始说的,就是要从已知数据中,进行回归绘制,产生一条回归函数,用来预测新的房屋价格,这里先给出对应的回归函数图形。

31

这个过程就是线性回归,那么我们如何进行线性回归呢?在二维上,我们已经在高中就学会了,因为二维的线性回归方程就是y = kx +b ,这个函数的求解我们再熟悉不过了。可是如果在三维、四维、N维中如何求解,回到这个例子,这里只描述一个feature,就是房屋大小,如果还有影响房屋价格的因素,比如房屋的朝向、房屋的地理位置等,也就是说feature有多个,整个数据模型处于多维度空间中了。

不要怕,细细分析。😀

我们用X1,X2..Xn 去描述feature里面的分量,比如x1=房间的面积,x2=房间的朝向,等等,我们可以做出一个估计函数:

img

​ θ在这儿称为参数,在这的意思是调整feature中每个分量的影响力,就是到底是房屋的面积更重要还是房屋的地段更重要。如果我们令X0 = 1,就可以化简式子来表示,其中W和X都是向量。

​ 那么我们如何来求解这个函数呢,首先我们要知道,这个函数的有多个解,我们第一步必须先找出哪个是最优的解,然后再解出参数得到函数全貌。

​ 如何知道什么样的函数最符合我们的数据模型,或者说我们需要一个机制去评估我们W是否比较好,所以说需要对我们做出的h函数进行评估,一般这个函数称为损失函数(cost function)或者错误函数(error function),描述h函数不好的程度,在下面,我们称这个函数为J函数:

img9

其实在机器学习中,很多情况就是从先产生预测函数(估计函数),再用损失函数对预测函数进行评估,只要预测函数中的cost function越小,也就是 J(W),也就说明该预测函数越好,所选取的参数越符合!

所以问题转化为,求函数 J 的最小值问题

先来介绍第一种解法。

求极值,自然联想到函数求导,只不过多维求导,略有复杂,以下给出求导过程。

img

但是这种解法有一个前提,就是矩阵满秩可求解时(求导等于0)。

那如果矩阵不满秩呢?

这里有一种更为通用的解法,梯度下降法

img8

梯度下降法概念:梯度下降算法是一种求局部最优解的方法,对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向。

原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;

注意:当变量之间大小相差很大时,应该先将他们做处理,使得他们的值在同一个范围,这样比较准确。

我们以二元参数为例:

(1)首先对θ(就是W)赋值,这个值可以是随机的,也可以让θ是一个全零的向量。

(2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。

梯度下降法,更通俗的来说,就是对于我们的函数J(θ)求偏导,然后进行不断更新迭代。

img

补充

1、为什么线性回归的损失函数是这样的

img1

答案是:这是最小二乘法,其中1/2系数是为了处理求导时候的约分而设置的,最小二乘法是作为线性回归中比较靠谱的损失函数,详细证明见参考。

2、数值归一化(Feature Scaling)

这是一种处理数值的思想:将各个feature的值标准化,使得取值范围大致都在-1<=x<=1之间;减少迭代次数或者数值太大导致的权重过大。常用的方法是Mean Normalization:

img4

3、梯度下降法参数的选择

迭代次数和learning rate是影响梯度下降法是否成功收敛到最优值的重要因素

  • 迭代次数
    • 过少可能使得算法还没有收敛就停止,
    • 过多导致资源(时间等)的浪费;
  • learning rate:
    • 过小,使得每次迭代时theta的变化量过小,从而算法收敛过慢,换言之需要增加迭代次数使得算法收敛;
    • 过大,使得每次迭代时theta的变化量过大,可能在变化(迭代)过程中越过最优(收敛)点。

788978-20160306204228799-1880280740


参考出处

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

坚持原创技术分享,您的支持将鼓励我继续创作!