文章目录

  • 概念
  • 公式理解
  • 引入吴恩达视频课的例子
  • 滑动平均为什么在测试过程中被使用
  • 代码实现

概念

  • 滑动平均(exponential moving average),或者叫做指数加权平均(exponentially weighted moving average),可以用来估计变量的局部均值,使得变量的更新与一段时间内的历史取值有关。

  • 加权移动平均法,是对观察值分别给予不同的权数,按不同权数求得移动平均值,并以最后的移动平均值为基础,确定预测值的方法。采用加权移动平均法,是因为观察期的近期观察值对预测值有较大影响,它更能反映近期变化的趋势

  • 指数移动加权平均法,是指各数值的加权系数随时间呈指数式递减,越靠近当前时刻的数值加权系数就越大

  • 指数移动加权平均较传统的平均法来说,一是不需要保存过去所有的数值;二是计算量显著减小。

公式理解

其实指数滑动平均法相当于加权滑动平均法的变体,主要区别在于,指数滑动平均法的权重是随时间推移呈指数衰减。指数滑动平均法的公式如下:

vt=β⋅vt−1+(1−β)⋅θt(1)v_t = β \cdot v_{t-1} + (1 - β) \cdot θ_t \qquad \qquad (1) vt​=β⋅vt−1​+(1−β)⋅θt​(1)

变量 vvv 在t时刻记为vtv_tvt​,θtθ_tθt​为变量vvv在t时刻的取值,即在不使用滑动平均模型时 vt=θtv_t = θ_tvt​=θt​

上式中,β∈[0,1)β ∈ [0, 1)β∈[0,1),βββ其实就是衰减权重,一般来说初始化设置为0.9,β=0β=0β=0相当于没有使用平滑。

如果还不理解的话,也可以这样看:

将 vtv_tvt​ 看做预测值 记作 ptp_tpt​,vt−1v_{t-1}vt−1​看做观测值 记作 xtx_txt​,那么公式(1)也可以表示为:
pt=β⋅xt+(1−β)⋅pt−1p_t = β \cdot x_t + (1 - β) \cdot p_{t-1} pt​=β⋅xt​+(1−β)⋅pt−1​

前面说了,指数滑动平均的权重是随着时间推移呈指数衰减的,那么上面的这个递推公式体现在哪里呢?我们把公式(1)进行延伸:

θt=vt−1=β⋅vt−2+(1−β)⋅θt−1(2)θ_t = v_{t-1} = β \cdot v_{t-2} + (1 - β) \cdot θ_{t-1} \qquad \qquad (2) θt​=vt−1​=β⋅vt−2​+(1−β)⋅θt−1​(2)

将(1)和(2)联立,可得:

vt=β⋅vt−1+(1−β)⋅(β⋅vt−2+(1−β)⋅θt−1)(3)v_t = β \cdot v_{t-1} + (1-β) \cdot (β \cdot v_{t-2} + (1-β) \cdot θ_{t-1}) \qquad \qquad (3) vt​=β⋅vt−1​+(1−β)⋅(β⋅vt−2​+(1−β)⋅θt−1​)(3)

发现没有,在(3)中vtv_tvt​和θt−1θ_{t-1}θt−1​的关系是(1−β)2(1-β)^2(1−β)2倍,而在(1)中vtv_tvt​和θtθ_{t}θt​的关系是(1−β)(1-β)(1−β)倍,呈指数衰减关系。

根据吴恩达的视频公开课中提到的,t时刻变量v的滑动平均值大致等于过去 11−β\frac{1}{1-β}1−β1​这个时刻θ值得平均。这个结论在滑动平均起始时相差比较大,所以有了偏差修正,将vtv_tvt​除以(1−βt)(1-β^t)(1−βt)修正对均值的估计。

加入偏差修正后,vtv_tvt​和vbiasedtv_{biased_t}vbiasedt​​的更新公式如下:

vt=β⋅vt−1+(1−β)⋅θtvbiasedt=vt1−βt(4)v_t = β \cdot v_{t-1} + (1-β) \cdot θ_t \\ v_{biased_t} = \frac{v_t}{1-β^t} \qquad \qquad (4) vt​=β⋅vt−1​+(1−β)⋅θt​vbiasedt​​=1−βtvt​​(4)

假设起始v0v_0v0​ = 0,βββ=0.9,之后每个时刻,依次对变量vvv进行赋值,不使用滑动平均和使用滑动平均的结果如下:

t 不使用滑动平均模型,即给

