数学learning

目录

移动平均

简单移动平均

加权移动平均

指数移动平均

矩阵求导

 矩阵对标量求导 Matrix-by-scalar

标量对矩阵求导 Scalar-by-matrix

参考博客


移动平均

        优化算法里面会涉及到一个知识点:指数移动平均。

        但是为了知识的完整性,这里会将常见的移动平均全部过一遍

        首先移动平均法是根据时间序列资料逐渐推移,依次计算包含一定项数的时序平均数,以反映长期趋势的方法。当时间序列的数值由于受到周期变动和不规则变动的影响,起伏较大,不易显示出发展趋势时,可采用移动平均法,消除这些因素的影响,分析、预测序列的长期趋势由此可以看出移动平均是技术分析中一种分析时间序列的常用工具

        常见的移动平均包括:

  • 简单移动平均(SMA)
  • 加权移动平均(WMA) --加权平均
  • 指数移动平均(EMA) --指数平滑

简单移动平均

        首先举个例子若依次得到测定值(x_1, x_2, x_3, ..., x_n) 时,按顺序取一定个数所做的全部算术平均值。 这里假设按照三个区算术平均数,则移动平均值为:

\textup{}(\frac{x_1+x_2+x_3}{3}, \frac{x_2+x_3+x_4}{3}, \frac{x_3+x_4+x_5}{3}, ...)

        设观测序列为y_1, ..., y_T,取移动平均的项数N < T.一次简单移动平均值计算公式为:

M_t = \frac{1}{N}(y_t + y_{t-1} + ... + y_{t-N+1})\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1)

M_t = \frac{1}{N}(y_{t-1}+ ... + y_{t-N}) + \frac{1}{N}(y_t - y_{t-N})\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2)

M_t = M_{t - 1} + \frac{1}{N}(y_t - y_{t - N}) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (3)

        (1)式为简单移动平均值计算的定义式,但是我们发现由(1)式可以推出(2)式,我们可以把(2)式的括号打开,那么(2)式子中前面的累加和中的最大项会变成y_t,最小项会因为y_{t-N}相互抵消,重新变为y_{t-N},我们发现就是(1)式,很简单的一个变换。

        当预测目标的基本趋势是在某一水平面上下波动时,可用一次简单移动平均法建立预测模型:

        \hat{y} = M_t 利用最后N项求完的简单移动平均值作为预测的值。其预测标准误差为:

S = \sqrt{\frac{\sum_{t=N+1}^{T}(\hat{y_t } - y_t)^2}{T - N}}

        一般N的取值范围:5<=N<=200.当历史序列的基本趋势变化不大且序列中随机变动成分较多时,N的取值应较大一些。否则N的取值应小一些,在由确定的季节变动周期资料中,移动平均的项数应取周期长度。选择最佳N值的一个有效方法是,比较若干模型的预测误差。预测误差小的好。

        简单移动平均法只适合做近期预测,而且是预测目标的发展趋势变化不大的情况。 如果目标的发展趋势存在其它的变化,采用简单移动平均法就会产生较大的预测偏差和滞后。 

加权移动平均

        在简单移动平均公式中,每期数据在求平均时的作用是等同的。但是,每期数据所包含的信息量不一样,近期数据包含着更多关于未来情况的信心。因此,把各期数据等同看待是不尽合理的,应考虑各期数据的重要性对近期数据给予较大的权重,这就 是加权移动平均法的基本思想。 

        总结一句话就是加权移动平均法,是在简单移动平均法的基础上给每一项加上一个权值,公式如下:

M_t = \frac{w_1y_t+w_2y_{t-1}+...+w_Nt_{t-N+1}}{w_1+w_2+...+w_N} \ \ \ t\geq N

        在加权移动平均法中, wtwt 的选择,同样具有一定的经验性。一般的原则是:近期 数据的权数大,远期数据的权数小。至于大到什么程度和小到什么程度,则需要按照预 测者对序列的了解和分析来确定。 

指数移动平均

        一次移动平均实际上认为近 N期数据对未来值影响相同,都加权\frac{1}{N};而 N 期以前的数据对未来值没有影响,加权为 0。但是,二次及更高次移动平均数的权数却不是 \frac{1}{N},且次数越高,权数的结构越复杂,但永远保持对称的权数,即两端项权数小
        中间项权数大,不符合一般系统的动态性。一般说来历史数据对未来值的影响是随时间间隔的增长而递减的。所以,更切合实际的方法应是对各期观测值依时间顺序进行加权平均作为预测值。指数平滑法可满足这一要求,而且具有简单的递推形式。

        那么究竟什么是指数移动平均,指数移动平均(exponential moving average,EMA或EWMA)是以指数式递减加权的移动平均。各数值的加权影响力随时间而指数式递减,越近期的数据加权影响力越重,但较旧的数据也给予一定的加权值。参考吴恩达深度学习课程中的计算公式进行描述

