正在加载中...

展开本页目录
算法教程RobustRegression-鲁棒回归

RobustRegression-鲁棒回归

No.056 · 在线教程

鲁棒回归(Robust Regression)用于在存在离群点、重尾噪声或异方差扰动时,获得比普通最小二乘(OLS)更稳定的参数估计。系统支持三类常用方法:

RobustRegression-鲁棒回归

1. 方法概述

鲁棒回归(Robust Regression)用于在存在离群点、重尾噪声或异方差扰动时,获得比普通最小二乘(OLS)更稳定的参数估计。系统支持三类常用方法:

  1. Huber 回归(连续可导的分段损失)
  2. RANSAC 回归(随机采样一致性,先识别内点)
  3. Theil-Sen 回归(基于中位数斜率的稳健估计)

设数据集为

$$ \mathcal{D}=\{(x_i,y_i)\}_{i=1}^{n},\quad x_i\in\mathbb{R}^{p},\ y_i\in\mathbb{R} \tag{1} $$

线性模型写为

$$ y_i=\beta_0+x_i^\top\beta+\varepsilon_i \tag{2} $$

其中 \(\beta_0\) 为截距,\(\beta\) 为系数向量。

2. OLS 基线与鲁棒性动机

OLS 的目标函数为

$$ \min_{\beta_0,\beta}\sum_{i=1}^{n}(y_i-\beta_0-x_i^\top\beta)^2 \tag{3} $$

其平方损失对大残差敏感,因此在离群点存在时,参数可能明显偏移。鲁棒回归通过替换损失函数或样本选择机制降低异常样本影响。

3. Huber 回归

3.1 Huber 损失

记残差 \(r_i=y_i-\beta_0-x_i^\top\beta\),Huber 损失定义为

$$ \rho_\delta(r)= \begin{cases} \frac{1}{2}r^2, & |r|\le \delta\\ \delta\left(|r|-\frac{1}{2}\delta\right), & |r|>\delta \end{cases} \tag{4} $$

对应优化问题:

$$ \min_{\beta_0,\beta}\sum_{i=1}^{n}\rho_\delta(r_i)+\alpha\|\beta\|_2^2 \tag{5} $$

其中 \(\delta\)(程序中对应 epsilon)控制二次区与线性区切换阈值。

3.2 影响函数视角

Huber 的一阶导数为

$$ \psi_\delta(r)= \begin{cases} r, & |r|\le \delta\\ \delta\,\mathrm{sign}(r), & |r|>\delta \end{cases} \tag{6} $$

即大残差被“截断”影响,稳健性优于 OLS。

4. RANSAC 回归

RANSAC 的核心流程:

  1. 随机抽取最小子样本拟合候选模型;
  2. 计算所有样本残差,按阈值判定内点;
  3. 以内点数最多(或代价最小)模型为最优;
  4. 用最优内点集重拟合得到最终模型。

内点判定条件:

$$ |r_i|\le \tau \tag{7} $$

其中 \(\tau\) 为残差阈值(residual_threshold)。内点比例为

$$ \pi_{in}=\frac{N_{in}}{n} \tag{8} $$

RANSAC 常用于“少量强离群点”场景。

5. Theil-Sen 回归

对一元情形,Theil-Sen 斜率估计可写为所有点对斜率的中位数:

$$ \hat\beta_1=\mathrm{median}_{i<j}\frac{y_j-y_i}{x_j-x_i} \tag{9} $$

截距可取

$$ \hat\beta_0=\mathrm{median}_i\left(y_i-\hat\beta_1 x_i\right) \tag{10} $$

多元情形由子样本回归系数聚合(中位数)扩展实现,具备较强抗异常能力。

6. 训练/测试划分与预测

设训练比例为 \(q\in(0,1)\):

$$ n_{train}=\lfloor nq\rfloor,\qquad n_{test}=n-n_{train} \tag{11} $$

预测值记为 \(\hat y_i\),残差为

$$ e_i=y_i-\hat y_i \tag{12} $$

7. 评价指标

7.1 RMSE

$$ \mathrm{RMSE}=\sqrt{\frac{1}{m}\sum_{i=1}^{m}(y_i-\hat y_i)^2} \tag{13} $$

7.2 MAE

$$ \mathrm{MAE}=\frac{1}{m}\sum_{i=1}^{m}|y_i-\hat y_i| \tag{14} $$

7.3 决定系数

$$ R^2=1-\frac{\sum_{i=1}^{m}(y_i-\hat y_i)^2}{\sum_{i=1}^{m}(y_i-\bar y)^2} \tag{15} $$

其中 \(m\) 为评估样本数(通常优先 test 集)。

8. AIC/BIC(高斯残差近似)

记残差平方和 \(RSS=\sum e_i^2\),参数个数为 \(k\),则

$$ \mathrm{AIC}=n\ln\left(\frac{RSS}{n}\right)+2k \tag{16} $$

$$ \mathrm{BIC}=n\ln\left(\frac{RSS}{n}\right)+k\ln n \tag{17} $$

9. 残差诊断检验

