【数据分析】指数移动平均线的直观解释

@slavahead

一、介绍

        在时间序列分析中,通常需要通过考虑先前的值来了解序列的趋势方向。序列中下一个值的近似可以通过多种方式执行,包括使用简单基线或构建高级机器学习模型。

        指数(加权)移动平均线是这两种方法之间的稳健权衡。在幕后有一个简单的递归方法可以有效地实现该算法。同时,它非常灵活,可以成功适应大多数类型的序列。

        本文介绍了该方法背后的动机、其工作流程和偏差校正的描述——一种克服近似中偏差障碍的有效技术。

二、动机

        想象一个近似随时间变化的给定参数的问题。在每次迭代中,我们都知道它之前的所有值。目标是根据先前的值来预测下一个值。

        一种幼稚的策略是简单地取最后几个值的平均值。这在某些情况下可能有效,但不太适合参数更依赖于最新值的情况。

        克服此问题的可能方法之一是将较高的权重分配给较新的值,并将较少的权重分配给先前的值。指数移动平均线正是遵循这一原则的策略。它基于这样的假设:变量的较新值比先前值对下一个值的形成贡献更大

三、公式

        为了理解指数移动平均线的工作原理,让我们看看它的递归方程:

        指数移动平均公式

  • vₜ 是近似给定变量的时间序列。它的索引 t 对应于时间戳 t。由于该公式是递归的,因此需要初始时间戳 t = 0 的值 v₀。实际中,v₀通常取0。
  • θ 是当前迭代的观测值。
  • β 是一个介于 0 和 1 之间的超参数,定义权重重要性应如何在先前平均值 vₜ-₁ 和当前观测值 θ 之间分布

        让我们为前几个参数值写下这个公式:

        第t个时间戳的获取公式

        结果,最终的公式如下所示:

        第 t 个时间戳的指数移动平均值

        我们可以看到,最近的观测值 θ 的权重为 1,倒数第二个观测值 — β,倒数第三个 — β² 等。由于 0 < β < 1,乘法项 βᵏ 随着 k 的增加呈指数下降,因此,观察结果越旧,它们就越不重要。最后,将每个总和项乘以 (1 -β)。

实际上,β 的值通常选择接近 0.9。

不同时间戳的权重分布(β = 0.9)

四、数学解释

        利用数学分析中著名的第二奇妙极限,可以证明以下极限:

        通过替换 β = 1 - x,我们可以将其重写为以下形式:

        我们还知道,在指数移动平均值的方程中,每个观测值都乘以项 βᵏ,其中 k 表示计算观测值之前的时间戳。由于两种情况下的底数 β 相等,因此我们可以使两个公式的指数相等:

        通过使用这个方程,对于选定的 β 值,我们可以计算权重项达到值 1 / e ≈ 0.368 所需的时间戳 t 的近似数量。这意味着在最后 t 次迭代中计算的观测值具有大于 1 / e 的权重项,而在最后 t 次时间戳范围内计算出的更先例的权重项则低于 1 / e,其重要性要小得多。

        实际上,低于 1 / e 的权重对指数加权平均值的影响很小。这就是为什么说对于给定的 β 值,指数加权平均值会考虑最后 t = 1 / (1 - β) 观测值

        为了更好地理解该公式,让我们为 β 代入不同的值

例如,取 β = 0.9 表示大约在 t = 10 次迭代中,与当前观测值的权重相比,权重衰减至 1 / e。换句话说,指数加权平均值主要取决于最后 t = 10 个观测值。

五、偏差校正

        使用指数加权平均值的常见问题是,在大多数问题中,它不能很好地近似第一个系列值。发生这种情况的原因是第一次迭代时缺乏足够的数据。例如,假设我们给出以下时间序列:

        目标是用指数加权平均值来近似它。然而,如果我们使用正常公式,那么前几个值将对 v₀ 施加很大的权重,即 0,而散点图上的大多数点都在 20 以上。因此,第一个加权平均值的序列将太低精确地近似原始序列。

        其中一个简单的解决方案是采用接近第一个观测值 θ1 的 v0 值。尽管这种方法在某些情况下效果很好,但它仍然不完美,特别是在给定序列不稳定的情况下。例如,如果 θ2 与 θ1 差异太大,则在计算第二个值 v2 时,加权平均值通常会比当前观测值 θ2 更重视先前趋势 v1。结果,近似值将非常差。

        一种更灵活的解决方案是使用一种称为“偏差校正”的技术。它们不是简单地使用计算值 vₖ,而是除以 (1 —βᵏ)。假设选择的 β 接近 0.9-1,则对于 k 较小的第一次迭代,该表达式趋于接近 0。因此,现在不是慢慢累加 v₀ = 0 的前几个值,而是将它们除以相对较小的数字,将它们缩放为更大的值。

        带和不带偏差校正的指数移动平均计算示例

        一般来说,这种缩放效果非常好,并且精确地适应了前几项。当k变大时,分母逐渐接近1,从而逐渐忽略不再需要的这种缩放的影响,因为从某个迭代开始,算法可以高度可信地依赖其最近的值,而无需任何额外的缩放。

