statsmodels.regression.linear_model.WLS.fit_regularized

WLS.fit_regularized(method='elastic_net', alpha=0.0, L1_wt=1.0, start_params=None, profile_scale=False, refit=False, **kwargs)[source]

返回一个正则化的线性回归模型的拟合结果。

Parameters:
methodstr

要么是‘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

使用公式接口构建模型时使用的包含信息的附加关键字参数。

Returns:
statsmodels.base.elastic_net.RegularizedResults

正则化后的结果。

注释

弹性网络结合了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 估计模型。

参考文献


Last update: Oct 16, 2024