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

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

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

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

指数移动平均的内涵是个递推公式,在计算今天的平均值时,使用了昨天的平均值,可以加快计算效率。详细内容如下:

前言

上一篇我们说通过mini batch的方式来为梯度下降算法增速。 这次说一说指数加权平均。 它同样是用来给梯度下降增速的。 在我们的正常的梯度下降中,不论是mini batch还是 full batch,梯度下降的效果大概是下面这个样子的。

梯度下降算法就像是上面这个图一样,像一个碗一样。这是我们优化成本函数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:

java 移动平均_移动平均(转载)相关推荐

  1. flexpaper java 例子_【转载】《Flexpaper二次开发入门教程》(十) Flexpaper简单使用-第一个Flexpaper例子(4.1节) ......

    主要文件.文件夹说明: Examples存放Flexpaper使用例子 Js存放Flexpaper调用的JS文件 Php存放PHP使用的文档.JS.库.SWF文件 Index.html例子主页 Fle ...

  2. 中心移动平均_时间序列模型:移动平均 用Excel预测(4)

    预测模型都是数理统计模型,原理部分非常枯燥,但原理部分是很重要的,可用帮助我们在做预测是选用哪种模型或者用哪几种结合来使用,以到达更精准的预测的前提. 移动平均 移动平均法是最简单最常用的预测模型之一 ...

  3. java 多线程写缓存,Java多线程_缓存对齐

    1.什么是缓存对齐 当前的电脑中,数据存储在磁盘上,可以断电保存,但是读取效率较低.不断电的情况下,数据可以在内存中存储,相对硬盘效率差不多是磁盘的一万倍左右.但是运算时,速度最快的是直接缓存在CPU ...

  4. JAVA入门_多线程_邮局派发信件

    JAVA入门_多线程_邮局派发信件 Postman package cn.campsg.java.experiment.entity;public class Postman {private Str ...

  5. 第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++

    第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++ 准备代码: 第一次编译: 显然需要先配置环境变量: 先找到java.exe和javac.exe所在的文件夹位置: 此电脑-& ...

  6. 复习Java异常处理_异常分类_自定义异常_线程初步了解

    复习Java异常处理_异常分类_自定义异常_线程 主要内容 异常.线程 教学目标 第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点 ...

  7. java项目_第171期ssm房屋租赁系统_计算机毕业设计

    java项目_第171期ssm房屋租赁系统_计算机毕业设计 [源码请到下载专栏下载] 今天分享的项目是<ssm房屋租赁系统> 该项目分为2个角色,管理员和用户. 用户可以浏览前台,查看房屋 ...

  8. java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计

    java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计 [源码请到资源专栏下载] 今天分享的项目是<ssm班级同学录网站> 该项目分为2个角色,管理员.用户. 用户 ...

  9. JAVA入门_继承与重载_饲养员喂养动物

    JAVA入门_继承与重载_饲养员喂养动物 实验要求 Tiger类 Feeder类 MainClass 运行结果 实验要求 本实验要求:本实验以饲养员喂养老虎为业务背景,体验"函数重载&quo ...

  10. java数组的下界,Java泛型_上界extends_下界super

    Java泛型_上界extends_下界super ? 通配符类型 extends T> 表示类型的上界,表示参数化类型的可能是T或是T的子类 super T> 表示类型下界(Java C ...

最新文章

  1. linux使用小技巧——screen
  2. Windows Server 2012 R2在桌面上显示计算机/网络图标
  3. 深入研究Java类加载机制
  4. 日本公司用人工智能帮人做金融交易
  5. java 鉴权_我爱java系列之---【JWT实现微服务鉴权(一)】
  6. oracle导出导入emp,oracle导入导出操作
  7. 【数据库】SQL查询强化篇
  8. java I O类大全_Java I/O最简单的几个类
  9. php管道的概念,让你的php命令行程序处理管道数据
  10. java导入日期处理,java实现Excel表格的导入日期变成数字的问题
  11. mysql my.ini配置优化_求高手帮我优化一下 mysql 的 my.ini
  12. 24矩阵——条件数与方程组的性态、“病态”矩阵与方程、系数矩阵与右端微小扰动情况、条件数的几何意义
  13. 对于spring中事务@Transactional注解的理解
  14. 代码中,对象类与管理类要分开
  15. axure数据报表元件库_axure图表元件库 axure自制的组件库(包括数据组件)
  16. 计算机语言学方面的期刊.,自然语言处理投稿哪些sci期刊
  17. 如何免费下载百度指数数据
  18. 【OpenGL】OpenGL帧缓存对象(FBO:Frame Buffer Object)
  19. 特征值比对代码/计算相似度代码
  20. html导航图片滚动条,CSS实现导航栏底部动态滚动条效果

热门文章

  1. 彻底解决chrome等浏览器被劫持(篡改主页hao123等)问题
  2. 海康摄像头车牌识别和顶拍同步抓拍图片
  3. Win10下安装Detectron2,超详细教程!
  4. 计算机网络(四)数据交换方式过程,图文详解、优缺点分析(电路交换、报文交换、分组交换)
  5. word2016添加题注|图注文献标号的交叉引用及引用的更新|添加不同类型的页码|文献自动编号|文献编号的自动引用|删除空白页
  6. 安装mysql电脑开机蓝屏_电脑开机蓝屏怎么解决。
  7. 一.python实现AI拟声---pycharm工具下载及python环境配置
  8. 声音克隆初体验~复制声音只需要15分钟
  9. 如何写一篇计算机领域的论文(总结)
  10. python神器_牛逼啊!一个可以随时随地写Python代码的神器