【发布时间】:2016-11-28 11:56:23
【问题描述】:
在岭回归中,我们使用L2 正则化解决Ax=b。直接计算如下:
x = (ATA + alpha * I)-1ATb
我查看了 scikit-learn 代码,它们确实实现了相同的计算。但是,对于alpha > 0,我似乎无法得到相同的结果
重现这一点的最少代码。
import numpy as np
A = np.asmatrix(np.c_[np.ones((10,1)),np.random.rand(10,3)])
b = np.asmatrix(np.random.rand(10,1))
I = np.identity(A.shape[1])
alpha = 1
x = np.linalg.inv(A.T*A + alpha * I)*A.T*b
print(x.T)
>>> [[ 0.37371021 0.19558433 0.06065241 0.17030177]]
from sklearn.linear_model import Ridge
model = Ridge(alpha = alpha).fit(A[:,1:],b)
print(np.c_[model.intercept_, model.coef_])
>>> [[ 0.61241566 0.02727579 -0.06363385 0.05303027]]
有什么建议可以解决这个差异吗?
【问题讨论】:
标签: python scikit-learn linear-regression