语言: 中文
最后更新: 2026-07-12
页面定位: 模型文档
切换: English
语言切换: English
Ridge 在普通最小二乘基础上加入 L2 正则化,用于缓解多重共线性、稳定系数估计,并保留与 LinearRegression 对齐的推断接口,包括 nonrobust、hc0、hc1、hc2、hc3 和 hac 协方差选项。
statgpu.linear_model.Ridge
对于无权重样本,statgpu 使用平均损失目标:
当传入 sample_weight=w 时,数据拟合项按照总权重归一化:
截距项不受 L2 惩罚。因而将所有样本权重同时乘以任意正数,不会改变拟合结果。
使用普通均值或加权均值对数据中心化后,一阶条件为:
其中,无权重时
Ridge 默认使用 solver="exact"。exact 与 FISTA 路径、PenalizedLinearRegression(loss="squared_error", penalty="l2") 以及 RidgeCV 均使用同一个平均损失尺度。
scikit-learn 使用未归一化的残差平方和。比较系数时应使用:
- 无权重:
sklearn_alpha = n_samples * statgpu_alpha; - 加权:
sklearn_alpha = sample_weight.sum() * statgpu_alpha。
直接使用相同数值的 alpha,实际比较的是两个不同目标函数。
cov_type="nonrobust":经典 ridge 协方差。cov_type="hc0"|"hc1"|"hc2"|"hc3":sandwich 风格稳健协方差。cov_type="hac":Newey-West Bartlett kernel 协方差,hac_maxlags控制最大滞后阶。compute_inference=True时返回_bse、_tvalues、_pvalues、_conf_int。- 加权推断使用加权设计矩阵
[sqrt(w), sqrt(w) * X],因此截距列、残差、bread 和 meat 与估计阶段采用相同权重约定。
| Parameter | Default | Description |
|---|---|---|
alpha |
1.0 |
平均损失尺度下的 L2 正则化强度 |
fit_intercept |
True |
是否拟合截距 |
device |
"auto" |
cpu / cuda / torch / auto |
n_jobs |
None |
并行任务数 |
compute_inference |
True |
是否计算标准误、t 值、p 值和置信区间 |
cov_type |
"nonrobust" |
nonrobust / hc0 / hc1 / hc2 / hc3 / hac |
hac_maxlags |
None |
cov_type="hac" 时的最大滞后阶 |
gpu_memory_cleanup |
False |
fit 后尽可能释放 GPU 内存 |
solver |
"exact" |
默认使用 L2 闭式解;fista 使用相同目标函数 |
from statgpu.linear_model import Ridge
# CPU
m_cpu = Ridge(alpha=1.0, device="cpu", cov_type="hc3", compute_inference=True)
m_cpu.fit(X, y, sample_weight=w)
# CuPy CUDA
m_gpu = Ridge(
alpha=1.0,
device="cuda",
cov_type="hc3",
compute_inference=True,
gpu_memory_cleanup=True,
)
m_gpu.fit(X, y, sample_weight=w)当前没有单独公开的 approximate 模式。CPU 测试覆盖 exact/FISTA、加权/无权重、formula、推断和 RidgeCV 契约;真实 CuPy/Torch CUDA 数值与性能验证仍属于远程验证门禁。
- 系数:
intercept_、coef_ - 推断:
_bse、_tvalues、_pvalues、_conf_int - 诊断:
rsquared、rsquared_adj、fvalue、aic、bic - 方法:
fit、predict、score、summary
alpha如何选择?建议使用RidgeCV,或在 statgpu 的平均损失尺度下使用任务相关的对数网格。- 为什么相同
alpha与 sklearn 不一致?两者残差项的归一化方式不同,应使用上面的显式映射。 - 将所有样本权重同时缩放会改变模型吗?不会,因为加权损失除以
sum(sample_weight)。 - 什么时候设置
hac_maxlags?当cov_type="hac"且存在时间相关时建议显式设置,否则使用默认规则。
- 内部一致性通过平均损失闭式解以及通用 penalized-linear estimator 进行验证。
- 与 sklearn 比较时使用无权重或加权情况下的显式 alpha 映射。
- 加权 exact/FISTA、formula 缺失行权重对齐、推断和 RidgeCV 权重整体缩放不变性由
dev/tests/test_ridge_weighted_consistency.py覆盖。
- Hoerl, A. E., & Kennard, R. W. (1970). Ridge regression: Biased estimation for nonorthogonal problems. Technometrics, 12(1), 55-67. https://doi.org/10.1080/00401706.1970.10488634
- Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning (2nd ed.). Springer.