sheng的学习笔记-AI-公式-指数加权移动平均(EWMA)

 AI目录:sheng的学习笔记-AI目录-CSDN博客

 

基础知识

指数加权移动平均(Exponential Weighted Moving Average),是一种常用的序列处理方式

看例子,首先这是一年365天的温度散点图,以天数为横坐标,温度为纵坐标,你可以看见各个小点分布在图上,有一定的曲线趋势,但是并不明显

接着,如果我们要看出这个温度的变化趋势,很明显需要做一点处理,也即是我们的主题,用滑动平均算法处理。

计算方法

  1. 给定一个值v0,然后我们定义每一天的温度是a1,a2,a3·····
  2. 计算出v1,v2,v3····来代替每一天的温度,也就是上面的a1,a2,a3
  3. 计算方法是:v1 = v0 * 0.9 + a1 (1-0.9),v2= v1 0.9 + a2 (1-0.9),v3= v2 0.9 + a3 (1-0.9)···,也就是说,每一天的温度改变为前一天的v值 0.9 + 当天的温度 * 0.1,vt = v(t-1) * 0.9 + at * 0.1

把所有的v计算完之后画图,红线就是v的曲线:

 

 

v值就是指数加权平均数,整个过程就是指数加权平均算法,它很好的把一年的温度曲线给拟合了出来。把0.9抽象为β,总结为

vt = v(t-1) * β + at * (1-β)。

示例说明

β这个值代表:vt ≈ 1/(1 - β) 天的平均温度,例如:假设β等于0.9,1/(1 - β) 就等于10,也就是vt等于前十天的平均温度,这个说可能不太看得出来;假设把β值调大道接近1,例如,将β等于0.98,1/(1-β)=50,按照刚刚的说法也就是前50天的平均温度,然后求出v值画出曲线,如图所示:

绿线就是β等于0.98时候的曲线,可以明显看到绿线比红线的变化更迟,红线达到某一温度,绿线要过一阵子才能达到相同温度。因为绿线是前50天的平均温度,变化就会更加缓慢,而红线是最近十天的平均温度,只要最近十天的温度都是上升,红线很快就能跟着变化。所以直观的理解就是,vt是前1/(1-β)天的平均温度。
再看看另一个极端情况:β等于0.5,意味着vt≈最近两天的平均温度,曲线如下黄线:

和原本的温度很相似,但曲线的波动幅度也相当大!

使用场景

ai训练减少噪音:

训练的数据也会像上面的温度一样,具有不同的值,如果使用滑动平均模型,就可以使得整体数据变得更加平滑——这意味着数据的噪音会更少,而且不会出现异常值。但是同时β太大也会使得数据的曲线右移,和数据不拟合。需要不断尝试出一个β值,既可以拟合数据集,又可以减少噪音。

占用内存小
当你在模型中计算最近十天(有些情况下远大于十天)的平均值的时候,你需要在内存中加载这十天的数据然后进行计算,但是指数加权平均值约等于最近十天的平均值,而且根据vt = v(t-1) * β + at * (1-β),你只需要提供at这一天的数据,再加上v(t-1)的值和β值,相比起十天的数据这是相当小的数据量,同时占用更少的内存。

偏差修正

什么是偏差修正

当β等于0.98的时候,还是用回上面的温度例子,曲线实际上不是像绿线一样,而是像紫线:

在紫线刚刚开始的时候,曲线的值相当的低,这是因为在一开始的时候并没有50天(1/(1-β)为50)的数据,而是只有寥寥几天的数据,相当于少加了几十天的数据,所以vt的值很小,这和实际情况的差距是很大的,也就是出现的偏差

计算公式

TensorFlow采用修正偏差的方法:使用num_updates来动态设置β的大小

在数据迭代的前期,数据量比较少的时候,(1+num_updates)/(10+num_updates)的值比较小,使用这个值作为β来进行vt的计算,所以在迭代前期就会像上面的红线一样,和原数据更加接近。举个例子,当天数是第五天,β为0.98,那么(1+num_updates)/(10+num_updates) = 6/15 = 0.4,相当于最近1.6天的平均温度,而不是β=0.98时候的50天,这样子就做到了偏差修正

偏差问题导致的前期数据过低,但在后续的数据中会自动修复,如果数据量不是很少,可以放弃前面的数据,也没啥影响

参考文章:

指数加权移动平均法(EWMA)-CSDN博客

https://zhuanlan.zhihu.com/p/32335746 

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

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

相关文章

牛客AB5 | 点击消除

描述 牛牛拿到了一个字符串。 他每次“点击”,可以把字符串中相邻两个相同字母消除,例如,字符串"abbc"点击后可以生成"ac"。 但相同而不相邻、不相同的相邻字母都是不可以被消除的。 牛牛想把字符串变得尽可能短。他想知…

操作系统概念(黑皮书)阅读笔记

操作系统概念(黑皮书)阅读笔记 进程和内存管理部分章节 导论: 操作系统类似于政府,其本身不能实现任何有用功能,而是提供一个方便其他程序执行有用工作的环境 ​ 个人理解:os是government的作用&#xff0…

【学一点儿前端】本地或jenkins打包报错:getaddrinfo ENOTFOUND registry.nlark.com.

