热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

移动平均(转载)

移动平均(英语:MovingAverage,MA),又称“移动平均线”简称均线,是技术分析中一种分析时间序列数据的工具。最常见的是利用股价、回报或交易量等变数计算出移动平均。移动平均可抚平短期波动,

移动平均(英语:Moving Average,MA),又称“移动平均线”简称均线,是技术分析中一种分析时间序列数据的工具。最常见的是利用股价、回报或交易量等变数计算出移动平均。移动平均可抚平短期波动,反映出长期趋势或周期。数学上,移动平均可视为一种卷积。

简单移动平均(英语:Simple Moving Average,SMA)即算术平均。例如,收市价的10日简单移动平均指之前10日收市价的平均数。

加权移动平均(英语:Weighted Moving Average,WMA)指计算平均值时将个别数据乘以不同数值,在技术分析中,n日WMA的最近期一个数值乘以n、次近的乘以n-1,如此类推,一直到0:

指数移动平均(英语:Exponential Moving Average,EMA或EWMA)是以指数式递减加权的移动平均。各数值的加权影响力随时间而指数式递减,越近期的数据加权影响力越重,但较旧的数据也给予一定的加权值。

梯度下降算法就像是上面这个图一样,像一个碗一样。这是我们优化成本函数J的方式,不停的更新w和b的值。让函数移动到最下面的那个红色的点,也就是全局最优解。在这个过程中在纵轴上我们是上下波动的,横轴上我们不停的像最优解移动。 在这中间我们发现纵轴上下波动的太大导致我们在横轴上的移动速度不是很快。 这就需要我们增加迭代次数或者调大学习率来达到最后到达最优解的目的。 但是调大学习率会导致每一次迭代的步长过大,也就是摆动过大,误差较大。 而增加迭代次数则明显的增加了训练时间。 这时候指数加权就出现了。

动量梯度下降法

我们在之前的学习中知道梯度下降是一个优化成本函数J的过程,不停的更新w和b的参数来是成本函数J最小。 公式是这样的:y = wx + b。 每一次迭代都更新w和b的值, 让w = w - 学习率*J对w的导数。那么指数加权就是在更新w的时候做一些手脚。看下图。

可以看到我们多了一个求Vdw和Vdb, 分别在对w和b的导数上求指数加权平均。然后更新w和b的时候不再是减去学习率*导数了,而是导数的指数加权平均值。其中β就是加权。这也是我们的超参数之一。一般设置为0.9. 它的效果差不多是下面这样的。

蓝色部分是正常的梯度下降,红色部分是增加了指数加权平均的梯度下降,增加了指数加权后会减少纵轴的上下摆动从而让横轴上更快的移动来达到增速的作用。 那么到底什么是指数加权呢?

指数加权平均值

举例说明,下面是一个同学的某一科的考试成绩:
平时测验 80, 期中 90, 期末 95
学校规定的科目成绩的计算方式是:
平时测验占 20%;
期中成绩占 30%;
期末成绩占 50%;
这里,每个成绩所占的比重叫做权数或权重。那么,
加权平均值 = 8020% + 9030% + 95*50% = 90.5
算数平均值 = (80 + 90 + 95)/3 = 88.3

所以这就是指数加权平均值了。 在t时刻,根据实际的观测值可以求取V(t):V(t) = βY(t) + (1-β)EWMA(t-1),t = 1,2,.....,n;其中,V(t) t时刻的估计值(也就是指数加权平均值);Y(t) t时刻的测量值;n 所观察的总的时间;β(0 <β <1)表示对于历史测量值权重系数。之所以称之为指数加权,是因为加权系数β是以指数式递减的,即各指数随着时间而指数式递减。用n表示为β = 2/(n+1)。
物理意义:系数β越接近1表示对当前抽样值的权重越高,对过去测量值得权重越低,估计值(器)的时效性就越强,反之,越弱;另外,V还有一定的吸收瞬间突发的能力,也即平稳性,显然随着β减小,参考过去测量值的程度更多一些,平稳性增强,反之则降低。

通过这样一个公式,比如我们现在有100天的温度值,要求这100天的平均温度值。24,25,24,26,34,28,33,33,34,35..........32。
我们直接可以用公式:

化简开得到如下表达式:

通过上面表达式,我们可以看到,V100等于每一个时刻天数的温度值再乘以一个权值。
本质就是以指数式递减加权的移动平均。各数值的加权而随时间而指数式递减,越近期的数据加权越重,但较旧的数据也给予一定的加权。
而在我们上面提到的普通平均数求法,它的每一项的权值都是一样的,如果有n项,权值都为1/n。

结尾

之前曾经说过,系数β越接近1表示对当前抽样值的权重越高,对过去测量值得权重越低,估计值(器)的时效性就越强,反之,越弱。

像上图一样,我们V(指数加权平均值) 是约等于上面的公式的。这里的测量值就是我们的迭代次数。假如我们把β设置为0.9. 那么根据公式,那么相当于我们对于过去10次迭代。1除以(1-0.1). 这就是说我们把过去10次迭代的w和b的值算入了指数平均值中。也就是说我们对过去10次迭代的数据作为样本,求出了一个平均值作为指数加权。之后根据这个值更新w和b。之所以说有这么一个公式,是因为我们发现指数是随着时间衰减的,太老的数据可以忽略不计了。 根据经验,我们设置为0.9这个值是比较常见的, 也就是用过去10次迭代作为参考。

refs:

https://www.cnblogs.com/sddai/p/5740100.html

https://blog.csdn.net/AnySomeday/article/details/80215061


推荐阅读
author-avatar
toelleconneely_348
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有