局部加权散点平滑(Locally Weighted Scatterplot Smoothing, LOWESS)算法的原理与稳健非参数回归过程
题目描述
局部加权散点平滑是一种非参数回归方法,用于拟合数据点间的关系而不预先假设全局函数形式。其核心思想是:在预测任意一点的响应值时,仅使用该点邻域内的数据,并赋予邻域内各点不同的权重(距离近的权重大,距离远的权重小),然后通过加权最小二乘进行局部多项式拟合。LOWESS 特别适用于数据模式复杂、存在异方差性或离群点的场景,并能产生平滑的拟合曲线。本题要求详细讲解 LOWESS 的原理、权重函数设计、局部拟合步骤以及其稳健性处理机制。
解题过程讲解
1. 算法核心思想与基本设定
假设我们有观测数据集 \(\{ (x_i, y_i) \}_{i=1}^n\),目标是估计任意点 \(x\) 处的条件均值 \(m(x) = E[y \mid x]\)。LOWESS 不假定 \(m(x)\) 的全局形式(如线性、多项式),而是对每个目标点 \(x\) 独立进行局部拟合。对于给定的目标点 \(x_0\),其拟合值 \(\hat{y}_0\) 通过以下步骤得到:
-
确定邻域:根据带宽参数 \(h\)(或最近邻比例 \(\alpha\))选择 \(x_0\) 邻域内的数据点。通常使用 最近邻带宽:设 \(d_k(x_0)\) 为 \(x_0\) 到第 \(k\) 个最近邻的距离,其中 \(k = \lfloor \alpha n \rfloor\),\(\alpha \in (0,1]\)。则邻域定义为所有满足 \(|x_i - x_0| \leq d_k(x_0)\) 的点。
-
计算权重:为邻域内每个点 \((x_i, y_i)\) 分配权重 \(w_i(x_0)\),该权重随 \(|x_i - x_0|\) 增大而平滑减小至零。
2. 权重函数的设计
权重函数需满足:对称、非负、在零点处最大、在边界处平滑降至零。最常用的是 三次方权重函数(Tricube weight function):
\[w_i(x_0) = T\left( \frac{|x_i - x_0|}{d_k(x_0)} \right), \quad \text{其中 } T(u) = \begin{cases} (1 - u^3)^3 & \text{若 } u < 1 \\ 0 & \text{若 } u \geq 1 \end{cases} \]
这里 \(u = \frac{|x_i - x_0|}{d_k(x_0)}\) 是标准化距离。该函数在 \(u=0\) 时权重为 1,在 \(u=1\) 时平滑降为 0,确保邻域边界处的连续性。
3. 局部加权最小二乘拟合
在目标点 \(x_0\) 处,使用邻域内数据拟合一个 局部多项式(通常为一次或二次)。以局部线性拟合为例,我们求解以下加权最小二乘问题:
\[\min_{\beta_0, \beta_1} \sum_{i=1}^n w_i(x_0) \left[ y_i - (\beta_0 + \beta_1 (x_i - x_0)) \right]^2 \]
注意:这里将自变量中心化到 \(x_0\),即用 \((x_i - x_0)\) 而非 \(x_i\),这样拟合的截距 \(\beta_0\) 直接就是 \(x_0\) 处的预测值 \(\hat{y}_0\)。解为:
\[\hat{\beta} = (X^T W X)^{-1} X^T W Y \]
其中设计矩阵 \(X\) 的第 \(i\) 行为 \([1, x_i - x_0]\),\(W = \text{diag}(w_1(x_0), \dots, w_n(x_0))\),\(Y = [y_1, \dots, y_n]^T\)。则预测值 \(\hat{y}_0 = \hat{\beta}_0\)。
4. 稳健性处理:迭代重加权
原始 LOWESS(也称 LOESS)包含一个 稳健迭代步骤 以抵抗离群点影响:
- 第一轮拟合:用上述方法得到初始预测值 \(\hat{y}_i^{(1)}\)。
- 计算残差:\(r_i = y_i - \hat{y}_i^{(1)}\)。
- 计算稳健权重:根据残差大小分配额外权重 \(\delta_i\)。常用 双平方权重函数:
\[\delta_i = B\left( \frac{r_i}{6 \cdot \text{median}(|r|)} \right), \quad B(u) = \begin{cases} (1 - u^2)^2 & \text{若 } |u| < 1 \\ 0 & \text{若 } |u| \geq 1 \end{cases} \]
这里分母的 6 倍中位数绝对残差是稳健尺度估计,残差大于该值的点权重降为零(被视为离群点)。
- 更新权重:将原始权重更新为 \(w_i^{\text{new}}(x) = w_i(x) \cdot \delta_i\)。
- 重新拟合:用新权重再进行局部加权最小二乘,得到更稳健的预测值 \(\hat{y}_i^{(2)}\)。
通常迭代 2-3 次即可。
5. 算法流程总结
- 输入:数据 \((x_i, y_i)\),平滑参数 \(\alpha\),多项式次数 \(d\)(常取 1 或 2),稳健迭代次数 \(t\)。
- 对每个目标点 \(x_0\) (通常取所有数据点或等间距网格点):
a. 计算最近邻带宽 \(d_k(x_0)\)。
b. 计算初始权重 \(w_i(x_0)\) 基于三次方函数。
c. 进行稳健迭代(重复 \(t\) 次):
i. 用当前权重进行局部多项式加权最小二乘,得到预测值。
ii. 计算残差,得到稳健权重 \(\delta_i\)。
iii. 更新权重:\(w_i \leftarrow w_i \cdot \delta_i\)。
d. 输出最终预测值 \(\hat{y}_0\)。 - 输出:所有目标点的预测值,连接成平滑曲线。
关键点说明
- 带宽选择:\(\alpha\) 控制平滑程度,越大曲线越平滑(可能欠拟合),越小曲线越波动(可能过拟合),可通过交叉验证选择。
- 计算复杂度:对每个目标点都需解加权最小二乘,计算量为 \(O(n^2)\) 量级,可用 KD 树等加速邻域搜索。
- 与核回归的区别:LOWESS 使用局部多项式而非仅常数拟合,且在边界处偏差更小;其权重函数具有紧支撑(超出带宽权重为零),计算更高效。
总结
LOWESS 通过局部加权多项式拟合,实现了灵活的非参数回归;其稳健迭代步骤通过降低离群点权重,使拟合结果对异常值不敏感。该算法无需预设全局模型,能自适应数据局部结构,是探索性数据分析与可视化中的强大工具。