问题 今天jenkins打包一个项目,发现报错了 error An unexpected error occurred: "https://registry.nlark.com/xxxxxxxxxx.tgz: getaddrinfo ENOTFOUND registry.nlark.com". 先写解决方案 把yarn.lock文件里面的registry.nlark.com替换为registry.npmmi…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十八章 中断下文之tasklet

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

全球性“微软蓝屏”事件及其对网络安全和系统稳定性的深远影响

近日,一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件,不仅成为科技领域的热点新闻,更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件源于美国电脑安全技术公司“众击”提供的一个带有“缺陷”的软件更新,它如…

女人内裤怎么洗才是最干净?内衣裤洗衣机怎么样?哪个牌子更好?

最近刚好用到一款比较好用的洗内衣裤洗衣机!如果你也和我一样有洗内衣裤烦恼的,或者可以看看! 内衣裤作为贴身穿的衣服,我是不会把它和外衣一起清洗的,而家里面的大洗衣机已经担起了清洗外衣的工作! 朋友们…

.NetCore定时刷新第三方Token

在.NET Core中实现定时刷新第三方Token的功能,你可以使用多种方法,包括使用System.Threading.Timer、IHostedService(特别是用于ASP.NET Core应用),或者结合Quartz.NET等定时任务框架。以下我将介绍如何使用IHostedSer…

发票识别接口图片调用格式与python集成方式

企业员工在工作的过程中会接触到很多的发票,在报销前,需要将发票上的如发票代码、号码、日期、金额、校验码等全票面信息录入到报账系统中,如果一张一张手动去复制粘贴,将会耗费大量的人力、无力、时间成本,且人工手动…

JVM 内存分析工具 Memory Analyzer Tool(MAT)入门(一)

一、打开 jvisualvm (VisualVM 是一款集成了 JDK 命令行工具和轻量级剖析功能的可视化工具。 设计用于开发和生产。) 打开 jvisualvm.exe 工具会出现如下一些监控指标 二、VisualVM可以根据需要安装不同的插件,每个插件的关注点都不同&#x…

uniapp vue3 使用画布分享或者收藏功能

使用HBuilder X 开发小程序,大多数的画布插件很多都是vue2的写法,vue3的很少 我自己也试了很多个插件,但是有一些还是有问题,不好用 海报画板 - DCloud 插件市场 先将插件导入项目中 自己项目亲自用过,功能基本是完善…

谷粒商城-性能压测

1.压力测试 在项目上线前对其进行压力测试(以每个微服务为单元) 目的:找到系统能承载的最大负荷,找到其他测试方法更难发现的错误(两种类型:内存泄漏,并发与同步). 1.性能指标 响应时间(Response Time (RT)): 响应时间 指用户从客户端发起一个请求开始,到客户端接收到从服务…

python实现和mysql一起实现数据库的增删改查

要在 Python 中使用 MySQL 数据库进行增删改查(CRUD)操作,你可以使用 pymysql 库。以下是一些示例代码,展示如何实现这些操作。 首先,确保你已经安装了 pymysql。如果没有安装,可以通过以下命令安装&#…

543.二叉树的直径

给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 class Solution{// 全局变量int ans 0;public int diameterOf…

【第五天】HTTPS和HTTP有哪些区别,HTTPS的工作原理

HTTPS和HTTP的区别: 1.安全性: HTTP是明文传输协议,数据在传输的过程中不加密,容易被窃听和篡改。HTTPS通过使用SSL或TLS协议对数据进行加密,确保传输的数据在网络上是安全的,不容易被窃取和篡改。 2.加…

leetcode-104. 二叉树的最大深度

题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,n…

PyQt5之PyQt5 vs PySide6: 选择Python GUI框架的对比分析

PyQt5 vs PySide6: 选择Python GUI框架的对比分析 在Python世界中,当谈到创建图形用户界面(GUI)应用程序时,PyQt5和PySide6经常被提及。这两个框架都是基于强大的Qt库的Python绑定,但它们有着微妙的差异。本文将深入比较这两个框架,帮助您做出明智的选择。 背景简介 PyQt5: …

自动化测试 pytest 中 scope 限制 fixture使用范围!

导读 fixture 是 pytest 中一个非常重要的模块,可以让代码更加简洁。 fixture 的 autouse 为 True 可以自动化加载 fixture。 如果不想每条用例执行前都运行初始化方法(可能多个fixture)怎么办?可不可以只运行一次初始化方法? 答&#xf…

一招就能轻松解决猫咪浮毛?最新值得买的浮毛空气净化器汇总分享

那次逛街后去朋友家,她家猫哈基米特别热情,一开门就扑过来,朋友直接给了个大拥抱加亲亲。汗水和猫毛全粘身上了,看着都让人头皮痒。好多铲屎官都抱怨,就算天天梳毛,家里还是到处都是毛,毕竟家里…

简说是什么虚拟DOM (Virtual DOM )

前言 虚拟 DOM (Virtual DOM )这个概念相信大家都不陌生,从 React 到 Vue ,虚拟 DOM 为这两个框架都带来了跨平台的能力(React-Native 和 Weex)。因为很多人是在学习 React 的过程中接触到的虚拟 DOM &…

理解文件系统(上)

模拟实现文件库 创建文件以便理解 自己想实现的文件接口,进行模拟实现 模拟的头文件要准备的头文件 open接口的实现 write接口的实现fflush接口的实现 flose接口的实现 文件实现 stdio.h stdio.c test.c makefile 创建makefile 编译运行 执行后输出log.txt,看…