六、结论

        在本文中,我们介绍了一种非常有用的近似时间序列序列的技术。指数加权平均算法的鲁棒性主要是通过其超参数β来实现的,β可以适应特定类型的序列。除此之外,引入的偏差校正机制使得即使在信息太少的早期时间戳上也可以有效地近似数据。

        指数加权平均在时间序列分析中有着广泛的应用范围。此外,它还用于梯度下降算法的变体中以加速收敛。其中最受欢迎的之一是深度学习中的动量优化器,它消除了优化函数不必要的振荡,使其更精确地对准局部最小值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集合求和#洛谷

题目描述 给定一个集合 s s s&#xff08;集合元素数量 ≤ 30 \le 30 ≤30&#xff09;&#xff0c;求出此集合所有子集元素之和。 输入格式 集合中的元素&#xff08;元素 ≤ 1000 \le 1000 ≤1000&#xff09; 输出格式 s s s 所有子集元素之和。 样例 #1 样例输入 …

nginx源码分析-4

这一章内容讲述nginx的模块化。 ngx_module_t&#xff1a;一个结构体&#xff0c;用于描述nginx中的各个模块&#xff0c;其中包括核心模块、HTTP模块、事件模块等。这个结构体包含了一些模块的关键信息和回调函数&#xff0c;以便nginx在运行时能够正确地加载和管理这些模块。…

UE5.1_Gameplay Debugger启用

UE5.1_Gameplay Debugger启用 重点问题&#xff1a; Gamplay Debugger启用不知道&#xff1f; Apostrophe、Tilde键不知道是哪个&#xff1f; Gameplay调试程序 | 虚幻引擎文档 (unrealengine.com) Gameplay Debugger

day02 有序数组的平方 长度最小子数组 螺旋矩阵

题目1&#xff1a;977 有序数组的平方 题目链接&#xff1a;977 有序数组的平方 题意 返回非递减整数数组的每个数字的平方和 也按照递减排序 双指针★ 代码 class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vector<int>…

菜鸟学习vue3笔记-vue3 router回顾

1、路由router pnpm i vue-router2、创建使用环境 1.src下创建 router文件夹、里面创建index.ts文件 //创建一个路由暴露出去//1.引入createRouter import { createRouter, createWebHistory } from "vue-router";// import Home from ../components/Home.vue//…

Global Mapper SDK 19 中文开发文档(十二)

7.3 结构的详细描述 7.3.1 GM_AreaElevStats_t &#xff08;1&#xff09;声明 public struct GM_AreaElevStats_t &#xff08;2&#xff09;字段 字段说明mAvgElev平均海拔&#xff08;以米为单位&#xff09;。mAvgSlope平均斜坡角度&#xff08;以度为单位&#xff09…

VMware 虚拟机 ubuntu 20.04 硬盘扩容方法

前言 最近由于需要编译 【RK3568】的 Linux SDK&#xff0c;发现 虚拟机默认的 200G 空间不足了&#xff0c;因此想增加这个 200G 空间的限制&#xff0c;通过网络上查找了一些方法&#xff0c;加上自己亲自验证&#xff0c;确认 硬盘扩容 正常&#xff0c;方法也比较的容易&a…

Vue:Vue与VueComponent的关系图

1.一个重要的内置关系&#xff1a;VueComponent.prototype.proto Vue.prototype 2.为什么要有这个关系&#xff1a;让组件实例对象&#xff08;vc&#xff09;可以访问到 Vue原型上的属性、方法。 案例证明&#xff1a; <!DOCTYPE html> <html lang"en"&…

Java日期和时间(二)

