线性回归

注:本文中所有公式和思路来自于邹博先生的机器学习升级版,我只是为了加深记忆和理解写的本文。


本文将跟大家介绍一下线性回归,直接步入主题。


现在我们有一些关于房价的数据,根据房屋得大小居室来预测价钱:


那么我们可以将第一个特征Living area看作x1,可以讲第二个特征bedrooms看作x2,Price为h(x),我们可以公式化得写成:


其中讲x0设为0,则可以写成统一的式子:


我们先直观的看一看模型得图:


看的出来大多数得预测值与实际值还是有一定得差距,我们用ε表示,那么可以有以下等式:


这个ε我们可以这么来解释,认为它是独立分布的,服从均值为0,方差为某个定值得高斯分布,之所以这么说是因为ε是有众多得原因导致得,比方说学区、朝向、交通、格局等等众多原因相互作用的一个残差,因此根据中心极限定理,认为是服从高斯分布的,既然是服从高斯分布,可以如下表示:


我们将ε代入:


我们可以将这个式子作为似然函数:


接着我们对似然函数取对数,得到对数似然:


变换过程很简单我就不说了,其中m是样本数量,π、σ也是定值,所以我们直接化简为:


我们的目标就是求J(θ)最小,这个也是著名的最小二乘的目标函数,我们可以变换一下:


对θ求偏导得到梯度:


可以得到参数的解析式:


当然了,如果XTX不可逆或者防止过拟合,可以加入λ扰动:


其实加入λ并不是不可解释的,其实是计算得来的,首先说如果XTX不可逆,加入λ即为正定矩阵:


那么对于任意的λ>0,XTX加上λ就一定为正定,从而可逆,这样公式就是有意义的,那么对于第二个作用:加入λ可以防止过拟合我们可以这么解释,在目标函数后边加个惩罚项:


然后将这个目标函数重新按照之前的办法求导,即可得到前边我们得到的目标函数。


其中的这个λ是个超参数,我们如果偷懒的话可以设置一个小的值,比如0.1、0.01,其实正统的办法我们应该使用交叉验证来做。交叉验证的具体步骤就不介绍了,比较简单。


当然了,如果特征规模很大,超过了1000维,那么矩阵的逆是不方便求的,因此我们可以使用梯度下降算法来做。


梯度下降算法


(1):  初始化θ(随机初始化)

(2):  沿着负梯度方向迭代,更新后的θ使得J(θ)更小:


其中α是步长、学习率,超参数,可以指定一个较小的步长,也可以使用折半查找、回溯、拟牛顿来求一个动态的α(后续会介绍)。


Andrew NG的machine learning的课件中这么描述更新步骤:


其中有个∑从i到m加和,也就是说每更新一次,都是拿全部的训练样本来做一次梯度下降,叫做批量梯度下降,这样的话其实效率比较低,我们可以使用下边的方法做:


这种方法每次是拿一个样本来迭代一次梯度,效率会比较高,这种方式叫做随机梯度下降。

当然了,还可以采用一种折中的办法:每次拿到若干个样本的平均梯度作为更新方向,这就是mini-batch梯度下降算法,CNN中就是采用这种方式来做的。


其他的线性回归


局部加权线性回归:


其中w一种可能的选择方式(高斯核函数):


其中τ为带宽,他是控制着训练样本随着xi距离的衰减速率




到此线性回归暂时介绍到这里,在下文终将会介绍另一种线性回归:Logistic回归,欢迎批评指正!






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值