文章目录
- 概念
- 公式理解
- 引入吴恩达视频课的例子
- 滑动平均为什么在测试过程中被使用
- 代码实现
概念
滑动平均(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−β)⋅θtvbiasedt=1−βtvt(4)
假设起始v0v_0v0 = 0,βββ=0.9,之后每个时刻,依次对变量vvv进行赋值,不使用滑动平均和使用滑动平均的结果如下:
t
|
不使用滑动平均模型,即给
指数加权移动平均详解 附代码实现(全网之最)相关推荐
- 一文速学数模-时序预测模型(四)二次指数平滑法和三次指数平滑法详解+Python代码实现
目录 前言 二次指数平滑法(Holt's linear trend method) 1.定义 2.公式 二次指数平滑值: 二次指数平滑数学模型: 3.案例实现 三次指数平滑法(Holt-Winters ...
- 动态规划---01背包问题--Dp(详解附代码)
一.动态规划 代表一类问题(最优子结构或子问题最优性)的一般解法,是设计方法或者策略,不是具体算法 本质:递推,核心是找到状态转移的方式,写出dp方程. 解决问题:交叉,重叠子问题(最优子问题) 形式 ...
- 【排序】堆排序详解 附代码
按照国际惯例,开篇前先简单介绍(吹一波)堆排序(Heapsort).Heapsort是一种优秀的排序算法(个人感觉基本排序算法中仅次于快速排序),时间复杂度为O(nlgn),同时,Heapsort具有 ...
- 各种进制转换(二,八,十,十六进制间转换)详解附代码
进制转换 原理 进制转换是人们利用符号来计数的方法.进制转换由一组数码符号和两个基本因素"基数"与"位权"构成. 基数是指,进位计数制中所采用的数码(数制中用来 ...
- 前序遍历、中序遍历、后序遍历层序遍历详解附代码(数据结构C语言)
目录 (1)前序遍历 (DLR) 递归算法 (2)中序遍历 (LDR) 递归算法 (3)后序遍历 (LRD) 递归算法 (4)层序遍历 队列实现方法 层序遍历的定义: 实现方法: 代码实现 结果截图 ...
- 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和 ...
- 一文速学数模-时序预测模型(五)指数平滑法详解+Python代码实现
目录 前言 一.指数平滑法 1.简介 2.特点 3.基本原理 4.优缺点 优点 缺点</
- 目标检测模型的评估指标mAP详解(附代码)
https://zhuanlan.zhihu.com/p/37910324 对于使用机器学习解决的大多数常见问题,通常有多种可用的模型.每个模型都有自己的独特之处,并随因素变化而表现不同. 每个模型在 ...
- 随机分布嵌入(RDE)框架详解附代码
介绍 研究了好一阵子马欢飞老师在PNAS上发的文章,下面附上个人的研究心得与代码与大家讨论. 在基于非线性系统的理论基础上,延迟嵌入理论以及广义嵌入理论等相空间重构的理论基础上,观察者便有可能从一个观 ...
- c++实现贪吃蛇详解(附代码)
文章目录 前言 一.运行界面 二.类的大致抽象 三.关于一些问题的思考 四.最后一些想说的 五.代码 前言 经过一个多月的学习,又加深了对c++的理解,所以接下来,就和大家分享一下,一个月学习c++的 ...
最新文章
- redis日志_「漫画」谈谈Redis持久化
- 天才基本法_《天才基本法》强推!年度神仙小说,看完这本书我竟然爱上了数学...
- 【Hibernate框架开发之九】Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存/乐观悲观锁等优化算法)...
- html对定位图片的某一部分_某系统存任意文件上传
- 计算机视觉中的牛人贡献及其主页
- php短路逻辑,JS利用短路原理简写if语句
- 程序员大部分时间都在“熟悉系统”
- POI操作Excel时Cannot get a text value from a numeric formula cell非法参数异常
- ACM题目————STL练习之众数问题
- 文件解压和压缩io流
- FPGA笔记(八)-驱动12864
- 钟控RS,D,JK,T触发器
- Python3,1行代码,去除图片的背景图,确实香。
- 计算机专业研究生和本科生工资差距,本科生和研究生的工资差距,到底有多大?...
- Java 利用ffmpeg工具实现视频MP4转m3u8
- 柱坐标系与直角坐标系的转换
- 【C语言】杨辉三角(等腰三角)
- 软件开发实训(720科技)水库大坝安全监测监控平台
- FPGA中的分频器-偶数分频
- PIC单片机之中断程序
热门文章
- 交通灯控制逻辑电路设计
- C#网络编程技术SuperSocket实战项目演练
- 三维地震数据segy数据显示
- python识别手写文字_python实现ocr-手写体识别
- Qt + OpenGL 教程(三):线
- 配置管理工具应该具有的一般特性
- 显示器+测试软件,MonitorTest(显示器性能测试软件
- python多维列表索引越界怎么处理_python列表索引越界
- 记一次有趣的诱导安装
- 自动从mysql下载到onedrive_centos7 自动上传 transmission 下载完成的文件 到 onedrive脚本...
|