线性回归系数

时间:2021-06-02 13:13:27

标签: python machine-learning scikit-learn linear-regression statsmodels

我目前正在使用 statsmodels(虽然我也很乐意使用 Scikit)来创建线性回归。在这个特定模型上,我发现当向模型添加多个因子时,OLS 算法会吐出野生系数。这些系数既极高又极低,似乎通过求平均值来优化算法。它导致所有因素在统计上都不显着。我只是想知道是否有办法对系数设置上限或下限,以便 OLS 必须在这些新边界内进行优化?

1 个答案:

答案 0 :(得分:0)

不知道能不能给OLS设置一个条件,使得系数的绝对值都小于一个常数。

不过,正则化是解决此类问题的好方法。基本上,L1 或 L2 正则化会惩罚优化函数中系数的总和,这会将最不重要的变量的系数推向接近于零,因此它们不会提高成本函数的值。

看看 lassoridgeelastic net 回归。他们分别使用 L1、L2 和两种形式的正则化。

您可以在 statsmodels 中尝试以下操作:

# Import OLS
from statsmodels.regression.linear_model import OLS

# Initialize model
reg = OLS(endog=y, exog=X)

# Fit model
reg = reg.fit_regularized()