statsmodels.regression.linear_model.GLS.fit_regularized¶
-
GLS.fit_regularized(method=
'elastic_net', alpha=0.0, L1_wt=1.0, start_params=None, profile_scale=False, refit=False, **kwargs)[source]¶ 返回一个正则化的线性回归模型的拟合结果。
- Parameters:¶
- method
str 要么是‘elastic_net’,要么是‘sqrt_lasso’。
- alphascalar or array_like
惩罚权重。如果是一个标量,相同的惩罚权重适用于模型中的所有变量。如果是一个向量,它必须与params具有相同的长度,并且包含每个系数的惩罚权重。
- L1_wtscalar
L1惩罚项所占的惩罚比例。 必须介于0和1之间(包括0和1)。如果为0,则拟合是岭回归拟合,如果为1,则是Lasso拟合。
- start_paramsarray_like
开始值为
params。- profile_scalebool
如果为真,则使用高斯模型的轮廓(集中)对数似然来计算惩罚拟合。否则,拟合使用残差平方和。
- refitbool
如果为真,模型将仅使用在正则化拟合中具有非零系数的变量进行重新拟合。重新拟合的模型不再进行正则化。
- **kwargs
使用公式接口构建模型时使用的包含信息的附加关键字参数。
- method
- Returns:¶
注释
弹性网络结合了L1和L2惩罚。 该实现与R中的glmnet包非常相似。
最小化的函数是:
\[0.5*RSS/n + alpha*((1-L1\_wt)*|params|_2^2/2 + L1\_wt*|params|_1)\]其中 RSS 是通常的回归平方和,n 是样本大小,\(|*|_1\) 和 \(|*|_2\) 分别是 L1 和 L2 范数。
对于WLS和GLS,RSS是使用白化的endog和exog数据计算的。
估计后的结果基于用于选择变量的相同数据,因此可能存在过拟合偏差。
elastic_net 方法使用以下关键字参数:
- maxiterint
最大迭代次数
- cnvrg_tolfloat
线搜索的收敛阈值
- zero_tolfloat
低于此阈值的系数被视为零。
平方根Lasso方法是一种Lasso的变体,它很大程度上是自调优的(最优调优参数不依赖于回归误差的标准差)。如果误差是高斯分布的,调优参数可以取为
alpha = 1.1 * np.sqrt(n) * norm.ppf(1 - 0.05 / (2 * p))
其中 n 是样本大小,p 是预测变量的数量。
平方根套索使用以下关键字参数:
- zero_tolfloat
低于此阈值的系数被视为零。
需要 cvxopt 模块来使用平方根 lasso 估计模型。
参考文献