新增的日期和时间 为什么要学习新增的日期和时间 1、代替Calendar LocalDate&#xff1a;年、月、日 LocalTime&#xff1a;时、分、秒 LocalDateTime&#xff1a;年、月、日、时、分、秒 ZoneId&#xff1a;时区 ZoneldDatetime&#xff1a;带时区的时间 2、代替Date Instan…

解决npm,pnpm,yarn等安装electron超时等问题

我在安装electron的时候&#xff0c;出现了超时等等各种问题&#xff1a; &#xff08;RequestError: connect ETIMEDOUT 20.205.243.166:443&#xff09; npm yarn&#xff1a;Request Error: connect ETIMEDOUT 20.205.243.166:443 RequestError: socket hang up npm ER…

【排序】堆排序(C语言实现)

文章目录 前言1. 堆排序1.1 堆排序的思想1.2 堆排序的实现 2. 为什么向下调整而不是向上调整 前言 本章主要会讲堆排序的实现过程以及向上调整和向下调整的时间复杂度&#xff0c;在学习本章前&#xff0c;需要对堆、以及向上调整和向下调整有一个了解&#xff0c;如果不了解的…

vite+Vue3学习笔记(3)——界面设计

1 Element-plus 这是一个基于Vue3的组件库&#xff0c;能够快速构建界面样式。 官网链接&#xff1a; https://element-plus.gitee.io/zh-CN/guide/design.html 1.1 基础组件 1.1.1 安装 项目中的终端输入&#xff1a; npm install --save element-plus 1.1.2 引用 1.1.2.1…

VCG 角度弧度互转

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 VCG为我们提供了角度域弧度互相转换的函数vcg::math::ToRad与vcg::math::ToDeg,虽然两者的转换很简单,不过既然VCG已经我们提供了相关函数,这里还是用起来,下面是一个简单的演示代码。 二、实现代码 //VCG #in…

图论及其应用(匈牙利算法)---期末胡乱复习版

目录 题目知识点解题步骤小结题目 T1:从下图中给定的 M = {x1y4,x2y2,x3y1,x4y5},用 Hungariam算法【匈牙利算法】 求出图中的完美匹配,并写出步骤。 知识点 关于匈牙利算法: 需要注意的是,匈牙利算法仅适用于二分图,并且能够找到完美匹配。什么是交替路?从一个未匹…

vite 打包二级目录记录

1、react 配置 首先放一个简单粗暴的方法 使用 HashRouter&#xff0c; 缺点就是路由会带 # <HashRouter><App /> </HashRouter>使用 BrowserRouter 时需要进行下面配置 1、package 配置 {...other,"homepage": "/web" }2、vite.con…

BDD - Python Behave Retry 机制

BDD - Python Behave Retry 机制 引言Behave RetryBehave Retry 应用feature 文件创建 step 文件Retry运行 Behave 并生成 rerun 文件重新运行失败的场景 引言 在日常运行测试用例&#xff0c;有时因为环境不稳定造成一些测试用例跑失败了&#xff0c;如果能将这些失败的测试用…

计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!

一&#xff0c;使用 递归 计算 字符串 的 长度 1&#xff0c;题目描述 2&#xff0c;分析题目 Ⅰ&#xff0c;题目中要求除了函数的形参&#xff0c;函数中不能够使用多余的变量&#xff08;这是比较苛刻的要求&#xff09;。 Ⅱ&#xff0c;根据此&#xff0c;很自然的…

k3s-安装、卸载、证书过期x509

k3s-安装、卸载、证书过期 K3S 是轻量级的 Kubernetes。易于安装&#xff0c;仅需要 Kubernetes 内存的一半&#xff0c;所有组件都在一个小于 100 MB 的二进制文件中。 环境准备 # 配置yum源 yum install -y yum-utils yum-config-manager --add-repo http://mirrors.aliyu…

【PostgreSQL】表操作-修改表

【PostgreSQL】表操作快速链接 创建表及基础表命令 修改表 表权限 添加列 ALTER TABLE products ADD COLUMN description text;新列最初填充给定的任何默认值DEFAULT&#xff08;如果未指定子句&#xff0c;则为 null&#xff09;。 注意&#xff1a; 从 PostgreSQL 11 开始…

12.1 【Screen配置】概括

写在前面 在使用Screen服务前,我们需要对Screen进行配置或了解Screen配置信息,对我们的开发调试很重要。 一,配置文件介绍 graphics.conf 文件位于以下目录中: 源码目录:$QNX_TARGET/processor/usr/lib/graphics/platform 终端目录:/usr/lib/graphics/platform 其中处…