当alpha = 0时,sklearn LassoLars解决方案并非最小二乘法

时间:2016-10-24 21:42:51

标签: scikit-learn

我试图理解代码中的数值不稳定性,当惩罚系数α= 0时,导致解决方案偏离最小二乘。在文档中提及但未在失败的地方提及该问题。我有一个例子,它不能仅在五个组件中的一个上给出最小二乘解。我无法在代码中找到不良行为的来源。有人有什么想法吗?

from sklearn import linear_model
import numpy as np

y= np.array([ -6.45006793,  -3.51251449,  -8.52445396,   6.12277822, -19.42109366])
x=np.array([[ 0.47299829,  0.        ,  0.        ,  0.        ,  0.        ],
   [ 0.08239882,  0.85784863,  0.        ,  0.        ,  0.        ],
   [ 0.30114139, -0.07501577,  0.80895216,  0.        ,  0.        ],
   [-0.01460346, -0.1015233 ,  0.0407278 ,  0.80338378,  0.        ],
   [-0.69363927,  0.06754067,  0.18064514, -0.0803561 ,  0.40427291]])
test=linear_model.LassoLars(0, fit_intercept=False)
test.fit(x.T, y)
test_compare=linear_model.LinearRegression(fit_intercept=False)
test_compare.fit(x.T, y)

test.coef_- test_compare.coef_

系数差异的输出(test.coef_- test_compare.coef_)是:

array([  4.26325641e-14,  -5.96744876e-15,  -3.57739709e+00,
     1.37667655e-14,   2.84217094e-14])

谢谢!我有点新手,对如何改进这个问题的有用评论表示赞赏。