传统的 最小绝对偏差 (LAD) 回归的求解方法主要基于优化理论,因为 LAD 回归的目标函数涉及绝对值运算,导致不可导,需要特殊的方法来处理。以下是传统 LAD 求解参数的几种方法:
1. 线性规划法
LAD 回归问题可以转化为一个线性规划问题求解。
LAD 的目标函数:
min β ∑ i = 1 n ∣ y i − x i ⊤ β ∣ \min_{\beta} \sum_{i=1}^n |y_i - \mathbf{x}_i^\top \beta| βmini=1∑n∣yi−xi⊤β∣
转化为线性规划形式:
我们通过引入额外的变量
u
i
u_i
ui 和
v
i
v_i
vi(分别代表正偏差和负偏差)来消除绝对值符号:
min
β
,
u
,
v
∑
i
=
1
n
(
u
i
+
v
i
)
\min_{\beta, u, v} \sum_{i=1}^n (u_i + v_i)
β,u,vmini=1∑n(ui+vi)
subject to:
y
i
−
x
i
⊤
β
=
u
i
−
v
i
,
u
i
≥
0
,
v
i
≥
0
\text{subject to: } y_i - \mathbf{x}_i^\top \beta = u_i - v_i, \quad u_i \geq 0, \, v_i \geq 0
subject to: yi−xi⊤β=ui−vi,ui≥0,vi≥0
在此公式中:
- u i u_i ui 和 v i v_i vi 表示偏差的正负部分。
- 约束条件确保 u i − v i = y i − x i ⊤ β u_i - v_i = y_i - \mathbf{x}_i^\top \beta ui−vi=yi−xi⊤β,从而代替绝对值。
优化求解:
- 这是一个标准的线性规划问题,目标函数和约束都是线性的。
- 可以用经典的线性规划求解算法(如单纯形法或内点法)来高效地求解。
2. 迭代加权最小二乘法 (Iteratively Reweighted Least Squares, IRLS)
IRLS 是一种迭代求解 LAD 的方法,将绝对偏差问题逐步近似为加权最小二乘问题。
方法原理:
LAD 的目标函数:
min
β
∑
i
=
1
n
∣
y
i
−
x
i
⊤
β
∣
\min_{\beta} \sum_{i=1}^n |y_i - \mathbf{x}_i^\top \beta|
βmini=1∑n∣yi−xi⊤β∣
可以通过引入权重
w
i
w_i
wi 表示误差的反比例权重,迭代地近似为加权最小二乘:
min
β
∑
i
=
1
n
w
i
(
y
i
−
x
i
⊤
β
)
2
\min_{\beta} \sum_{i=1}^n w_i \left( y_i - \mathbf{x}_i^\top \beta \right)^2
βmini=1∑nwi(yi−xi⊤β)2
其中权重
w
i
w_i
wi 在每次迭代中更新为:
w
i
=
1
∣
y
i
−
x
i
⊤
β
∣
+
ϵ
w_i = \frac{1}{|y_i - \mathbf{x}_i^\top \beta| + \epsilon}
wi=∣yi−xi⊤β∣+ϵ1
- ϵ > 0 \epsilon > 0 ϵ>0 是一个小正数,用于避免分母为零。
迭代步骤:
- 初始化 β \beta β 的初始值(如最小二乘解)。
- 计算当前的残差 r i = y i − x i ⊤ β r_i = y_i - \mathbf{x}_i^\top \beta ri=yi−xi⊤β。
- 更新权重 w i = 1 ∣ r i ∣ + ϵ w_i = \frac{1}{|r_i| + \epsilon} wi=∣ri∣+ϵ1。
- 用加权最小二乘法重新计算新的
β
\beta
β:
β = ( X ⊤ W X ) − 1 X ⊤ W y \beta = \left( \mathbf{X}^\top \mathbf{W} \mathbf{X} \right)^{-1} \mathbf{X}^\top \mathbf{W} \mathbf{y} β=(X⊤WX)−1X⊤Wy
其中 W \mathbf{W} W 是对角权重矩阵。 - 重复步骤 2-4,直到收敛。
IRLS 是一种近似求解 LAD 的方法,通过迭代优化权重逐步逼近 LAD 解。
基本思想:
- L 1 L_1 L1 损失函数(绝对偏差)可以通过分段的加权 L 2 L_2 L2 损失函数近似。
- 在每次迭代中,根据残差大小调整权重,更高的残差权重较低,从而逼近 LAD 的结果。
算法步骤:
- 初始化:选择初始参数 β ( 0 ) \beta^{(0)} β(0) 和权重 w i ( 0 ) = 1 w_i^{(0)} = 1 wi(0)=1。
- 计算残差: r i ( k ) = y i − x i ⊤ β ( k ) r_i^{(k)} = y_i - \mathbf{x}_i^\top \beta^{(k)} ri(k)=yi−xi⊤β(k)。
- 更新权重:设 w i ( k ) = 1 ∣ r i ( k ) ∣ + ϵ w_i^{(k)} = \frac{1}{|r_i^{(k)}| + \epsilon} wi(k)=∣ri(k)∣+ϵ1,其中 ϵ \epsilon ϵ 是一个小的正数,防止分母为零。
- 更新参数:用加权最小二乘法更新
β
(
k
+
1
)
\beta^{(k+1)}
β(k+1):
β ( k + 1 ) = argmin β ∑ i = 1 n w i ( k ) ( y i − x i ⊤ β ) 2 \beta^{(k+1)} = \underset{\beta}{\text{argmin}} \sum_{i=1}^n w_i^{(k)} \left( y_i - \mathbf{x}_i^\top \beta \right)^2 β(k+1)=βargmini=1∑nwi(k)(yi−xi⊤β)2
这可以用普通最小二乘方法求解。 - 重复步骤 2-4,直到收敛。
优势:
- 易于实现,适用于中小规模问题。
- 在某些情况下收敛速度较快。
劣势:
- 对于特定数据分布(如极端异常值),可能需要较多迭代。
- 收敛性依赖于初始点的选择。
3. 子梯度法 (Subgradient Method)
由于 LAD 的目标函数 ∑ ∣ y i − x i ⊤ β ∣ \sum |y_i - \mathbf{x}_i^\top \beta| ∑∣yi−xi⊤β∣ 在某些点不可导,可以使用子梯度法来求解。
子梯度定义:
对于不可导的函数,子梯度是对目标函数的一种广义的导数概念。
对于 LAD 的目标函数
∣
r
i
∣
|r_i|
∣ri∣,其子梯度为:
∂
∣
r
i
∣
=
{
1
,
如果
r
i
>
0
−
1
,
如果
r
i
<
0
[
−
1
,
1
]
,
如果
r
i
=
0
\partial |r_i| = \begin{cases} 1, & \text{如果 } r_i > 0 \\ -1, & \text{如果 } r_i < 0 \\ [-1, 1], & \text{如果 } r_i = 0 \end{cases}
∂∣ri∣=⎩
⎨
⎧1,−1,[−1,1],如果 ri>0如果 ri<0如果 ri=0
子梯度法步骤:
- 初始化参数 β \beta β。
- 计算当前残差 r i = y i − x i ⊤ β r_i = y_i - \mathbf{x}_i^\top \beta ri=yi−xi⊤β。
- 计算子梯度 g = − X ⊤ s g = -\mathbf{X}^\top s g=−X⊤s,其中 s s s 是 ∂ ∣ r i ∣ \partial |r_i| ∂∣ri∣ 的子梯度。
- 按照步长规则更新
β
\beta
β:
β = β − η g \beta = \beta - \eta g β=β−ηg
其中 η \eta η 是学习率(步长)。 - 重复步骤 2-4,直到收敛。
子梯度法在收敛速度上通常较慢,但适合于大规模问题。
4. 排序法(在特殊情况下)
当数据特征矩阵只有一个维度(即单变量回归问题)时,LAD 回归的解可以直接用排序来求解。
原理:
在单变量情况下,LAD 回归等价于找到中位数:
β
^
=
argmin
β
∑
i
=
1
n
∣
y
i
−
x
i
β
∣
\hat{\beta} = \text{argmin}_{\beta} \sum_{i=1}^n |y_i - x_i \beta|
β^=argminβi=1∑n∣yi−xiβ∣
对于单变量
x
i
x_i
xi,可以直接通过排序找到使残差的中位数最小的解。
总结
- 线性规划法:将 LAD 转化为线性规划问题,经典且有效。
- IRLS:迭代地将 LAD 转化为加权最小二乘问题,适合中小规模数据。
- 子梯度法:适合于大规模问题或目标函数不可导的优化。
- 排序法:仅适用于单变量回归场景。
实际选择哪种方法,取决于问题的规模、数据特点以及计算资源的限制。