9.1 Ljung-Box 自相关检验

设 \(\hat\rho_k\) 为残差序列在滞后 \(k\) 的样本自相关,

$$ Q=n(n+2)\sum_{k=1}^{h}\frac{\hat\rho_k^2}{n-k} \tag{18} $$

在原假设“无自相关”下,\(Q\) 近似服从 \(\chi^2_h\)。

9.2 Jarque-Bera 正态性检验

记偏度 \(S\)、峰度 \(K\),则

$$ JB=\frac{n}{6}\left(S^2+\frac{(K-3)^2}{4}\right) \tag{19} $$

原假设“残差服从正态分布”。

10. 预处理与特征工程(与程序一致)

系统在回归前支持:缺失处理、One-Hot、标准化/归一化、可选特征选择与降维。常见标准化形式:

$$ z_{ij}=\frac{x_{ij}-\mu_j}{\sigma_j} \tag{20} $$

11. 符号说明

符号 含义
\(n\) 总样本量
\(p\) 特征维度
\(x_i,y_i\) 第 \(i\) 个样本的特征与目标
\(\beta_0,\beta\) 截距与回归系数
\(r_i,e_i\) 残差
\(\delta\) Huber 损失阈值
\(\tau\) RANSAC 内点阈值
\(N_{in}\) 内点样本数
\(k\) 参数个数
\(h\) Ljung-Box 检验滞后阶

12. 输出结果与论文写作建议

