什么是前向逐步回归算法?


14

也许只是我很累,但是在尝试理解前向逐步回归算法时遇到了麻烦。从“统计学习要素”第60页:

前向逐步回归(FS)比前向逐步回归受到的约束更大。它像逐步回归一样开始,其截距等于y的均值,并且中心预测变量的系数最初均为0。

在每一步中,算法都会识别与当前残差最相关的变量。然后,它计算该所选变量的残差的简单线性回归系数,然后将其添加到该变量的当前系数中。一直持续到所有变量都与残差不相关为止(即,当N> p时,最小二乘拟合)。

那么,这是算法吗?:

b[1]=mean(y)
b[2..n]=0
r=(y-X*b)
index, maxCorr = max(transpose(r)*X)
while(abs(maxCorr) > someThreshold)
  b[index]=b[index]+regress(r,X[1..n][index])
  r=(y-X*b)
  index, maxCorr = max(transpose(r)*X)

其中b是系数的列向量,X是输入矩阵,而y是输出的列向量。即y = X * b +错误。

询问是因为此算法仅在我正在测试的数据集中给我一些非零系数(阈值= .0001),并且预测精度根本不是很好。

Answers:


5

他们的作者在解释书中的算法方面做得很差。如果您在他们的论文中查看方程式1.6和1.7 ,它将变得更加清晰。本文的表述略有不同(它建立残差而不是系数向量),但是关键是它以非常小的步长就可以达到最小二乘拟合(这就是为什么书中提到算法可以采用“更多比p步”完成)。您可以用少量替换“ regress(...)”,也可以将其乘以0.05。试一试,看看有什么用。

另外,您的门槛似乎很小。r'* X将给出与实际相关性成比例但远大于实际相关性的数字(例如,对于本文中的糖尿病数据,相关性约为70-900)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.