“机器学习实战”刻意练习——回归问题:线性回归(最小二乘、岭回归、逐步回归)

参考:

  1. Python3《机器学习实战》学习笔记(十一):线性回归基础篇之预测鲍鱼年龄 - Jack-Cui
  2. Python3《机器学习实战》学习笔记(十二):线性回归提高篇之乐高玩具套件二手价预测 - Jack-Cui

一、回归问题概述

回归的目的是预测数值型的目标值。
最直接的办法是依据输入写出一个目标值的计算公式。这些公式被称作回归方程(regression equation),而其中的参数称作回归系数(regression weights),求这些回归系数的过程就是回归。一旦有了这些回归系数,再给定输入,做预测就非常容易了。
具体的做法是用回归系数乘以输入值,再将结果全部加在一起,就得到了预测值。

说到回归,一般都是指线性回归(linear regression),线性回归意味着可以将输入项分别乘以一些常量,再将结果加起来得到输出。

  • 优缺点
    优点:结果易于理解,计算上不复杂。
    缺点:对非线性的数据拟合不好。
  • 适用数据类型:
    数值型标称型数据
  • 回归的一般方法
    (1) 收集数据:采用任意方法收集数据。
    (2) 准备数据:回归需要数值型数据,标称型数据将被转成二值型数据
    (3) 分析数据:绘出数据的可视化二维图将有助于对数据做出理解和分析,在采用缩减法求得新回归系数之后,可以将新拟合线绘在图上作为对比。
    (4) 训练算法:找到回归系数。
    (5) 测试算法:使用R2或者预测值和数据的拟合度,来分析模型的效果。
    (6) 使用算法:使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。

二、线性回归及相关原理

1.用线性回归找到最佳拟合直线

应当怎样从一大堆数据里求出回归方程呢?
假定输入数据存放在矩阵X中,而回归系数存放在向量w中。那么对于给定的数据X1,预测结果将会通过 Y 1 = X 1 T w Y_{1}=X^{T}_{1}w Y1=X1Tw给出。
现在的问题是,手里有一些X和对应的y,怎样才能找到w呢?
一个常用的方法就是找出使误差最小的w。
这里的误差是指预测y值和真实y值之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消,所以我们采用平方误差

平方误差的矩阵形式可以写做:
( y − X w ) T ( y − X w ) (y-Xw)^{T}(y-Xw) (yXw)T(yXw)

如果对w求导,得到 X T ( Y − X w ) X^{T}(Y-Xw) XT(YXw),令其等于零,解出
w如下:
ω ^ = ( X T X ) − 1 X T Y \hat{\omega}=(X^{T}X)^{-1}X^{T}Y ω^=(XTX)1XTY

w上方的小标记表示,这是当前可以估计出的w的最优解。从现有数据上估计出的w可能并不是数据中的真实w值,所以这里使用了一个“帽”符号来表示它仅是w的一个最佳估计

上述的最佳w求解是统计学中的常见问题,除了矩阵方法外还有很多其他方法可以解决。该方法也称作OLS,意思是“普通最小二乘法”(ordinary least squares)。

2.局部加权线性回归

线性回归的一个问题是有可能出现欠拟合现象,因为它求的是具有最小均方误差的无偏估计。如果模型欠拟合将不能取得最好的预测效果。
所以有些方法允许在估计中引入一些偏差,从而降低预测的均方误差

其中的一个方法是局部加权线性回归(Locally Weighted Linear Regression,LWLR)。
在该算法中,我们给待预测点附近的每个点赋予一定的权重,然后在这个子集上基于最小均方差来进行普通的回归。与kNN一样,这种算法每次预测均需要事先选取出对应的数据子集

该算法解出回归系数 ω \omega ω的形式如下:
ω ^ = ( X T W X ) − 1 X T W Y \hat{\omega}=(X^{T}WX)^{-1}X^{T}WY ω^=(XTWX)1XTWY

其中 W W W是一个矩阵,用来给每个数据点赋予权重。

LWLR使用“核”(与支持向量机中的核类似)来对附近的点赋予更高的权重。核的类型可以自由选择,最常用的核就是高斯核,高斯核对应的权重如下:
W ( i , i ) = e x p ( ∣ x i − x ∣ − 2 k 2 ) W(i,i)=exp(\frac{|x^{i}-x|}{-2k^2}) W(i,i)=exp(2k2xix)

这样就构建了一个只含对角元素的权重矩阵w,并且点x与x(i)越近,w(i,i)将会越大
上述公式包含一个需要用户指定的参数k,它决定了对附近的点赋予多大的权重,这也是使用LWLR时唯一需要考虑的参数。

3.岭回归

如果数据的特征比样本点还多应该怎么办?
是否还可以使用线性回归和之前的方法来做预测?答案是否定的,即不能再使用前面介绍的方法。这是因为在计算 ( X T X ) − 1 (X^{T}X)^{-1} (XTX)1的时候会出错。

如果特征比样本点还多(n > m),也就是说输入数据的矩阵X不是满秩矩阵。非满秩矩阵在求逆时会出现问题。

为了解决这个问题,统计学家引入了岭回归(ridge regression)的概念,这就是第一种缩减方法。另外还有lasso法,该方法效果很好但计算复杂。第二种缩减方法称为前向逐步回归,可以得到与lasso差不多的效果,且更容易实现。

简单说来,岭回归就是在矩阵 X T X X^{T}X XTX上加一个λI从而使得矩阵非奇异,进而能对 X T X + λ I X^{T}X+ λI XTX+λI求逆。
其中矩阵I是一个m×m的单位矩阵,对角线上元素全为1,其他元素全为0。而λ是一个用户定义的数值。
在这种情况下,回归系数的计算公式将变成:
ω ^ = ( X T X + λ I ) − 1 X T Y \hat{\omega}=(X^{T}X+ λI)^{-1}X^{T}Y ω^

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值