系统输出图表通常包括:

  1. 预测值 vs 真实值散点图(fit_vs_true
  2. 残差直方图(resid_hist
  3. 残差 QQ 图(resid_qq
  4. 残差 ACF 图(resid_acf

建议论文结构:

  1. 模型与参数设置(Huber/RANSAC/Theil-Sen)
  2. 主指标结果(RMSE/MAE/R²)
  3. 诊断结果(Ljung-Box、Jarque-Bera)
  4. 图形诊断与稳健性解释

13. 与当前程序导出 Sheet 一一对应说明

Excel Sheet 名称 含义 关键字段
Parameters 运行参数与配置 参数、取值
Estimation 核心结果汇总 n_obs、rmse、mae、r2、aic、bic、jb_p、lb_p
Coefficients 系数表 变量、系数(可含 CI)
Diagnostics 检验结果 ljung_box、jarque_bera
Forecast 预测与残差明细 set、y、y_hat、resid、inlier
Charts 图表路径清单 图表、路径

14. 与代码实现的对应关系

本算法在程序中由 具体的算法2/RobustRegression-鲁棒回归/core/calculator.py 实现,支持 HuberRegressorRANSACRegressorTheilSenRegressor 三条路径,并可导出系数表、诊断结果、预测明细和图表索引。论文写作时建议明确写出所用鲁棒回归类型,而不是笼统写“使用鲁棒回归”。

14.1 程序实际导出的工作表

  • Parameters:方法类型与超参数;
  • Estimation:样本量、RMSE、MAE、\(R^2\)、AIC、BIC、诊断结果;
  • Coefficients:变量系数,可含区间或 bootstrap 结果;
  • Diagnostics:Ljung-Box、Jarque-Bera 等;
  • Forecast:训练/测试预测、残差、内点标记等;
  • Charts:图表路径清单。

14.2 程序实现中应写明的点

  • HuberRANSACTheil-Sen 三种方法的鲁棒机制不同,正文应与运行配置一致;
  • RANSAC 结果里的 inlier 标记可直接用于解释哪些样本被视为稳定内点;
  • 系数表在标准化开启时属于标准化特征空间,应避免直接当作原始量纲效应解释;
  • 图表索引已给出相对路径,适合论文附录中统一列示。

15. 论文模板段落(可直接使用)

“本文采用鲁棒回归估计变量间关系,在存在异常样本的条件下提高参数估计稳定性。对于 Huber 回归,采用分段损失函数(式(4))并最小化加权目标(式(5));对于 RANSAC,通过内点阈值判定(式(7))识别稳定样本并重拟合;对于 Theil-Sen,使用中位数斜率思想获得稳健估计(式(9)–(10))。模型评估使用 RMSE、MAE 与 \(R^2\)(式(13)–(15)),并结合 AIC/BIC(式(16)–(17))与残差检验(式(18)–(19))进行诊断。结果表明,鲁棒回归在离群点存在时较 OLS 具有更好的稳健性与解释一致性。”

16. 注意事项

  1. 若离群点比例较低但影响强,优先尝试 RANSAC。
  2. 若希望连续可导且训练稳定,优先 Huber。
  3. Theil-Sen 在高维大样本下计算成本较高,应结合运行时间评估。
  4. 请优先结合残差图与检验结果解释,而非仅报告单一误差指标。

17. 单篇终审补充

17.1 图题与表题对齐建议

基于当前真实结果目录 具体的算法2/RobustRegression-鲁棒回归/results/鲁棒回归分析结果_20260329_165409,论文中建议采用以下图题:

图 1 鲁棒回归预测值与真实值拟合散点图
对应文件:fit_vs_true_20260329_165409.png。该图用于观察模型预测值与真实观测值的贴合程度,可与 RMSE、MAE、\(R^2\) 一并解释。

图 2 鲁棒回归残差分布直方图
对应文件:resid_hist_20260329_165409.png。该图用于检查残差集中程度和异常残差分布。

图 3 鲁棒回归残差 QQ 图
对应文件:resid_qq_20260329_165409.png。该图用于判断残差与正态分布假设的偏离程度。

图 4 鲁棒回归残差自相关函数图
对应文件:resid_acf_20260329_165409.png。该图用于检查残差序列是否存在明显自相关。

建议表题与当前 xlsx 工作表保持一致:

表 1 鲁棒回归运行参数表:对应 Parameters
表 2 鲁棒回归估计结果汇总表:对应 Estimation
表 3 鲁棒回归系数估计表:对应 Coefficients
表 4 鲁棒回归残差诊断表:对应 Diagnostics
表 5 鲁棒回归预测与残差明细表:对应 Forecast
表 6 鲁棒回归图表索引表:对应 Charts

17.2 终审说明

本篇已按真实程序结果完成终审补齐。当前核验的结果文件为 具体的算法2/RobustRegression-鲁棒回归/results/鲁棒回归分析结果_20260329_165409/鲁棒回归分析结果_20260329_165409.xlsx,实际工作表为 ParametersEstimationCoefficientsDiagnosticsForecastCharts,与正文第 13 节和第 14 节的 sheet 对应关系一致。

需要注意的是,该算法的新近复现脚本位于结果根目录而不是上述子结果目录内:具体的算法2/RobustRegression-鲁棒回归/results/repro_robust_regression_template_20260329_165407.py。脚本中的输入路径为 SRC_FILE = 'repro_inputs/sample_data.csv',并由 _resolve_path 优先按算法模块根目录解析,再按脚本所在目录解析;因此论文附录中应写成“复现脚本使用 results/repro_inputs/sample_data.csv 作为相对输入路径”,不要误写为子结果目录下的 repro_inputs

本篇可作为论文方法说明和结果解释的终稿版本使用:公式编号已覆盖 Huber、RANSAC、Theil-Sen、误差指标和残差诊断;表题已与真实 xlsx sheet 对齐;图题已与真实导出的四类诊断图对齐。若用户实际选择 RANSACTheil-Sen,论文正文只需在模型设置处替换算法名称和关键超参数,图表说明结构无需改变。

17.3 全量强化补充

  • 当前 RobustRegression 文档应绑定真实算法目录 具体的算法2/RobustRegression-鲁棒回归,代表性主结果目录为 具体的算法2/RobustRegression-鲁棒回归/results/鲁棒回归分析结果_20260329_165409
  • 该主目录首层工作簿为 鲁棒回归分析结果_20260329_165409.xlsx,真实工作表为 ParametersEstimationCoefficientsDiagnosticsForecastCharts
  • 当前与该轮主结果对应的实体图并不在子结果目录内,而是平铺在 results 根目录,真实文件为 fit_vs_true_20260329_165407.pngresid_hist_20260329_165407.pngresid_qq_20260329_165407.pngresid_acf_20260329_165407.png。旧文引用 165409 后缀图片需要修正为当前实盘存在的 165407 图组。
  • results 根目录同时存在 repro_inputs/repro_robust_regression_template_20260329_165407.py 以及多组不同时间戳图。这说明 RobustRegression 的结构与 GAM 类似,是“时间戳主结果目录 + results 根目录平铺图和 repro 入口”的分层模式。
  • 复现脚本 repro_robust_regression_template_20260329_165407.py 的关键输入写法为 SRC_FILE = 'repro_inputs/sample_data.csv',并通过解析逻辑优先按模块根目录、再按脚本目录定位。因此附录应写成“使用 results/repro_inputs/sample_data.csv 的相对路径快照复现”,不要误写成主结果子目录自带 repro_inputs
  • 论文与附录若要追溯一轮完整证据,应把 鲁棒回归分析结果_20260329_165409/鲁棒回归分析结果_20260329_165409.xlsxresults 根目录下的 165407 图组、repro_robust_regression_template_20260329_165407.pyrepro_inputs/sample_data.csv 视为同轮相邻产物。

18. 软件实现核查补充(2026-07)

  • 当前实现的主结果目录应写作 具体的算法2/RobustRegression-鲁棒回归/results/鲁棒回归分析结果_20260329_165409,主工作簿为 鲁棒回归分析结果_20260329_165409.xlsx
  • 正文应围绕 ParametersEstimationCoefficientsDiagnosticsForecastCharts 来写,图则对应 fit_vs_true_20260329_165407.pngresid_hist_20260329_165407.pngresid_qq_20260329_165407.pngresid_acf_20260329_165407.png
  • repro_robust_regression_template_20260329_165407.py + repro_inputs/sample_data.csv 属于 results 根目录平铺复现口径,正文和附录应与主结果目录分开写。
  • 旧的 165409 图号应按磁盘事实修正为 165407 图组。