最小角回归(LARS)
最小角回归(LARS)是对高维数据的回归算法, 由 Bradley Efron, Trevor Hastie, Iain Johnstone 和 Robert Tibshirani 开发完成。 LARS 和逐步回归很像。在每一步,它寻找与响应最有关联的 预测。当有很多预测有相同的关联时,它没有继续利用相同的预测,而是在这些预测中找出应该等角的方向。
示例应用
print(__doc__)
import numpy as np import matplotlib.pyplot as plt
from sklearn import linear_model from sklearn import datasets
diabetes = datasets.load_diabetes() X = diabetes.data y = diabetes.target
print("Computing regularization path using the LARS ...") alphas, _, coefs = linear_model.lars_path(X, y, method='lasso', verbose=True)
xx = np.sum(np.abs(coefs.T), axis=1) xx /= xx[-1]
plt.plot(xx, coefs.T) ymin, ymax = plt.ylim() plt.vlines(xx, ymin, ymax, linestyle='dashed') plt.xlabel('|coef| / max|coef|') plt.ylabel('Coefficients') plt.title('LASSO Path') plt.axis('tight') plt.show()
|
优点和缺点
优点:
当 p >> n,该算法数值运算上非常有效。(例如当维度的数目远超点的个数)
它在计算上和前向选择一样快,和普通最小二乘法有相同的运算复杂度。
它产生了一个完整的分段线性的解决路径,在交叉验证或者其他相似的微调模型的方法上非常有用。
如果两个变量对响应几乎有相等的联系,则它们的系数应该有相似的增长率。因此这个算法和我们直觉 上的判断一样,而且还更加稳定。
它很容易修改并为其他估算器生成解,比如Least Absolute Shrinkage and Selection Operator。
缺点:
因为 LARS 是建立在循环拟合剩余变量上的,所以它对噪声非常敏感。
原文:https://github.com/KeKe-Li/tutorial