sklearn.linear_model.LinearRevision如何在多重共线数据集中找到解决方案



我尝试使用extended_boston数据集训练LinearRegression模型:

from mglearn.datasets import load_extended_boston
X, y = load_extended_boston()
from sklearn.linear_model import LinearRegression
linearReg = LinearRegression()
linearReg.fit(X, y)

对于X中的每个特征,LinearRegression给出相应的系数。

但是,X^TX不是可逆的。因此,当我在R中拟合这个线性模型时,程序会自动删除一个特征来找到解决方案。

sklearn.linear_model.LinearRevision是否使用了一些不同的算法?

您可以尝试Ridge regression,它是LinearRegression加L2正则化。L2正则化意味着它不仅最小化到目标的平方距离,而且试图保持系数较小。这使得它在共线数据集的情况下更加稳定。

来自文档:

Ridge回归解决了普通最小二乘的一些问题通过对系数的大小施加惩罚来进行平方。这个岭系数最小化惩罚残差平方和:

复杂性参数控制收缩量:的值越大,收缩量就越大,因此系数对共线变得更加鲁棒。

请参阅https://scikit-learn.org/stable/modules/linear_model.html#ridge-回归和https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html

我不得不反对

Antoine Dubuis:LinearRegression使用最小二乘法,因此需要具有可逆的X.T@X.

也许不是这样的,但从技术上讲,必须有一个可逆的协方差矩阵才能进行linear regression/least squares,这是不正确的。例如,您可以使用QR分解。我猜他的意思是这对于scikit-learn中的实现是必要的。但我认为做一些正则化是明智的。这样想:如果你的问题是你的问题有很多解决方案(这就是共线的意思(,你想如何解决它?你是想选择任何解决方案,还是想制定一个标准,说明哪种解决方案是最好的,例如最常规的?

最新更新