Locally Weighted Polynomial Regression(局部加权多项式回归) 是一种非参数回归方法,它结合了多项式回归与局部加权思想,用于在数据的不同区域拟合不同的回归曲线,从而更灵活地捕捉数据的非线性结构。
一、基本概念
Locally Weighted Polynomial Regression(LWPR) 的核心思想是:
在每一个查询点 $x$,用距离该点较近的数据加权拟合一个多项式模型,较远的点权重较小。
相比普通全局多项式回归,LWPR:
不尝试拟合整个数据的一个全局模型;
而是在每一个点周围“滑动”地拟合局部模型。
二、数学表达
给定一组训练数据:
$$
{(x_i, y_i)}_{i=1}^n
$$
目标是在一个特定的点 $x_0$ 处估计函数值 $f(x_0)$。步骤如下:
1️⃣ 选择权重函数(核函数)
常见权重函数是高斯核(Gaussian Kernel):
$$
w_i(x_0) = \exp\left(-\frac{(x_i - x_0)^2}{2\tau^2}\right)
$$
$\tau$:带宽参数,控制权重衰减的快慢。
$x_0$:当前拟合点。
2️⃣ 拟合局部多项式
在每个 $x_0$ 处,求解加权最小二乘问题:
$$
\min_{\theta} \sum_{i=1}^n w_i(x_0) \cdot \left( y_i - p(x_i; \theta) \right)^2
$$
其中:
$p(x_i; \theta)$ 是一个 $d$ 次多项式,比如:
一次:$\theta_0 + \theta_1 x_i$
二次:$\theta_0 + \theta_1 x_i + \theta_2 x_i^2$
权重 $w_i(x_0)$ 越小,$(x_i, y_i)$ 的影响越小。
3️⃣ 预测输出值
解出局部多项式参数 $\theta$ 后,预测值为:
$$
\hat{y}(x_0) = p(x_0; \theta)
$$
三、算法步骤总结
给定一个待预测点 $x_0$;
计算每个训练点 $x_i$ 对 $x_0$ 的权重 $w_i$;
使用加权最小二乘法,拟合以 $x_0$ 为中心的局部多项式;
用拟合好的模型计算 $x_0$ 处的预测值。
四、Python 实现示意(以一次回归为例)
import numpy as np def lwpr_predict(x0, X, y, tau=1.0, degree=1): m = len(X) W = np.exp(-(X - x0)**2 / (2 * tau**2)) # 权重 # 构建多项式设计矩阵 Phi = np.vstack([X**d for d in range(degree + 1)]).T phi0 = np.array([x0**d for d in range(degree + 1)]) # 加权最小二乘求解 W_diag = np.diag(W) theta = np.linalg.pinv(Phi.T @ W_diag @ Phi) @ (Phi.T @ W_diag @ y) return phi0 @ theta
五、图示效果
假设数据呈现非线性趋势:
普通线性回归:只能画一条直线;
多项式回归:全局拟合,可能过拟合或欠拟合;
LWPR:每个点局部拟合一个曲线,整体曲线灵活而平滑。
六、优缺点对比
优点 | 缺点 |
---|---|
可建模复杂非线性关系 | 计算量大(每个点都要拟合) |
对局部异常数据不敏感 | 难以外推(对训练集外的预测较弱) |
无需假设模型结构 | 需要选择合适带宽 $\tau$ 和阶数 $d$ |
七、LWPR 和 LOESS / LOWESS 的区别
LWPR:广义术语,强调“局部加权+多项式回归”;
LOESS / LOWESS:LWPR 的具体实现之一,通常用于平滑散点图,使用局部一次或二次多项式;
两者本质相似,差异在于应用场景和实现细节。
✅ 八、应用场景
非线性数据建模;
数据可视化平滑;
控制系统建模;
时序数据预测;
医学、生物统计、金融中的局部趋势建模。
如果你想我讲解 LOESS/LOWESS 的具体算法,或者对 LWPR 进行二维/多维扩展,请继续告诉我!
系统当前共有 468 篇文章