scikit-learn Ridge回归是否在正则化项中包括了截距系数,如果是,是否有一种方法可以在不对截距进行正则化的情况下进行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最小化:
(使用L2规范)。第二项是正则化项,问题是在我们设置fit_intercept = True的情况下是否包括拦截系数;如果是这样,如何禁用此功能。
最佳答案
拦截不会受到处罚。只需尝试一个带有较大截距的简单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)。
关于python - 具有不规则截距项的Scikit学习岭回归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26126224/