A-06 最小角回归法

最小角回归法

在这里插入图片描述

  最小角回归相当于前向选择法和前向梯度法的一个折中算法,简化了前项梯度法因 ϵ \epsilon ϵ的迭代过程,并在一定程度的保证了前向梯度法的精准度。

  通常用最小角回归法解决线性模型的回归系数。对于一个有 m m m个样本,每个样本有 n n n个特征的训练集而言,假设可以拟合一个线性模型 Y = ω T X Y=\omega^TX Y=ωTX,其中 Y Y Y m ∗ 1 m*1 m1的向量, X X X m ∗ n m*n mn的矩阵, ω \omega ω n ∗ 1 n*1 n1的向量。即可通过最小角回归法求得最小化该模型的参数 ω \omega ω

  首先把矩阵 X X X看成 n n n m ∗ 1 m*1 m1的向量 X i ( i = 1 , 2 , ⋯   , n ) X_i \quad(i=1,2,\cdots,n) Xi(i=1,2,,n),之后选择与向量 Y Y Y余弦相似度最大,即与 Y Y Y最为接近的一个变量 X i X_i Xi,使用类似于前向选择法中的残差计算方法得到新的目标 Y e r r Y_{err} Yerr,此时不同于前向梯度法的一小步一小步走,而是走到出现一个 X j ( j = 1 , 2 , i − 1 , i + 1 , ⋯   , n ) X_j\quad(j=1,2,i-1,i+1,\cdots,n) Xj(j=1,2,i1,i+1,,n)的时候,此时 X i X_i Xi Y e r r Y_{err} Yerr的余弦相似度等于 X j X_j Xj Y e r r Y_{err} Yerr的余弦相似度,这个时候残差 Y e r r Y_{err} Yerr沿着 X i X_i Xi X j X_j Xj的角平分线方向走,知道出现第三个特征 X k X_k Xk Y e r r Y_{err} Yerr的相关度等于 X i X_i Xi Y e r r Y_{err} Yerr的余弦相似度等于 X j X_j Xj Y e r r Y_{err} Yerr的余弦相似度的时候,使用这三者的共同角平分线,作为残差 Y e r r Y_{err} Yerr的路径方向,直到所有变量取完了,停止算法,即可得到 ω \omega ω

举例

# 举例图例
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
%matplotlib inline
font = FontProperties(fname='/Library/Fonts/Heiti.ttc')

# X1*w1
plt.annotate(xytext=(2, 5), xy=(8, 5), s='', color='r',
             arrowprops=dict(arrowstyle="->", color='r'))
plt.text(6, 4.5, s='$X_1*\omega_1$', color='g')
# X1
plt.annotate(xytext=(2, 5), xy=(4, 5), s='', color='r',
             arrowprops=dict(arrowstyle="->", color='k'))
plt.text(2.5, 4.5, s='$X_1$', color='g')
# X2
plt.annotate(xytext=(2, 5), xy=(3, 7), s='', color='r',
             arrowprops=dict(arrowstyle="->", color='k'))
plt.text(2, 6, s='$X_2$', color='g')
# Y
plt.annotate(xytext=(2, 5), xy=(12, 8), s='', color='r',
             arrowprops=dict(arrowstyle="->", color='k'))
plt.text(5, 7.5, s='$Y$', color='g')

# X1
plt.annotate(xytext=(8, 5), xy=(10, 5), s='', color='r',
             arrowprops=dict(arrowstyle="->", color='r'))
plt.text(8.5, 4.5, s='$X_1$', color='g')
# X2
plt.annotate(xytext=(8, 5), xy=(9, 7), s='', color='r',
             arrowprops=dict(arrowstyle="->", color='r'))
plt.text(8, 6, s='$X_2$', color='g')
# w2(X1+X2)
plt.annotate(xytext=(8, 5), xy=(12, 8), s='', color='r',
             arrowprops=dict(arrowstyle="->", color='gray'))
plt.text(10.5, 6.3, s='$(X_1+X_2)\omega_2$', color='g')


plt.xlim(0, 13)
plt.ylim(2, 13)
plt.title('最小角回归法举例', fontproperties=font, fontsize=20)
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DPxpEwmi-1583411363420)(A-06%20%E6%9C%80%E5%B0%8F%E8%A7%92%E5%9B%9E%E5%BD%92%E6%B3%95_files/A-06%20%E6%9C%80%E5%B0%8F%E8%A7%92%E5%9B%9E%E5%BD%92%E6%B3%95_3_0.png)]

  上图假设 X X X 2 2 2维,首先可以看出,离 Y Y Y最接近的是 X 1 X_1 X1,首先在 X 1 X_1 X1上走一段距离,知道残差和 X 1 X_1 X1的相关度等于残差和 X 2 X_2 X2的相关度,即残差在 X 1 X_1 X1 X 2 X_2 X2的角平分线上,由于 X X X 2 2 2维,此时沿着角平分线走,直到残差足够小时停止,如果此时 X X X不是 2 2 2维,则继续选择第3个、第4个特征走下去。

最小角回归法优缺点

优点

  1. 特别适合特征维度高于样本数的情况

缺点

  1. 迭代方向是根据目标的残差定的,所以算法对训练集中的噪声特别敏感

小结

在这里插入图片描述

  前向选择法由于涉及到投影,只能给出一个近似解;前向梯度法则需要自己手动调试一个很好的 ϵ \epsilon ϵ参数;最小角回归法结合了两者的优点,但是至于算法具体好坏害的取决于训练集,即算法的稳定性无法保证。

  对算法具体计算有兴趣的同学,可以参考Bradley Efron的论文《Least Angle Regression》,https://pan.baidu.com/s/10if9FGdkwEZ4_BolzCGszA ,如果你下载看了,恭喜你入坑。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值