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

news2024/11/14 19:28:03

@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.coloradmin.cn/o/1360780.html

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

相关文章

FreeRTOS——内存管理知识总结及实战

1 freeRTOS动态创建与静态创建 动态创建&#xff1a;从FreeRTOS 管理的内存堆中申请创建对象所需的内存&#xff0c;在对象删除后&#xff0c; 这块内存释放回FreeRTOS管理的内存堆中 静态创建&#xff1a;需用户提供各种内存空间&#xff0c;并且使用静态方式占用的内存空间一…

Leetcode2965. 找出缺失和重复的数字

Every day a Leetcode 题目来源&#xff1a;2965. 找出缺失和重复的数字 解法1&#xff1a;哈希 用哈希表统计数组 grid 中各元素的出现次数&#xff0c;其中出现次数为 2 的记为 a。 统计数组 grid 的元素之和为 sum。 数组 grid 其中的值在 [1, n2] 范围内&#xff0c;…

CentOS 8 8.5.2111 网络在线安装系统 —— 筑梦之路

之前写过一篇关于centos 8 官方停止更新维护后解决yum源问题的文章&#xff1a; CentOS 8 停止维护后换可用yum源——筑梦之路_http://ftp.iij.ad.jp/pub/linux/centos-vault/8.5.21-CSDN博客 由于centos 8 dvd的镜像比较大&#xff0c;有时候我们根本不需要去下载一个10G以上…

Android两个APP之间跳转+手机图标修改

APP之间跳转 两个APP之间跳转同样使用Intent进行跳转&#xff0c;将需要跳转的APP都下载到手机中&#xff0c;通过主APP调用需要跳转的APP包名进行跳转。 最好在其中加上try-catch语句&#xff0c;当需要跳转的APP不存在时进行错误抓取。 代码如下&#xff1a; Intent mInten…

netcore 时间戳转换成时间日期格式

直接上代码&#xff1a; var date new DateTime(2013, 6, 2, 8, 0, 0); // 要转换的日期 var timestamp (long)(date.ToUniversalTime().Subtract(new DateTime(1970, 1, 1))).TotalMilliseconds; Console.WriteLine("Timestamp: " timestamp); return View(); …

KBDLT2.DLL文件丢失,软件或游戏无法启动,如何解决,试试这些方法,亲测有效

KBDLT2.DLL是Windows操作系统中的一个重要的动态链接库文件&#xff0c;它主要用于支持系统的键盘布局功能&#xff0c;尤其是与立陶宛语相关的键盘布局。 如果KBDLT2.DLL文件缺失或损坏&#xff0c;可能会导致一些问题。例如&#xff0c;当你试图使用立陶宛语键盘布局时&#…

【开源】轻松实现车牌检测与识别:yolov8+paddleocr【python源码+数据集】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

第7章-第1节-Java中的异常处理

1、异常Exception概述&#xff1a; 1&#xff09;、异常的概念&#xff1a; 现实生活中万物在发展和变化会出现各种各样不正常的现象。 例如&#xff1a;人的成长过程中会生病。 实际工作中&#xff0c;遇到的情况不可能是非常完美的。 比如&#xff1a;你写的某个模块&…

【算法系列 | 12】深入解析查找算法之—斐波那契查找

序言 心若有阳光&#xff0c;你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏&#xff0c;希望能帮助大家很好的了解算法。主要深入解析每个算法&#xff0c;从概念到示例。 我们一起努力&#xff0c;成为更好的自己&#xff01; 今天第12讲&#xff0c;讲…

spring模块(二)IOC容器之BeanFactory

在Spring中实现控制反转的是IoC容器 &#xff08;1&#xff09;IoC 不是一种技术&#xff0c;只是一种思想&#xff0c;一个重要的面向对象编程的法则&#xff0c;它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象&#xff0c;从…

AI与5G、IDC等成为数字经济的重要基础设施

