查看原文
其他

【41计划打卡-17】局部加权回归

叉烧ZBayes CS的陋室 2022-08-08

估计我最近都会放Linkin Park的音乐了吧。


往期:

【41计划打卡-13】处理缺失数据

【41计划打卡-12】深度学习4-随机梯度下降法

【41计划打卡-10】深度学习2-神经网络的概念和含义

【41计划打卡-09】贝叶斯统计思想


参考:

  • 斯坦福大学公开课:机器学习教程,吴恩达(Andrew Ng)(视频教程和讲义),http://open.163.com/special/opencourse/machinelearning.html?referered=http%3A%2F%2Fopen.163.com%2Fspecial%2Fopencourse%2Fmachinelearning.html

  • 雨石的博客:局部加权回归、逻辑斯蒂回归、感知器算法—斯坦福ML公开课笔记3,http://blog.csdn.net/stdcoutzyx/article/details/9113681

  • Machine Learning in Action,Peter Harrington;(中文名是机器学习实战)


三份资料我都挺推荐的。吴恩达教授的机器学习教程非常出名,这个没得说,其实能跟的话尽量跟coursera上的,网易公开课上的比较老,讲课的经验肯定少一些,跟着实际的课程走效果肯定好,另外,他的讲义要好好看,一定要好好看,个人感觉比讲课清楚,我甚至拒绝的看讲义比上课靠谱;第二个是网友雨石的对机器学习课程的笔记,全中文,很良心,基本记住了课堂的内容,但是缺点是,可能会存在一些错误,所以大家最好别单独看着这个来学。机器学习实战算是国内比较好的书籍,理论内容比较少,更多是讲思维和编程实现,编程实现是他的亮点。

内容比较长,分两篇,上篇是基本理论,下篇案例实现。讲解方式和个人理解有关(当然要不一样了),如有问题欢迎指正。

欠拟合和过拟合

在开始之前,需要讨论一个问题,就是关于拟合常出现的问题。

对一段时间序列,是能够进行拟合的,常见的,是使用线性拟合,即用一条直线去描述这段时间序列,当然的,这种时候会存在比较大的误差,除了偶然误差外,如果时间序列中存在较为明显升降趋势变化,那线性回归就不再有效,因为线性回归只能描述一种趋势,于是会有人开始用二次回归,甚至三次四次。

对于这种具有明显升降趋势变化的时间序列,如果用线性回归,然而线性回归的描述能力不够,这就被称为“欠拟合”(underfitting)。说形象点,就是对一个问题比较复杂,模型却太简单。表现在实际问题中,现象为训练集的精确度就比较低。

问题复杂,那模型的复杂性肯定要相对提升,但是提升太多同样会出现问题,这就是“过拟合”(overfitting)。知乎里面有一张图很能够描述这个问题,说白了就是对问题,想太多。

现象就是训练集的精确度很高,但是测试集结果很差。

但是显然,两者的平衡问题是一个比较困难的问题,但是局部加权回归会给出了一个不用纠结改用多少次回归,是否会欠拟合或者过拟合的解决方案。

局部加权回归

局部加权回归的关键点是两个,首先是局部,然后是回归,我分两个部分来讲。

局部

回归是对整体趋势的预测,当然也是对局部甚至点的预测和分析,尤其是在进行预测时,那么就会有一个问题,当对点进行估计或者预测时,我是否需要用到整一大段时间序列的数据呢?答案当然是不是!我不希望用到带估计点较远的点影响带估计点的计算,于是,我只希望用这个点附近的几个点来进行拟合,保证局部的趋势确定即可。

再者,时间序列大部分时间不是直线而是曲线,但是我们又希望用线性回归,于是我们可以化曲线为直线,模仿求圆面积等方式,用直线可以逼近曲线的思想去解决,此处我们就是取了曲线的局部然后用直线去描述,这个也是局部回归的思想。

那么怎么实现局部呢。

假设对一个点x0附近的趋势进行估计,我可以取5个点进行估计,即x1、x2、x3、x4、x5,其中x3=x0,即取x0前后两点进行进行拟合,这样就能够模拟x0附近的趋势,然后再来估计x0,这样得到的x0当然就是符合x0局部趋势的估计值,然后以此类推,用这种方式去训练模型。其中涉及的简单的线性回归,那我就不赘述了,自己去查资料自己算吧。

加权

我需要用局部的原因是因为我对一个点进行估计,我不希望距离估计点较远的点会影响我对估计点的估计,但是问题来了,距离估计点多近的点是应该用的,距离多远的点是不该用的,还有一个进一步的问题,所被选的点的重要性就一样吗?当然不是,我们知道,在进行估计的时候,距离待估计位置近的点,和待估计点的关系比较密切,重要性也比较大,所以应该得到重视,而距离相对较远的点,就应该没那么重要,于是就想到了加权。对模型进行加权,最重要的体现就在于损失函数的设计上,所以有:

如果把w去掉,大家知道就是线性回归的损失函数,令预测值和实际值尽可能接近,现在在前面加了w这个权值,能控制距离估计点较近的点重要性高更高,距离估计点较远的重要性较低,其衡量方式如下:

指数中,分子是估计点和训练集点的几何距离,分母是一个衰减系数,整个权值计算函数其实是一个类似正态分布的密度函数,随着距离估计点的距离逐渐加大,权值下降,最后降低。

通过指数分布族来计算权值,有差别地利用局部点来对点进行估计或者预测,这就是局部加权回归。

缺点

此处提一提缺点,就是运算量非常大,对整个时间序列都用这个方法,每个点需要用一次线性回归求值,可想而知其难度。


微信:zgr950123
QQ:545281848欢迎关注


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存