指数加权平均数

比如这儿有去年伦敦的每日温度,所以1月1号,温度是40华氏度,相当于4摄氏度。世界上大部分地区使用摄氏度,但是美国使用华氏度。在1月2号是9摄氏度等等。在年中的时候,一年365天,年中就是说,大概180天的样子,也就是5月末,温度是60华氏度,也就是15摄氏度等等。夏季温度转暖,然后冬季降温。

用数据作图,可以得到以下结果,起始日在1月份,这里是夏季初,这里是年末,相当于12月末。

这里是1月1号,年中接近夏季的时候,随后就是年末的数据,看起来有些杂乱,如果要计算趋势的话,也就是温度的局部平均值,或者说移动平均值。

要做的是,首先使\(v_{0} =0\),每天,需要使用0.9的加权数之前的数值加上当日温度的0.1倍,即\(v_{1} =0.9v_{0} + 0.1\theta_{1}\),所以这里是第一天的温度值。

第二天,又可以获得一个加权平均数,0.9乘以之前的值加上当日的温度0.1倍,即\(v_{2}= 0.9v_{1} + 0.1\theta_{2}\),以此类推。

第二天值加上第三日数据的0.1,如此往下。大体公式就是某天的\(v\)等于前一天\(v\)值的0.9加上当日温度的0.1。

如此计算,然后用红线作图的话,便得到这样的结果。

得到了移动平均值,每日温度的指数加权平均值。

看一下上面的公式,\(v_{t} = 0.9v_{t - 1} +0.1\theta_{t}\),把0.9这个常数变成\(\beta\),将之前的0.1变成\((1 - \beta)\),即\(v_{t} = \beta v_{t - 1} + (1 - \beta)\theta_{t}\)

由于以后要考虑的原因,在计算时可视\(v_{t}\)大概是\(\frac{1}{(1 -\beta)}\)的每日温度,如果\(\beta\)是0.9,会想,这是十天的平均值,也就是红线部分。

来试试别的,将\(\beta\)设置为接近1的一个值,比如0.98,计算\(\frac{1}{(1 - 0.98)} =50\),这就是粗略平均了一下,过去50天的温度,这时作图可以得到绿线。

这个高值\(\beta\)要注意几点,得到的曲线要平坦一些,原因在于多平均了几天的温度,所以这个曲线,波动更小,更加平坦,缺点是曲线进一步右移,因为现在平均的温度值更多,要平均更多的值,指数加权平均公式在温度变化时,适应地更缓慢一些,所以会出现一定延迟,因为当\(\beta=0.98\),相当于给前一天的值加了太多权重,只有0.02的权重给了当日的值,所以温度变化时,温度上下起伏,当\(\beta\) 较大时,指数加权平均值适应地更缓慢一些。

可以再换一个值试一试,如果\(\beta\)是另一个极端值,比如说0.5,根据右边的公式(\(\frac{1}{(1-\beta)}\)),这是平均了两天的温度。

作图运行后得到黄线。

由于仅平均了两天的温度,平均的数据太少,所以得到的曲线有更多的噪声,有可能出现异常值,但是这个曲线能够更快适应温度变化。

所以指数加权平均数经常被使用,再说一次,它在统计学中被称为指数加权移动平均值,就简称为指数加权平均数。通过调整这个参数(\(\beta\)),或者说后面的算法学习,会发现这是一个很重要的参数,可以取得稍微不同的效果,往往中间有某个值效果最好,\(\beta\)为中间值时得到的红色曲线,比起绿线和黄线更好地平均了温度。

神经网络优化篇:详解指数加权平均数(Exponentially weighted averages)的更多相关文章

  1. PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载   中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...

  2. 走向DBA[MSSQL篇] 详解游标

    原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...

  3. Scala进阶之路-Scala函数篇详解

    Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...

  4. CentOS 7 下编译安装lnmp之PHP篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.PHP下载 官网 http ...

  5. CentOS 7 下编译安装lnmp之MySQL篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.MySQL下载 MySQL ...

  6. CentOS 7 下编译安装lnmp之nginx篇详解

    一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:CentOS Linux release 7.5.1804 (Core),ip地址 192.168.1.168   ...

  7. Canal:同步mysql增量数据工具,一篇详解核心知识点

    老刘是一名即将找工作的研二学生,写博客一方面是总结大数据开发的知识点,一方面是希望能够帮助伙伴让自学从此不求人.由于老刘是自学大数据开发,博客中肯定会存在一些不足,还希望大家能够批评指正,让我们一起进 ...

  8. java提高篇-----详解java的四舍五入与保留位

    转载:http://blog.csdn.net/chenssy/article/details/12719811 四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么 ...

  9. 组件--Fragment(碎片)第二篇详解

    感觉之前看的还是不清楚,重新再研究了一次 Fragment常用的三个类: android.app.Fragment 主要用于定义Fragment android.app.FragmentManager ...

  10. JavaScript基础篇详解

    全部的数据类型: 基本数据类型: undefined Number Boolean null String 复杂数据类型: object ①Undefined: >>>声明但未初始化 ...

随机推荐

  1. fmt 库简介和示例【GO 基础】

    〇.关于 fmt fmt 标准库是 Go 语言标准库的一部分,提供了格式化字符串.输入输出等基本功能.通过 fmt 库,我们可以进行简单的格式化输出.读取用户输入.错误输出等操作. fmt 库实现了类 ...

  2. Go 复合类型之字典类型介绍

    Go 复合类型之字典类型介绍 目录 Go 复合类型之字典类型介绍 一.map类型介绍 1.1 什么是 map 类型? 1.2 map 类型特性 二.map 变量的声明和初始化 2.1 方法一:使用 m ...

  3. CF1534C

    题目简化和分析: 涉及算法:并查集. 为什么要使用并查集: 因为交换只能是列交换,并且保证不与别的重复 我们通过观察题目发现,某些列之间互为限制关系 即如果某列序列排序方式固定,则被限制的列也为固定的 ...

  4. Java-全网最详细反射

    Java-反射 前言 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象 ...

  5. k8s-1.23.6 安装部署文档(超详细)

    一.文档简介 作者:lanjiaxuan 邮箱:lanheader@163.com 博客地址:https://www.cnblogs.com/lanheader/ 更新时间:2022-09-09 二. ...

  6. sql删除进程

    使用一下语句杀掉进程 USE master go DECLARE @dbname VARCHAR(200) SET @dbname = 'xxxx' --要关闭进程的数据库名 DECLARE @sql ...

  7. springMVC---GET、POST原理

    对于 java 程序员来说,特别是遵循 restful 风格的公司,controller 层用得最多的就是 下面这几个注解了: @RequestMapping @PostMapping @GetMap ...

  8. 推理(Inference)与预测(Prediction)

    在机器学习的背景下,很多人似乎混淆了这两个术语.这篇文章将试图澄清我们所说的这两个词是什么意思,每一个词在哪里有用,以及它们是如何应用的.在这里,我将举几个例子来直观地理解两者之间的区别. 推理和预测 ...

  9. shell解析xml文档

    需要解析的源文件: /tmp/cameralist : <?xml version="1.0" encoding="UTF-8"?><came ...

  10. JZYZ作业好题

    文章目录 敲砖块 Circle 敲砖块 首先把砖块向左对齐, 这样选择第 ( i , j ) (i,j) (i,j)块的前提是第 ( i − 1 , j ) , ( i − 1 , j + 1 ) ( ...