AI与5G、IDC等已经成为数字经济的重要基础设施&#xff0c;它们的影响和作用不容忽视。随着技术的迅速发展&#xff0c;AI在各行各业都得到了广泛应用&#xff0c;并成为数字经济的核心驱动力之一。 首先&#xff0c;AI的兴起为数字经济带来了巨大的机遇。AI技术可以帮助企业从…

项目实战:数字孪生可视化大屏幕,实现生产过程实时监控

项目介绍 智慧工厂数据可视化系统&#xff0c;融合工业大数据、物联网、人工智能等各类信息技术&#xff0c;整合厂区现有信息系统的数据资源&#xff0c;实现数字孪生工厂、设备运维监测、智能管网监测、综合安防监测、便捷通行监测、能效管理监测、生产管理监测、仓储物流监…

Unity添加所有场景到BuildSettings

Unity添加所有场景到BuildSettings using UnityEngine; using UnityEditor; using System.Collections.Generic; using System.IO; public class Tools : Editor {[MenuItem("Tools/添加所有场景到BuildSettings")]static void CheckSceneSetting(){List<string&…

【Linux Shell】6. echo 命令

文章目录 【 1. 显示普通字符串 】【 2. 显示转义字符 】【 3. 显示变量 】【 4. 显示换行 】【 5. 显示不换行 】【 6. 显示命令执行结果 】 Shell 的 echo 指令用于字符串的输出。命令格式&#xff1a; echo string【 1. 显示普通字符串 】 #!/bin/bashecho "It is a …

【STM32】STM32学习笔记-ADC模数转换器(21)

00. 目录 文章目录 00. 目录01. ADC简介02. ADC主要特征03. 逐次逼近型ADC04. ADC功能描述05. ADC基本结构06. 输入通道07. 转换模式08. 触发控制09. 数据对齐10. 转换时间11. 校准12. 硬件电路13. 附录 01. ADC简介 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F1…

2023 hnust 湖南科技大学 大四上 计算机图形图像技术 课程 期末考试 复习资料

计算机图形图像技术复习资料 前言 改编自&#xff1a;https://blog.csdn.net/Liu_Xin233/article/details/135232531★重点&#xff0c;※补充github 考试题型 简述题&#xff08;10分4题&#xff0c;共40分&#xff09; 第1章的基本内容三维观察流水线中的基本概念与理解三…

Linux第19步_安装“Ubutun交叉编译工具链”

由于Ubuntu系统使用的GCC编译器&#xff0c;编译结果是X86文件&#xff0c;只能在X86上运行&#xff0c;不能在ARM上直接运行。因此&#xff0c;还要安装一个“Ubutun交叉编译工具链”&#xff0c;才可以在ARM上运行。 arm-none-linux-gnueabi-gcc是 Codesourcery 公司&#x…

计算机组成原理 指令流水线

文章目录 指令流水线指令流水线的概念流水线性能分析流水线的吞吐率流水线的加速比流水线的效率 影响流水线的因素结构相关 (资源冲突)数据相关 (数据冲突)控制相关 (控制冲突) 流水线分类超量流水线 指令流水线 #mermaid-svg-vSsJnNqZf24LgjVK {font-family:"trebuchet m…

Ubuntu20.04安装ROS2 Foxy

Ubuntu20.04安装ROS2 Foxy 实操安装 安装ROS2的教程在网上很多&#xff0c;但是我操作之后都有问题&#xff0c;大部分的问题是在 sudo apt update 时访问packages.ros.org无法成功&#xff0c;主要的原因是没有外网&#xff0c;而自己整一个外网代理又非常麻烦&#xff0c;所…

即插即用篇 | YOLOv8 Gradio 前端展示页面 | 支持 【分类】【检测】【分割】【关键点】 任务

分类任务效果 分割任务效果 检测任务效果 关键点任务效果 使用方法 Gradio 是一个开源库,旨在为机器学习模型提供快速且易于使用的网页界面。它允许开发者和研究人员轻松地为他们的模型创建交互式的演示,使得无论技术背景如何的人都可以方便地试用和理解这些模型。使用Gradi…