设时刻t的实际数值为\theta _t, 时刻t的EMA为v_t,时刻t- 1的EMA为v_{t-1},计算时刻t\geqslant 2的指数移动平均公式为:

v_t = \beta v_{t-1} + (1 - \beta) \theta _t

  \beta为权重因子, 通常取值为接近于1的值,如0.9, 0.98, 0.99, 0.999等。\beta越小,过去过去累计值的权重越低,当前抽样值的权重越高,移动平均值的实时性就越强。反之 \beta 越大,吸收瞬时突发值的能力变强,平稳性更好

        v_t是如何表示指数移动平均的?

我们这里设\beta = 0.9, v_0 = 0

v_1 = 0.9v_0 + 0.1 \theta _1

v_2 = 0.9v_1 + 0.1 \theta _2

......

v_{t-2} = 0.9v_{t-3} + 0.1 \theta _{t-2}

v_{t-1} = 0.9v_{t-2} + 0.1 \theta _{t-1}

v_{t} = 0.9v_{t-1} + 0.1 \theta _{t}

逐层会带:

v_t = 0.1 * (\theta _t + 0.9 * \theta _{t-1} + 0.9^2 \theta _{t-2} + ... + 0.9^{t-1}\theta _1)

这里v_t实际上是对时刻t之前(包括t)实际数值的加权平均,实际数值的加权平均,时间离得越远,权重越小,而且是指数式递减的,所以又叫指数加权移动平均 / 指数衰减移动平均

与一般的加权平均相比,使用指数移动平均的好处在于:

  • 不需要保存前面所有时刻的实际数值,并且在计算v_t的过程中是逐步覆盖的,因此可以减少内存的占用
  • 在有些场景下,其实更符合实际情况的,例如股票价格,天气等,上一个时间步对当前时间步影响最大

        但是因为当 EMA 在初始化或者在开始计算的时候,它是有偏的,特别是在序列的开始阶段。这是由于 EMA 的初始值 (v_0) 通常被设置为 0 或者被设置为非常小的数,这将导致 EMA 在开始时偏向于较小的值,从而低估了真实的平均值。

        为了减少这种偏差,我们可以应用偏差修正。修正后的 EMA 定义如下:

\hat{v}_t = \frac{v_t}{1 - \beta^t}

        在这里,(t) 是时间步或迭代的次数,(\hat{v}_t) 是偏差校正后的 EMA 值。当 (t) 很小时,(\beta^t) 接近1,这样做可以显著提高修正后的 EMA 值,使其更接近实际的平均值。随着 (t) 的增加,(1 - \beta^t) 接近1,这意味着修正越来越小,当 (t) 足够大以后,EMA 的值就不再需要修正

下面是最最最重要的问题,权重因子如何确定

权重因子是指数移动平均计算中最关键的参数,如何确定权重因子的大小成为一个关键问题。下面重新推导指数移动平均公式,进一步理解指数移动平均的含义,从而确定权重因子的大小。

\beta = 0.9,求解v_{100}的表达式

        v_{100}指数移动平均值,本质上前100项数值的加权平均。这时我们考虑,到底需要平均多少项的数值。实际上,在计算当前项的指数移动平均值时,我们会加权平均,包含当前项的之前所有项的值。

        但是我们发现,权重随着指数系数的增加而减小,并趋近于0,例如0.9^{99}\approx 0,所以我们可以假设这一项后面的值后忽略不计,即我们假设存在一个阈值,当项的权重系数大于阈值时为有效项;当权重系数衰减到低于阈值则为无效项

