从零开始-Machine Learning学习笔记(2)-Linear Regression(线性回归)

​ 线性回归常被用于对一些连续型的数据做出预测,比如预测房屋的价格,鲍鱼的年龄,企业销售量的预测,还有更有意思的应用如预测名人的离婚率。

​ 什么叫回归,为什么数据预测的过程称之为回归。其实回归一词跟数值预测没有任何的关系,它来源于达尔文的表兄弟Francis Galton,Galton在1877年完成了第一次回归预测,目的是根据上一代的豌豆种子(双亲)的尺寸,来预测下一代的豌豆种子(孩子)的尺寸。他在大量的对象上使用了回归分析,比如人的身高,如果双亲的身高比平均高度高,那么他们的子女也会倾向于比平均高度高,但是不及双亲,孩子的身高向着平均高度回退(回归)。所以,尽管回归一次跟数值预测没有什么关系,但是人们把这种研究方法称之为回归。

​ 如何在一堆有标签的数据中求出我们的回归方程呢?这里要说明一下有标签的数据如

f(xi)=wTX+b f ( x i ) = w T X + b

这种多变量的回归方程形式我们称之为多元线性回归,第二个方程是其向量表示形式。

​ 所以我们对于求解线性回归的问题具体到求W与b值,如何确定W与b呢?关键在要使预测值 f(xi) f ( x i ) 与实际值y之间的误差最小。

​ 通常我们使用均方误差(平方误差):

J=i=1n(f(xi)yi)2=i=1n(yiwxib)2 J = ∑ i = 1 n ( f ( x i ) − y i ) 2 = ∑ i = 1 n ( y i − w x i − b ) 2

均方误差有非常好的几何意义,它对应了常用的欧几里得距离,基于均方误差最小化来进行模型求解的方法称之为“最小二乘法”。通常我们也称上式J为 代价函数

​ 所以到这里,线性回归问题又具体到使代价函数J最小上了,通常我们使用梯度下降算法。梯度下降算法是一个用来求函数最小值的算法,其背后的思想是:

开始随机选择一个参数的组合(w1,w2,w3,…wn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这样做就可以找到一个局部最小值。

梯度下降算法的可表示为:

wi:=wiαddwiJ(wi) w i := w i − α d d w i J ( w i )

其中, α α 是学习率(learning rate),他决定了我们沿着能让代价函数下降程度最大的方向迈出的步子有多大。但是学习率既不能太大,也不能太小。太大会导致发散而太小会导致收敛的速度太慢。通常可以考虑以下的几个学习率:

α α =0.01, 0.03, 0.1, 0.3, 1, 3, 10

所谓函数下降程度最大的方向,指的就是导数的反方向,所以有了上述的梯度下降公式,在一次计算结束后,得到的W能使代价函数向局部最小点靠近,所以每次结束时要用新计算所得的W去替换上一次的W,这里值得注意的是,要等全部的W都计算出来之后再同时更新,而不是每计算出一个w就去更新。

​ 到这里大家会发现我们只谈论了w怎么求解,而在回归方程中还有一个常数项b没有求解。事实上,我们在上式的梯度下降算法已经将b也求解出来了。将原来的回归方程进行变形如下

f(xi)=w1x1+w2x2+w3x3+...+b f ( x i ) = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + b

=w1x1+w2x2+w3x3+...+w0 = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + w 0

=w0x0+w1x1+w2x2+w3x3+...+wn = w 0 x 0 + w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + w n

=WTX = W T X

其中, x0=1 x 0 = 1 ,这样就和原来的回归方程一致了,在实际操作中,我们可以将X的变量增加一个,其值为1即可。

​ 通常,梯度下降求解的过程可以用现成的一些算法,因为梯度下降算法的实现需要大量的数值计算的内容与方法,已经有数学家与计算科学家们将这些方法实现了。我们没有必要在这上面花费时间,因为这并不是我们研究的重点。在Octave/Matlab中可以调用:

[opttheta,functionval,exitflag] = fminunc(@costFunction,initialTheta,options)

在python中有现成的库可以使用比如:numpy.linalog.lstsq例子scipy.stats.linregress例子pandas.ols例子等。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值