指数加权移动平均详解 附代码实现(全网之最)相关推荐

  1. 一文速学数模-时序预测模型(四)二次指数平滑法和三次指数平滑法详解+Python代码实现

    目录 前言 二次指数平滑法(Holt's linear trend method) 1.定义 2.公式 二次指数平滑值: 二次指数平滑数学模型: 3.案例实现 三次指数平滑法(Holt-Winters ...

  2. 动态规划---01背包问题--Dp(详解附代码)

    一.动态规划 代表一类问题(最优子结构或子问题最优性)的一般解法,是设计方法或者策略,不是具体算法 本质:递推,核心是找到状态转移的方式,写出dp方程. 解决问题:交叉,重叠子问题(最优子问题) 形式 ...

  3. 【排序】堆排序详解 附代码

    按照国际惯例,开篇前先简单介绍(吹一波)堆排序(Heapsort).Heapsort是一种优秀的排序算法(个人感觉基本排序算法中仅次于快速排序),时间复杂度为O(nlgn),同时,Heapsort具有 ...

  4. 各种进制转换(二,八,十,十六进制间转换)详解附代码

    进制转换 原理 进制转换是人们利用符号来计数的方法.进制转换由一组数码符号和两个基本因素"基数"与"位权"构成. 基数是指,进位计数制中所采用的数码(数制中用来 ...

  5. 前序遍历、中序遍历、后序遍历层序遍历详解附代码(数据结构C语言)

    目录 (1)前序遍历 (DLR) 递归算法 (2)中序遍历 (LDR) 递归算法 (3)后序遍历 (LRD) 递归算法 (4)层序遍历 队列实现方法 层序遍历的定义: 实现方法: 代码实现 结果截图 ...

  6. Numpy学习笔记(二):argmax参数中axis=0,axis=1,axis=-1详解附代码

    文章目录 1.argmax和max函数区别 2.axis=0/axis=1/axis=-1的区别 3.具体代码分析 ---3.1一维数组 ---3.2二维数组 ---3.3三维数组 1.argmax和 ...

  7. 一文速学数模-时序预测模型(五)指数平滑法详解+Python代码实现

    目录 前言 一.指数平滑法 1.简介 2.特点 3.基本原理 4.优缺点 优点 缺点</

  8. 目标检测模型的评估指标mAP详解(附代码)

    https://zhuanlan.zhihu.com/p/37910324 对于使用机器学习解决的大多数常见问题,通常有多种可用的模型.每个模型都有自己的独特之处,并随因素变化而表现不同. 每个模型在 ...

  9. 随机分布嵌入(RDE)框架详解附代码

    介绍 研究了好一阵子马欢飞老师在PNAS上发的文章,下面附上个人的研究心得与代码与大家讨论. 在基于非线性系统的理论基础上,延迟嵌入理论以及广义嵌入理论等相空间重构的理论基础上,观察者便有可能从一个观 ...

  10. c++实现贪吃蛇详解(附代码)

    文章目录 前言 一.运行界面 二.类的大致抽象 三.关于一些问题的思考 四.最后一些想说的 五.代码 前言 经过一个多月的学习,又加深了对c++的理解,所以接下来,就和大家分享一下,一个月学习c++的 ...

最新文章

  1. redis日志_「漫画」谈谈Redis持久化
  2. 天才基本法_《天才基本法》强推!年度神仙小说,看完这本书我竟然爱上了数学...
  3. 【Hibernate框架开发之九】Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存/乐观悲观锁等优化算法)...
  4. html对定位图片的某一部分_某系统存任意文件上传
  5. 计算机视觉中的牛人贡献及其主页
  6. php短路逻辑,JS利用短路原理简写if语句
  7. 程序员大部分时间都在“熟悉系统”
  8. POI操作Excel时Cannot get a text value from a numeric formula cell非法参数异常
  9. ACM题目————STL练习之众数问题
  10. 文件解压和压缩io流
  11. FPGA笔记(八)-驱动12864
  12. 钟控RS,D,JK,T触发器
  13. Python3,1行代码,去除图片的背景图,确实香。
  14. 计算机专业研究生和本科生工资差距,本科生和研究生的工资差距,到底有多大?...
  15. Java 利用ffmpeg工具实现视频MP4转m3u8
  16. 柱坐标系与直角坐标系的转换
  17. 【C语言】杨辉三角(等腰三角)
  18. 软件开发实训(720科技)水库大坝安全监测监控平台
  19. FPGA中的分频器-偶数分频
  20. PIC单片机之中断程序

热门文章

  1. 交通灯控制逻辑电路设计
  2. C#网络编程技术SuperSocket实战项目演练
  3. 三维地震数据segy数据显示
  4. python识别手写文字_python实现ocr-手写体识别
  5. Qt + OpenGL 教程(三):线
  6. 配置管理工具应该具有的一般特性
  7. 显示器+测试软件,MonitorTest(显示器性能测试软件
  8. python多维列表索引越界怎么处理_python列表索引越界
  9. 记一次有趣的诱导安装
  10. 自动从mysql下载到onedrive_centos7 自动上传 transmission 下载完成的文件 到 onedrive脚本...