稳健回归(Robust Regression)方法主要用于处理传统最小二乘法(OLS)对异常值敏感的问题。下面是常见的几类稳健回归方法及其简介:
1. M估计(M-estimators)
核心思想:用其他损失函数替代平方误差,减小异常值影响。
常用的损失函数:
Huber 损失:在误差较小时等同于平方损失,误差较大时变为线性损失。
Tukey's Biweight:对大误差给予零权重。
Hampel 损失等。
实现:
statsmodels.robust.robust_linear_model.RLM
2. RANSAC(Random Sample Consensus)
核心思想:从数据中随机采样子集,多次拟合模型并选择使大多数数据点残差最小的模型。
特点:适合数据中有大量离群点(outliers)的情况。
实现:
sklearn.linear_model.RANSACRegressor
3. Theil–Sen 回归
核心思想:计算所有点对之间斜率的中位数作为回归斜率。
特点:对于单变量回归特别稳健,抗异常值能力强。
实现:
sklearn.linear_model.TheilSenRegressor
4. Quantile Regression(分位数回归)
核心思想:回归不是最小化平方误差,而是最小化分位损失函数(如中位数为0.5)。
特点:不仅稳健,还可以拟合条件分布的不同分位点。
实现:
statsmodels.regression.quantile_regression.QuantReg
5. Least Trimmed Squares (LTS)
核心思想:只考虑最小残差的前一部分数据点,忽略残差最大的点。
特点:对异常值非常不敏感。
实现:
sklearn
没有直接支持,但可在pyrobust
或 R 语言中找到实现。
6. LAD(Least Absolute Deviations)回归
核心思想:最小化绝对残差(L1损失)而非平方残差。
特点:对异常值更稳健,但在求解上不如OLS简洁。
实现:可使用
QuantileRegressor(quantile=0.5)
或statsmodels.QuantReg(..., q=0.5)
补充:Python库实现推荐
方法 | Python实现位置 |
---|---|
M估计 | statsmodels.robust.robust_linear_model.RLM |
RANSAC | sklearn.linear_model.RANSACRegressor |
Theil-Sen | sklearn.linear_model.TheilSenRegressor |
Quantile回归 | statsmodels.regression.quantile_regression.QuantReg |
LAD回归 | sklearn.linear_model.QuantileRegressor(quantile=0.5) |
系统当前共有 466 篇文章