python - 具有非正则化截距项的 Scikit-learn Ridge 回归

标签 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的情况下是否包含截距系数;如果是这样,如何禁用它。

最佳答案

拦截不会受到惩罚。只需尝试一个具有大截距的简单 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),而斜率被惩罚(0.952 而不是 1)。

关于python - 具有非正则化截距项的 Scikit-learn Ridge 回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126224/

相关文章:

python - 使用多维特征(输入维度误差)使用 scikit-learn KNN 进行分类

在 R 中复制 Stata 边距

r - 随机森林错误 : "Need at least two classes to do classification"

python - 值错误 : unknown is not supported in sklearn. RFECV

r - mgcv gam() 错误 : model has more coefficients than data

python - 防止使用相同的凭据进行多次登录

python - 在析构函数中创建检查类型映射

python - 最小化具有共同值的行,添加附加值的列

python - 在python中创建一个二维矩阵

python - 如何将多维列变成单值向量以用于sklearn pandas中的训练数据