\lim_{x\rightarrow 0}(1-x)^{\frac{1}{x}} = \frac{1}{e}

        这里的权重衰减阈值设为自然数的倒数为 \frac{1}{e}\approx 0.368 ,进一步说,当权重系数小于 \frac{1}{e} 时忽略当前项及之后项的加权值。权重因子的作用本质上是控制指数权重平均计算中有效项的数目,即指数平滑有效窗口的大小

        权重因子\beta可以表示为\beta = 1 - x,带入极限得\lim_{\beta \rightarrow 1} \beta ^ {\frac{1}{1-\beta}} = \frac{1}{e}

        我们关心的并不是权重因子的大小,而是指数移动平滑的步长大小,即权重系数\beta ^ T,其中 T 对应的数值,表示平滑窗口/周期的大小。

        所以我们很容易得得出\frac{1}{1-\beta}\approx T,怎么理解呢,因为我们设置了权重系数最小为\frac{1}{e},所以可以理解为\beta^T \geqslant \ \frac{1}{e} \approx lim_{\beta\rightarrow 1} \beta ^ {\frac{1}{1-\beta}}所以T \approx \frac{1}{1-\beta}就一定满足要求。

        通过老师分享得博客我们还发现,Beta 取值越小,序列 V 波动越大。因为我们平均的例子更少,因此结果与噪声数据更接近。随着 Beta 值越大,比如当 Beta = 0.98 时,我们得到的曲线会更加圆滑,但是该曲线有点向右偏移,因为我们取平均值的范围变得更大(beta = 0.98 时取值约为 50)。Beta = 0.9 时,在这两个极端间取得了很好的平衡。如下图所示:

矩阵求导

 矩阵对标量求导 Matrix-by-scalar

标量对矩阵求导 Scalar-by-matrix

看到了一个特别特别好的图,关于矩阵求导如下:

 这篇博客关于矩阵写的比较详细,我觉得一已经比较全面咯~

矩阵求导——学习笔记-CSDN博客

参考博客

指数移动平均EMA - 简书

矩阵求导常用公式_矩阵求导公式-CSDN博客

移动平均(Moving Average) - 知乎 (zhihu.com)

动量 | 机器之心 (jiqizhixin.com)

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

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

相关文章

MCU平台下一种简单的文件系统设计构想

本文介绍MCU平台下一种简单的文件系统设计构想。 在使用MCU的项目中&#xff0c;经常会涉及到一些数据的存储&#xff0c;受限于硬件&#xff0c;又不太可能直接上文件系统&#xff08;如FAT文件系统&#xff09;&#xff0c;直接指定存储地址&#xff0c;数据长度对数据进行读…

React antd如何实现<Upload>组件上传附件再次上传已清除附件缓存问题

最近遇到一个React上传组件的问题&#xff0c;即上传附件成功后&#xff0c;文件展示处仍然还有之前上传附件的缓存信息&#xff0c;需要解决的问题是&#xff0c;要把上一次上传的附件缓存在上传成功或者取消后&#xff0c;可以进行清除 经过一顿试错&#xff0c;终于解决了这…

SE考研真题总结(二)

接上条&#xff0c;今天继续更新~ SE考研真题总结&#xff08;一&#xff09;-CSDN博客文章浏览阅读340次&#xff0c;点赞6次&#xff0c;收藏11次。本帖开始分享考研真题中设计【软件工程】的部分&#xff0c;预计会出5期左右&#xff0c;敬请期待~https://blog.csdn.net/js…

EasyRecovery(数据恢复软件) 2024中文绿色无需激活版下载

EasyRecovery是一款功能强大且专业的数据恢复软件&#xff0c;软件能够对电脑误删的文件进行恢复&#xff0c;包括格式化硬盘是数据恢复、手机U盘数据恢复等&#xff0c;小编今天给大家带来的是根据官软件解压后直接使用。感兴趣的朋友快来下载使用吧。 EasyRecovery-2024mac最…

Pytorch-CNN轴承故障一维信号分类(二)

目录 前言 1 数据集制作与加载 1.1 导入数据 1.2 数据加载&#xff0c;训练数据、测试数据分组&#xff0c;数据分batch 2 CNN-2D分类模型和训练、评估 2.1 定义CNN-2d分类模型 2.2 定义模型参数 2.3 模型结构 2.4 模型训练 2.5 模型评估 3 CNN-1D分类模型和训练、评…

flink找不到隐式项

增加 import org.apache.flink.streaming.api.scala._ 即可

改进的A*算法的路径规划(2)

子节点优化选择策略 (1)子节点选择方式 为了找到从起始点到终点的路径&#xff0c;需定义一种可以选择后续节点的方式。在 A*算法中两种常见的方法为4-邻接(见图5-7(a) 和8-邻接(见图5-7(b)), 但考虑到 在复杂越野环境上&#xff0c;我们希望智能车辆允许更多的自由运动来更…

MSF学习

之前的渗透测试中 其实很少用到 cs msf 但是在实际内网的时候 可以发现 msf cs 都是很好用的 所以现在我来学习一下 msf的使用方法 kali自带msf https://www.cnblogs.com/bmjoker/p/10051014.html 使用 msfconsole 启动即可 首先就是最正常的木马生成 所以这里其实只需…

