Loess 局部权重回归

Loess 局部权重回归

写在前面:
?我有个问题,STL是什么...
想知道STL是什么东东,我们不妨先把它拆开看(解剖):

请添加图片描述

关于非参数(补充)
(1)非参数方法通常是通过对数据进行分组或平滑处理来构建模型,依据数据的实际分布和特征进行估计,
而不是基于预设的方程;
(2)常见的非参数回归方法包括核回归(Kernel Regression)、局部加权回归(LOESS)等,
这些方法在处理复杂数据时尤其有用,例如当数据中存在噪音或者未知的非线性关系时;

拆开后,我们对STL的每个地方尝试进行逐步理解,(这篇文章)首先先看“L”(Loess)

1 基本概念

loess(locally weighted regression)是一种用于局部回归分析的非参数方法,它主要是把样本划分成一个个小区间,对区间中的样本进行多项式拟合,不断重复这个过程得到在不同区间的加权回归曲线,最后再把这些回归曲线的中心连在一起合成完整的回归曲线

具体过程如下:

· 决定拟合点的数量和位置
· 以拟合点为中心,确定k个最接近的点
· 通过权重函数计算这k个点的权重
· 通过加权线性回归进行多项式拟合(一次或者二次)
· 对所有拟合点重复以上步骤

2 关于权重的确定

确定距离,将距离归一化处理 ---> 降速平滑 ---> 对区间内的散点进行加权线性回归进行拟合

2.1 归一化处理

为了计算某个点 x 0 x_0 x0 的加权值 w i ​ ( x 0 ​ ) w_i​(x_0​) wi(x0),需要对区间内的所有点到 x 0 ​ x_0​ x0 的距离进行标准化处理

w i ​ ( x 0 ​ ) = W ( ∣ x 0 ​ − x i ​ ∣ Δ ( x 0 ​ ) ​ ) w_i​(x_0​)=W(\frac{∣x_0​−x_i​∣}{Δ(x_0​)​}) wi(x0)=W(Δ(x0)x0xi)

**W(⋅):是权重函数(例如 tricube 权重函数)。这里的输入是经过标准化的距离,即将绝对距离除以最大距离 Δ( x 0 x_0 x0)Δ( x 0 x_0 x0​)。这样做的目的是使得权重函数的输入范围限制在 [0, 1] 之间,以便能够使用权重函数进行权重计算。

2.2 权重函数 Tricube

权重通常是根据距离来分配的,距离拟合点越近的数据点,其权重就越大,反之则越小。

三次立方权重函数(tricube weight function)是一种常用的权重分配方式,用来在LOESS中为邻近数据点分配权重。其形式为:

W ( u ) = { ( 1 − ∣ u ∣ 3 ) 3 i f   ∣ u ∣ ≤ 1 0 o t h e r w i s e W(u)=\left\{ \begin{array}{l l} {{\left(1-|u|^{3}\right)^{3}}} & {{\mathrm{if~}}|u|\leq1} \\ {{\bf0}} & {{\mathrm{otherwise}}} \end{array}\right. W(u)={(1u3)30if u1otherwise

解释:

  • u u u:表示标准化距离,通常计算为 u = d h u=\frac{d}{h} u=hd​,其中 d d d 是目标点与某个邻近点之间的实际距离,而 h h h 是带宽参数(平滑参数),用于控制模型的灵活性和光滑度

  • 权重值

    • 当∣u∣≤1∣u∣≤1时,权重值根据距离计算得到,离目标点越近的点权重越高
    • 当∣u∣>1∣u∣>1时,权重为0,这意味着超出带宽范围的数据点不会被考虑在内。

指数可以选择二次(B函数)或三次(W函数),三次方对周围权值的降速更快,平滑效果更好,切适用于大多数分布,但增加了残差的方差,一般来说,第一次迭代会更多实用W函数,第二次迭代会选择B函数。

权重函数的形状
  • 形状特征:Tricube 权重函数呈现出一个 (倒)“U” 形,中心最高,边缘降到零。具体来说,权重在0处达到最大值1,然后随着距离的增加迅速减小,最终在距离带宽阈值处降为0。这种设计使得LOESS能有效地利用近邻信息,同时抑制远离点的影响。

参考代码:

import numpy as np  
import matplotlib.pyplot as plt  
  
# 定义 tricube 权重函数  
def tricube_weight(u):  
    return np.where(np.abs(u) <= 1, (1 - np.abs(u)**3)**3, 0)  
  
# 生成 u 的值  
u = np.linspace(-1.5, 1.5, 400)  
  
# 计算权重  
weights = tricube_weight(u)  
  
# 绘制图形  
plt.figure(figsize=(8, 5))  
plt.plot(u, weights, label='Tricube Weight Function', color='blue')  
plt.title('Tricube Weight Function')  
plt.xlabel('u (standardized distance)')  
plt.ylabel('Weight W(u)')  
plt.axhline(0, color='black', lw=0.5, ls='--')  
plt.axvline(0, color='black', lw=0.5, ls='--')  
plt.xlim(-1.5, 1.5)  
plt.ylim(-0.1, 1.1)  
plt.grid()  
plt.legend()  
plt.show()

参考图像:
请添加图片描述

2.3 加权线性回归

在 LOESS 中,我们认为距离拟合点更近的数据点对模型的影响应该更大,而远离拟合点的数据点影响较小,所以我们要定义损失函数的时候,应该优先降低附近的点与拟合直线的误差,这也就是我们对普通的最小二乘法要加上权重的原因,实际上这就是加权最小二乘法: J ( a , b ) = 1 N ​ ∑ N i = 1 w i ​ ( y i ​ − a x i ​ − b ) 2 J(a,b)=\frac{1}{N}​\underset{{i=1}}{\overset{{N}}{\sum}}w_i​(y_i​−ax_i​−b)^2 J(a,b)=N1i=1Nwi(yiaxib)2加权线性回归通过动态调整各个数据点的权重,为数据拟合提供了更大的灵活性。这种方法能够有效处理散点数据中由于距离、噪声等因素造成的复杂情况,特别是在局部回归分析中,能够显著提高拟合精度和可解释性

参考资料


  1. https://blog.youkuaiyun.com/jesseyule/article/details/95245350?spm=1001.2014.3001.5506
  2. 《智能供应链:预测算法理论与实践》庄晓天等著;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值