所以我试图拟合一个具有多项式特征的Lasso回归模型。
为了创建这些多项式特征,我使用from sklearn.preprocessing import PolynomialFeatures
它有一个参数inclue_bias,可以设置为True或False作为PolynomialFeatures(degree=5, include_bias=False)
。这个偏差只不过是表示最终方程中截距的1列。正如在另一个答案中详细解释的那样。
当我设置include_bias=True
然后在没有截距的情况下拟合Lasso回归时,问题就出现了,因为它已经被处理过了,或者我选择不包括偏差并从sklearn.linear_model import Lasso
中设置fit_intercept=True
。他们在技术上应该给出截距系数的结果,对吗?但事实证明,它们并不是一样的。
scikit learn内部是否存在一些错误,或者我在这里缺少了什么?如果有人想用一些数据自己尝试一下,请告诉我。我来分享一些。
当PolynomialFeatures.include_bias=True
而不是Lasso.fit_intercept=False
时,套索模型认为all-ones列只是另一个特性,因此"截距项";受到L1处罚。当PolynomialFeatures.include_bias=False
和Lasso.fit_intercept=True
时,套索模型知道不惩罚其拟合的截距。