我目前正在使用 statsmodels(虽然我也很乐意使用 Scikit)来创建线性回归。在这个特定模型上,我发现当向模型添加多个因子时,OLS 算法会吐出野生系数。这些系数既极高又极低,似乎通过求平均值来优化算法。它导致所有因素在统计上都不显着。我只是想知道是否有办法对系数设置上限或下限,以便 OLS 必须在这些新边界内进行优化?
答案 0 :(得分:0)
不知道能不能给OLS设置一个条件,使得系数的绝对值都小于一个常数。
不过,正则化是解决此类问题的好方法。基本上,L1 或 L2 正则化会惩罚优化函数中系数的总和,这会将最不重要的变量的系数推向接近于零,因此它们不会提高成本函数的值。
看看 lasso、ridge 和 elastic 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()