Scikit-learn Ridge Regression with unregularized intercept term

时间:2014-09-30 16:59:54

标签: python scikit-learn regression

scikit-learn Ridge回归是否包括正则化项中的截距系数,如果是这样,是否有办法在没有规则化截距的情况下运行岭回归?

假设我符合岭回归:

from sklearn import linear_model

mymodel = linear_model.Ridge(alpha=0.1, fit_intercept=True).fit(X, y)
print mymodel.coef_
print mymodel.intercept_

对于某些数据X,y,其中X不包括1列。 fit_intercept = True将自动添加一个拦截列,相应的系数由mymodel.intercept_给出。我无法弄清楚的是这个截距系数是否是优化目标中正则化求和的一部分。

根据 http://scikit-learn.org/stable/modules/linear_model.html, 优化目标是最小化w:

  

|| X * w - y || ** 2 + alpha * || w || ** 2

(使用L2规范)。第二项是正则化项,问题是它是否包括在我们设置fit_intercept = True的情况下的截距系数;若然,如何禁用此功能。

1 个答案:

答案 0 :(得分:7)

拦截不会受到惩罚。试试一个带有大截距的简单3点示例。

from sklearn import linear_model
import numpy as np

x=np.array([-1,0,1]).reshape((3,1))
y=np.array([1001,1002,1003])
fit=linear_model.Ridge(alpha=0.1,fit_intercept=True).fit(x,y)

print fit.intercept_
print fit.coef_

拦截被设置为MLE拦截(1002),而斜率受到惩罚(.952而不是1)。