目录


 

最小角回归法

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

通常用最小角回归法解决线性模型的回归系数。对于一个有mm个样本,每个样本有nn个特征的训练集而言,假设可以拟合一个线性模型Y=ωTXY=ωTX,其中YY是m∗1m∗1的向量,XX是m∗nm∗n的矩阵,ωω是n∗1n∗1的向量。即可通过最小角回归法求得最小化该模型的参数ωω。

首先把矩阵XX看成nn个m∗1m∗1的向量Xi(i=1,2,⋯,n)Xi(i=1,2,⋯,n),之后选择与向量YY余弦相似度最大,即与YY最为接近的一个变量XiXi,使用类似于前向选择法中的残差计算方法得到新的目标YerrYerr,此时不同于前向梯度法的一小步一小步走,而是走到出现一个Xj(j=1,2,i−1,i+1,⋯,n)Xj(j=1,2,i−1,i+1,⋯,n)的时候,此时XiXi和YerrYerr的余弦相似度等于XjXj和YerrYerr的余弦相似度,这个时候残差YerrYerr沿着XiXi和XjXj的角平分线方向走,知道出现第三个特征XkXk和YerrYerr的相关度等于XiXi和YerrYerr的余弦相似度等于XjXj和YerrYerr的余弦相似度的时候,使用这三者的共同角平分线,作为残差YerrYerr的路径方向,直到所有变量取完了,停止算法,即可得到ωω。

一、举例
# 举例图例
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()​

A-06 最小角回归法_迭代

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

二、最小角回归法优缺点

2.1 优点

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

2.2 缺点

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

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