zoukankan      html  css  js  c++  java
  • 指数加权移动平均

    指数加权移动平均

    以下内容来自 https://zhuanlan.zhihu.com/p/32335746,纯用作记录

    指数加权移动平均(Exponentially Weighted Moving Average),他是一种常用的序列处理方式。在(t)时刻,移动平均值公式是

    [v_t = eta v_{t-1} + (1 - eta) heta_t ]

    其中(v_t)(t)时刻的指数加权移动平均值,( heta_t)(t)时刻的真实值,(eta)是权重,是一个超参数。系数 (eta) 越小就说明对过去测量值的权重越低,也就是对当前抽样值的权重越高。这个时候移动平均估计值的时效性就越强(其实也就是更加拟合点分布的趋势)。反之,则会越弱。指数移动加权平均还有另一个特点就是能吸收瞬时突发的能力也就是平稳性(使得得到的曲线趋势能够更加平缓),如果对过去估计值的权重越低也就是 (eta) 越小,那么他的平稳性就差一点,反之平稳性会增强。

    我们使用 (eta=0.9) 来看看指数移动加权平均的原理是什么?

    [egin{split} v_{100}&=0.9v_{99}+0.1 heta_{100} \ v_{99}&=0.9v_{98}+0.1 heta_{99}\ v_{98}&=0.9v_{97}+0.1 heta_{98}\ cdots &= cdots end{split} ]

    我们将式子一步一步的带入得到最终式子:

    [egin{split} v_100 &= 0.1 imes 0.9 ^0 imes heta_{100}\ &+ 0.1 imes 0.9^1 imes heta_{99}\ & + 0.1 imes 0.9^2 heta_{98} \ &+ cdots\ & + 0.1 imes 0.9^{99} imes heta_{1} end{split} ]

    我们认为,上述操作,实际上是10天的平均结果,因为(0.9^9 imes 0.1)非常小了,后续的可以近似为0。当(eta)为其他值时,平均的天数可以通过以下公式进行计算

    [n_{average} = dfrac{1}{1 - eta} ]

    计算指数加权平均数只占单行数字的存储和内存。他的效率和资源的占有率会大大的减小。 所以在机器学习中大部分采用指数加权平均的方法计算平均值。

    指数加权移动平均的偏差修正

    如同推荐系统,指数加权移动平均也存在着冷启动的问题,举个例子:当(eta = 0.98) 的时候,我们假设(v_0 = 0, heta_1 = 40), 那么通过指数移动加权平均的公式可以得到(v_1 = 0.98 imes v_0 + 0.02 imes 40 = 8),这很明显不符合真实的结果,偏离真实值太远,因此需要进行修正。下面是带有偏差修正的指数加权移动平均

    [v_t = dfrac{eta v_{t-1} + ( 1- eta) imes heta_t}{1 - eta^t} ]

    我们假设(v_0 = 0, heta_1 = 40), 那么通过指数移动加权平均的公式可以得到(v_1 = (0.98 imes v_0 + 0.02 imes 40)/0.02^1 = 40),很明显经过修正后的结果比没有修正的结果好得多。当(t)足够大的时候,也就是说已经度过了冷启动阶段,(eta^t)的结果趋于0,分母趋于1,不再进行修正。

  • 相关阅读:
    python实现读取并显示图片的两种方法
    如何在jupyter中安装R
    FPGA设计千兆以太网MAC(3)——数据缓存及位宽转换模块设计与验证
    FPGA设计千兆以太网MAC(2)——以太网协议及设计规划
    FIFO深度计算
    【不定期更新】FPGA/IC岗位常见笔试面试题总结(基础知识)
    【原创】建立与保持时间裕量详细分析
    利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统
    【转载】泰勒展开式
    利用ZYNQ SOC快速打开算法验证通路(5)——system generator算法IP导入IP integrator
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/9844575.html
Copyright © 2011-2022 走看看