一.算法思想
局部加权回归(Lowess)的大致思路是:以一个点为中心,向前后截取一段长度为的数据,对于该段数据用权值函数做一个加权的线性回归,记为该回归线的中心值,其中为拟合后曲线对应值。对于所有的个数据点则可以做出条加权回归线,每条回归线的中心值的连线则为这段数据的Lowess曲线。
二.参数讲解
在这个思路中,能提取出的可调参数则是:
1.长度,应该截取多长的作为局部处理,为原数据量的比例;
2.权值函数,使用什么样的权值函数合适;
3.迭代次数,在进行一次局部回归后,是否需要迭代,再次做回归;
4.回归间隔,是否真的每个点都需要算一次加权回归,能否隔距离算一次,中间没算的用插值替换即可。
三.权值函数
理解了lowess之后,可以明白,其实权值函数并不是固定的,只要满足一定的规则条件即可(当然并也非强制),条件如下:
选择该类函数大致思路是:希望大于0,且作用域为[-1,1],且为对称函数,该函数对于中间(0处)的值较大,两边(-1,1)处值较小。
选择思路是,中间的权值较高,对于加权回归的影响较大;[-1,1]的原因是,对于任意不规则的数据段,可以压缩映射到[-1,1],方便处理。
权值函数如,B函数(二次函数):
W函数(三次函数):
二次与三次函数的区别在于,三次函数对于周围权值降速更快,在平滑最初时候效果好,且适用于大多数分布,但增加了残差的方差。
对于权值函数选取,第一次迭代适用W函数(三次函数),之后迭代使用B函数(二次函数)。
权值函数的使用:
1、使用权值函数;
2、数据段,映射成对应的坐标;
3、带入函数,计算出每个点对应的
4、使用加权回归得出模型:
四.回归迭代
上面讲了权值函数的选取和使用,提到了迭代,这里讲解怎么迭代。
首先,原值为,预测值为,残差为,记为的中位数。鲁棒性的权值调整附加值,修正后的权值为。
迭代过程为:
1.使用W函数(三次函数)作为权值函数,求出。
2.将带入加权回归计算出。
3.求出和。
4.以B函数作为修正权值函数,求出,计算出。
5.将作为修正权值,重复2、3、4步骤
该迭代没有明确的终止条件,据大量实验得知,原文中提到是2次迭代就基本收敛了,我做实验的时候,3次左右基本收敛,根文中描述差不多。
五.间隔回归,中间插值
在使用局部加权回归的时候,如果每个点都使用一次加权回归,则会比较耗时,所以有了,对于部分点使用加权回归,而未使用加权回归的点采用插值法处理,速度会增快很多,同时不会影响太大效果。
可以每间隔个点使用一次加权回归,中间点采用:线性插值、二次插值、三次插值等方法。
statsmodels推荐当数据点N>5000的时候,选择。
参考:https://blog.csdn.net/longgb123/article/details/79520982