分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】

分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】 目录 分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现DBO-SVM蜣螂算法优化支持向量机的…

数理统计基础:参数估计与假设检验

在学习机器学习的过程中&#xff0c;我充分感受到概率与统计知识的重要性&#xff0c;熟悉相关概念思想对理解各种人工智能算法非常有意义&#xff0c;从而做到知其所以然。因此打算写这篇笔记&#xff0c;先好好梳理一下参数估计与假设检验的相关内容。 1 总体梳理 先从整体结…

串口通信(4)-C#串口通信入门实例

本文通过实例讲解C#串口通信。 入门实例设计一个串口助手&#xff0c;能够很好的涵盖串口要点的使用。 目录 一、成品图 二、界面文件 三、后台代码 四、实例中要点 一、成品图 如下&#xff1a; 实现的过程 创建winform项目&#xff0c;将Form1文件的名称改为MainForm&…

Windows汇编调用printf

VS2022 汇编 项目右键 生成依赖项 生成自定义 勾选masm 链接器 高级 入口点 main X86 .686 .model flat,stdcall option casemap:none includelib ucrt.lib includelib legacy_stdio_definitions.libEXTERN printf:proc.data szFormat db %s,0 szStr db hello,0.code main…

关于职场伪勤奋

前段时间看了一些关于勤奋学习、职场成长类的书籍&#xff0c;就在思考勤奋学习和职场的关系时&#xff0c;结合个人的理解&#xff0c;我定义了一种勤奋叫职场“伪勤奋”。那关于职场“伪勤奋”的定义和理解&#xff0c;与大家分享&#xff1a; 1、选择性任务完成 伪勤奋特征…

vue 图片等比例缩放上传

需求&#xff1a;上传图片之前按比例缩小图片分辨率&#xff0c;宽高不超过1920不处理图片&#xff0c;宽高超过1920则缩小图片分辨率&#xff0c;如果是一张图片请参考这篇博客&#xff1a;js实现图片压缩、分辨率等比例缩放 我根据这篇博主的分享&#xff0c;写下了我的循环上…

HarmonyOS使用Web组件

Web组件的使用 1 概述 相信大家都遇到过这样的场景&#xff0c;有时候我们点击应用的页面&#xff0c;会跳转到一个类似浏览器加载的页面&#xff0c;加载完成后&#xff0c;才显示这个页面的具体内容&#xff0c;这个加载和显示网页的过程通常都是浏览器的任务。 ArkUI为我…

chatGPT 国内版,嵌入midjourney AI创作工具

聊天GPT国内入口,免切网直达,可直接多语言对话,操作简单,无需复杂注册,智能高效,即刻使用.可以用作个人助理,学习助理,智能创作、新媒体文案创作、智能创作等各种应用场景! 地址&#xff1a; https://ai.wboat.cn/

【51单片机系列】直流电机使用

本文是关于直流电机使用的相关介绍。 文章目录 一、直流电机介绍二、ULN2003芯片介绍三、在proteus中仿真实现对电机的驱动 51单片机的应用中&#xff0c;电机控制方面的应用也很多。在学习直流电机(PWM)之前&#xff0c;先使用GPIO控制电机的正反转和停止。但不能直接使用GPIO…

06 python 文件基础操作

6.1 .1文件读取操作 演示对文件的读取 # 打开文件 import timef open(02_word.txt, r, encoding"UTF-8") print(type(f))# #读取文件 - read() # print(f读取10个字节的结果{f.read(10)}) # print(f读取全部字节的结果{f.read()})# #读取文件 - readLines() # lines…

面试官:说说你对 linux 用户管理的理解?相关的命令有哪些?

面试官&#xff1a;说说你对 linux 用户管理的理解&#xff1f;相关的命令有哪些&#xff1f; 一、是什么 Linux是一个多用户的系统&#xff0c;允许使用者在系统上通过规划不同类型、不同层级的用户&#xff0c;并公平地分配系统资源与工作环境 而与 Windows 系统最大的不同…

基于MyBatis二级缓存深入装饰器模式

视频地址 学习文档 文章目录 一、示意代码二、装饰器三、经典案例—MyBatis二级缓存1、Cache 标准定义2、PerpetualCache 基础实现3、增强实现3-1、ScheduledCache3-2、LruCache 先来说说我对装饰器理解&#xff1a;当你有一个基础功能的代码&#xff0c;但你想在不改变原来代…