精华内容
下载资源
问答
  • 指数加权平均
    千次阅读
    2021-05-20 10:36:28

    定义

    来自维基百科

    指数移动平均(exponential moving average,EMA或EWMA)是以指数式递减加权的移动平均。各数值的加权影响力随时间而指数式递减,越近期的数据加权影响力越重,但较旧的数据也给予一定的加权值

    设时刻 t {t} t的实际数值为 θ t \theta_{t} θt, 时刻 t t t的EMA为 v t v_{t} vt,时刻 t − 1 {t-1} t1的EMA为 v t − 1 v_{t-1} vt1,计算时刻 t ≥ 2 {t≥2} t2的指数加权平均公式为:

    v t = β v t − 1 + ( 1 − β ) θ t v_{t}=\beta v_{t-1}+(1-\beta) \theta_{t} vt=βvt1+(1β)θt

    β \beta β 是可调节的参数,处于0-1之间,一般大于0.5

    推导

    一般情况下计算截至时刻 t t t的平均值:

    s t = θ 1 + θ 2 + … + θ t t \mathrm{s}_{\mathrm{t}}=\frac{\theta_{1}+\theta_{2}+\ldots+\theta_{\mathrm{t}}}{\mathrm{t}} st=tθ1+θ2++θt

    v t v_{t} vt是如何表示指数加权移动平均值的呢?

    假设 β = 0.9 \beta=0.9 β=0.9 v 0 = 0 v_{0}=0 v0=0

    v t = 0.9 v t − 1 + 0.1 θ t v_{t}=0.9v_{t-1}+0.1\theta_{t} vt=0.9vt1+0.1θt

    v t − 1 = 0.9 v t − 2 + 0.1 θ t − 1 v_{t-1}=0.9v_{t-2}+0.1\theta_{t-1} vt1=0.9vt2+0.1θt1

    v t − 2 = 0.9 v t − 3 + 0.1 θ t − 1 v_{t-2}=0.9v_{t-3}+0.1\theta_{t-1} vt2=0.9vt3+0.1θt1
    . . . ... ...
    v 1 = 0.9 v 0 + 0.1 θ 1 v_{1}=0.9v_{0}+0.1\theta_{1} v1=0.9v0+0.1θ1

    逐层向上代入:

    v t = 0.1 ∗ ( θ t + 0.9 ∗ θ t − 1 + 0. 9 2 θ t − 2 + . . . + 0. 9 t − 1 θ 1 ) v_{t}=0.1*(\theta_{t} + 0.9*\theta_{t-1}+0.9^2\theta_{t-2}+{...}+0.9^{t-1}\theta_{1}) vt=0.1(θt+0.9θt1+0.92θt2+...+0.9t1θ1)

    这里 v t v_{t} vt实际上是对时刻 t {t} t之前(包括 t {t} t)实际数值的加权平均,时间越近,权重越大,而且是指数式的,所以叫做指数加权平均。

    意义

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

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

    偏差修正

    当假设 v 0 = 0 v_{0}=0 v0=0时,刚开始的几个时间步的 v t v_{t} vt的数值是非常小的,因为缺乏足够多的前面时刻的数据。

    v 1 = 0.1 θ 1 v_{1}=0.1\theta_{1} v1=0.1θ1
    v 2 = 0.1 ∗ 0.9 ∗ θ 1 + 0.1 θ 2 v_{2}=0.1*0.9*\theta_{1} + 0.1\theta_{2} v2=0.10.9θ1+0.1θ2

    t = 1 {t=1} t=1, t = 2 {t=2} t=2的平均值 s 1 s_{1} s1, s 2 s_{2} s2相差非常大,因此需要加入偏差修正项,使得:

    v t = v t 1 − β t v_{t} = \frac{v_{t}}{1-\beta^t} vt=1βtvt

    随着时间步 t {t} t增大,修正项 1 − β t {1-\beta^t} 1βt趋近于0

    参考

    1. 吴恩达深度学习课程(改善深层神经网络:超参数调试、正则化以及优化小节)
    2. 维基百科定义
    更多相关内容
  • matlab开发-使用指数加权移动平均值的估计值。用指数加权移动平均法估计投资组合的风险价值。
  • 指数加权平均

    2019-11-03 19:05:29
    指数加权平均(exponentially weighted averges),也叫指数加权移动平均,是一种常用的序列数据处理方式。 它的计算公式如下: 其中, θ_t:为第 t 天的实际观察值, V_t: 是要代替θ_t的估计...

    目录

     

    1 . 什么是指数加权平均?

    2 . 为什么在优化算法中使用指数加权平均?

    3 . β 如何选择?


     

    1 . 什么是指数加权平均?

    指数加权平均(exponentially weighted averges),也叫指数加权移动平均,是一种常用的序列数据处理方式。

    它的计算公式如下:

    其中,

    • θ_t:为第 t 天的实际观察值,
    • V_t: 是要代替 θ_t的估计值,也就是第 t 天的指数加权平均值,
    • β: 为 V_{t-1}的权重,是可调节的超参。( 0 < β < 1 )

    例如:

    我们有这样一组气温数据,图中横轴为一年中的第几天,纵轴为气温:

    直接看上面的数据图会发现噪音很多,

    这时,我们可以用 指数加权平均 来提取这组数据的趋势,

    按照前面的公式计算:

    这里先设置 β = 0.9,首先初始化 V_0 = 0,然后计算出每个 V_t:

    将计算后得到的 V_t表示出来,就得到红色线的数值:

    可以看出,红色的数据比蓝色的原数据更加平滑,少了很多噪音,并且刻画了原数据的趋势

    指数加权平均,作为原数据的估计值,有以下优点:

    1. 抚平短期波动,起到了平滑的作用,

    2. 还能够将长线趋势或周期趋势显现出来

     

    所以应用比较广泛,在处理统计数据时,在股价等时间序列数据中,CTR 预估中,美团外卖的收入监控报警系统中的 hot-winter 异常点平滑,深度学习的优化算法中都有应用。

    2 . 为什么在优化算法中使用指数加权平均?

    2. 为什么在优化算法中使用指数加权平均

    上面提到了一些 指数加权平均 的应用,这里我们着重看一下在优化算法中的作用。

    以 Momentum 梯度下降法为例,

    Momentum 梯度下降法,就是计算了梯度的指数加权平均数,并以此来更新权重,它的运行速度几乎总是快于标准的梯度下降算法

    这是为什么呢?

    让我们来看一下这个图,

    例如这就是我们要优化的成本函数的形状,图中红点就代表我们要达到的最小值的位置,
    假设我们从左下角这里出发开始用梯度下降法,那么蓝色曲线就是一步一步迭代,一步一步向最小值靠近的轨迹。

    可以看出这种上下波动,减慢了梯度下降法的速度,而且无法使用更大的学习率,因为如果用较大的学习率,可能会偏离函数的范围。

    如果有一种方法,可以使得在纵轴上,学习得慢一点,减少这些摆动,但是在横轴上,学习得快一些,快速地从左向右移移向红点最小值,那么训练的速度就可以加快很多。

    这个方法就是动量 Momentum 梯度下降法,它在每次计算梯度的迭代中,对 dw 和 db 使用了指数加权平均法的思想

    这样我们就可以得到如图红色线的轨迹:

    可以看到:


    纵轴方向,平均过程中正负摆动相互抵消,平均值接近于零,摆动变小,学习放慢。
    横轴方向,因为所有的微分都指向横轴方向,因此平均值仍然较大,向最小值运动更快了。
    在抵达最小值的路上减少了摆动,加快了训练速度。

     

     

    3 . β 如何选择?

    根据前面的计算式子:

    将 V_{100}展开得到:

    这里可以看出,V_t是对每天温度的加权平均,之所以称之为指数加权,是因为加权系数是随着时间以指数形式递减的,时间越靠近,权重越大,越靠前,权重越小。

    再来看下面三种情况:

    当 β = 0.9 时,指数加权平均最后的结果如图红色线所示,代表的是最近 10 天的平均温度值;
    当 β = 0.98 时,指结果如图绿色线所示,代表的是最近 50 天的平均温度值;
    当 β = 0.5 时,结果如下图黄色线所示,代表的是最近 2 天的平均温度值;

    β 越小,噪音越多,虽然能够很快的适应温度的变化,但是更容易出现奇异值。

    β 越大,得到的曲线越平坦,因为多平均了几天的温度,这个曲线的波动更小。
    但有个缺点是,因为只有 0.02 的权重给了当天的值,而之前的数值权重占了 0.98 ,
    曲线进一步右移,在温度变化时就会适应地更缓慢一些,会出现一定延迟。

    通过上面的内容可知,β 也是一个很重要的超参数,不同的值有不同的效果,需要调节来达到最佳效果,一般 0.9 的效果就很好

    展开全文
  • 指数加权平均

    2020-08-07 15:02:57
    1.什么是指数加权平均指数加权平均也叫指数加权移动平均,是一种常见的序列数据处理方式。计算公式如下: 其中, θ_t:为第 t 天的实际观察值, V_t: 是要代替 θ_t 的估计值,也就是第 t 天的指数加权...

    1.什么是指数加权平均?

    指数加权平均也叫指数加权移动平均,是一种常见的序列数据处理方式。计算公式如下:

    其中,

    • θ_t:为第 t 天的实际观察值,
    • V_t: 是要代替 θ_t 的估计值,也就是第 t 天的指数加权平均值,
    • β: 为 V_{t-1} 的权重,是可调节的超参。( 0 < β < 1 )

    我们有这样一组气温数据,图中横轴为一年中的第几天,纵轴为气温:

    其中观察该图发现有许多不规则的噪声,这时我们可以用指数加权平均来提取这组数据的相关趋势,按照上面公式可以列如下:

    将计算后得到的 V_t 表示出来,就得到红色线的数值:

    可以看出,红色的数据比蓝色的原数据更加平滑,少了很多噪音,并且刻画了原数据的趋势。

    指数加权平均,作为原数据的估计值,可以抚平短期波动,起到了平滑的作用。

    2. 为什么在优化算法中使用指数加权平均

    上面提到了一些 指数加权平均 的应用,这里我们着重看一下在优化算法中的作用。

    以 Momentum 梯度下降法为例,

    Momentum 梯度下降法,就是计算了梯度的指数加权平均数,并以此来更新权重,它的运行速度几乎总是快于标准的梯度下降算法

    这是为什么呢?

    让我们来看一下这个图,

    例如这就是我们要优化的成本函数的形状,图中红点就代表我们要达到的最小值的位置,
    假设我们从左下角这里出发开始用梯度下降法,那么蓝色曲线就是一步一步迭代,一步一步向最小值靠近的轨迹。

    可以看出这种上下波动,减慢了梯度下降法的速度,而且无法使用更大的学习率,因为如果用较大的学习率,可能会偏离函数的范围。

    如果有一种方法,可以使得在纵轴上,学习得慢一点,减少这些摆动,但是在横轴上,学习得快一些,快速地从左向右移移向红点最小值,那么训练的速度就可以加快很多。

    这个方法就是动量 Momentum 梯度下降法,它在每次计算梯度的迭代中,对 dw 和 db 使用了指数加权平均法的思想。

    即使用了指数加权平均来代替权重weight和偏置bias 。

    这样我们就可以得到如图红色线的轨迹:

    可以看到:

    纵轴方向,平均过程中正负摆动相互抵消,平均值接近于零,摆动变小,学习放慢。

    横轴方向,因为所有的微分都指向横轴方向,因此平均值仍然较大,向最小值运动更快了。

    在抵达最小值的路上减少了摆动,加快了训练速度。

    3.β值如何选择?

    根据前面的计算式子:

    将V_{100} 展开得到:

    这里可以看出,V_t 是对每天温度的加权平均,之所以称之为指数加权,是因为加权系数是随着时间以指数形式递减的,时间越靠近,权重越大,越靠前,权重越小。

    再来看下面三种情况:

    当 β = 0.9 时,指数加权平均最后的结果如图红色线所示,代表的是最近 10 天的平均温度值;
    当 β = 0.98 时,指结果如图绿色线所示,代表的是最近 50 天的平均温度值;
    当 β = 0.5 时,结果如下图黄色线所示,代表的是最近 2 天的平均温度值;

    β 越小,噪音越多,虽然能够很快的适应温度的变化,但是更容易出现奇异值。

    β 越大,得到的曲线越平坦,因为多平均了几天的温度,这个曲线的波动更小。
    但有个缺点是,因为只有 0.02 的权重给了当天的值,而之前的数值权重占了 0.98 ,
    曲线进一步右移,在温度变化时就会适应地更缓慢一些,会出现一定延迟。

    通过上面的内容可知,β 也是一个很重要的超参数,不同的值有不同的效果,需要调节来达到最佳效果,一般 0.9 的效果就很好

     

    基于以上了解了指数加权平均后,考虑与原始的梯度下降进行对比比较,进而考虑深度学习中常见的优化算法,如

    深度学习--优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam) - 郭耀华 - 博客园​www.cnblogs.com

    等进行学习分析。考虑现社区内讨论DP-SGD和DP-Adam进行创新点挖掘。

    展开全文
  • 1. 指数加权平均 指数加权平均是深度学习众多优化算法的理论基础,包括Momentum、RMSprop、Adam等,在介绍这些优化算法前,有必要对指数加权平均(exponentially weighted averages)做一个简单的介绍,以期对后续的...

    1. 指数加权平均
          指数加权平均是深度学习众多优化算法的理论基础,包括Momentum、RMSprop、Adam等,在介绍这些优化算法前,有必要对指数加权平均(exponentially weighted averages)做一个简单的介绍,以期对后续的优化算法的原理有所知晓。

           何为指数加权平均那? 

           现在想求一段时间内的平均温度,给定一段时间的温度序列 ,加和平均结果为 ,每天温度的权重都是相同的。进一步,若要根据平均气温预测明天的温度,显然昨天的温度应该较30天之前的温度权重大一些,因为越早的日期对于预测明天温度所起到的作用越小,这符合我们的常规思维,因此给予每天的温度不同的权重,这就引出了统计学中常用的一种平均方法——指数加权平均,平均温度预测的指数加权平均形式如下:

           

     

    可以看到,随着日期的向后推移,温度的权重以单位 \beta 进行衰减。 当 \beta 为 0 时,平均气温的计算完全忽略历史信息,随着 \beta 由 0 到 1 不断增大,历史温度的权重衰减速度不断降低。

          在吴恩达的深度学习课程中,英国每日温度以及每日温度的指数加权平均示意图如下:

    图 1  β 为0.98(绿线),0.9(红线)和0.02(黄线)时的指数加权平均值

         

          从上图分析可得,当 β 为 0.98 时,指数加权平均减慢了对历史温度的衰减,因而纳入了更多的历史温度信息,导致绿线在上升阶段的值小于红线,且最高点滞后于红线;当 β 为 0.9 时,似乎时根据历史温度预测明天温度的最恰当的取值;当 β 为 0.02时,历史温度信息几乎没有纳入指数加权平均的计算中,更注重最近几天的温度。随着 β 值的不断减小,指数加权平均线的平滑度在不断下降(时效性增强)。

     

    2. 指数加权平均的偏差修正
           实际上,在图2中,当 β 取0.98时,得到的曲线并非绿色,而是下图的紫色曲线:

    图 2  β 为0.98的实际曲线(紫线)

           紫色曲线的值在开始上升的初始阶段明显小于绿色曲线,这是什么原因那? 通过指数加权的递推公式可以发现,最初几天的温度预测值不足历史温度的0.02,因而在预测前期会有一定的偏差。因此,引入偏差修正公式如下:

            

           通过此修正公式,开始几天的平均温度预测值可以接近实际值,随着  的增大,偏差修正公式会逐渐还原为修正之前的指数加权平均公式。

            在基于指数加权平均的深度学习优化算法中, 如果你对初期的偏差修正比较重视,则可采用修正的指数加权平均公式,如果对初期的偏差修正不是特别在意,可以选择马虎的度过初始阶段。总之,如果你关心初始时期的偏差,修正偏差能帮助你在早期获得更好的估测。
     

    tensorflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模型,他使用指数衰减来计算变量的移动平均值。

    tf.train.ExponentialMovingAverage.__init__(self, decay, num_updates=None, zero_debias=False, name="ExponentialMovingAverage"):
    decay是衰减率

    num_updates是ExponentialMovingAverage提供用来动态设置decay的参数,当初始化时提供了参数,即不为none时,每次的衰减率是:

    min { decay , ( 1 + num_updates ) / ( 10 + num_updates ) }

    apply()方法添加了训练变量的影子副本,并保持了其影子副本中训练变量的移动平均值操作。在每次训练之后调用此操作,更新移动平均值。

    average()和average_name()方法可以获取影子变量及其名称。

    在创建ExponentialMovingAverage对象时,需指定衰减率(decay),用于控制模型的更新速度。影子变量的初始值与训练变量的初始值相同。当运行变量更新时,每个影子变量都会更新为:
    shadow_variable = decay * shadow_variable + (1 - decay) * variable

     

    滑动平均的原理理解

    # -*- coding: utf-8 -*-
    """
    @author: tz_zs
    滑动平均模型
    """
    import tensorflow as tf
     
    # 定义一个变量,用于滑动平均计算、
    v1 = tf.Variable(0, dtype=tf.float32)
    # 定义一个变量step,表示迭代的轮数,用于动态控制衰减率
    step = tf.Variable(0, trainable=False)
     
    # 定义滑动平均的对象
    ema = tf.train.ExponentialMovingAverage(0.99, step)
     
    # 定义执行保持滑动平均的操作,  参数为一个列表格式
    maintain_average_op = ema.apply([v1])
     
    with tf.Session() as sess:
        #  初始化所有变量
        init_op = tf.global_variables_initializer()
        sess.run(init_op)
     
        # 通过ema.average(v1)获取滑动平均之后变量的取值,
        # print(sess.run(v1))  # 0.0
        # print(sess.run([ema.average_name(v1), ema.average(v1)]))  # [None, 0.0]
        print(sess.run([v1, ema.average(v1)]))  # [0.0, 0.0]
     
        # 更新变量v1的值为5
        sess.run(tf.assign(v1, 5))
        # 更新v1的滑动平均值,衰减率 min { decay , ( 1 + num_updates ) / ( 10 + num_updates ) }=0.1
        # 所以v1的滑动平均会被更新为 0.1*0 + 0.9*5 = 4.5
        sess.run(maintain_average_op)
        # print(sess.run(v1))  # 5.0
        # print(sess.run([ema.average_name(v1), ema.average(v1)]))  # [None, 4.5]
        print(sess.run([v1, ema.average(v1)]))  # [5.0, 4.5]
     
        # 更新step的值为10000。模拟迭代轮数
        sess.run(tf.assign(step, 10000))
        # 跟新v1的值为10
        sess.run(tf.assign(v1, 10))
        # 更新v1的滑动平均值。衰减率为 min { decay , ( 1 + num_updates ) / ( 10 + num_updates ) }得到 0.99
        # 所以v1的滑动平均值会被更新为 0.99*4.5 + 0.01*10 = 4.555
        sess.run(maintain_average_op)
        print(sess.run([v1, ema.average(v1)]))  # [10.0, 4.5549998]
     
        # 再次更新滑动平均值,将得到 0.99*4.555 + 0.01*10 =4.60945
        sess.run(maintain_average_op)
        print(sess.run([v1, ema.average(v1)]))  # [10.0, 4.6094499]
    ————————————————
    
    # -*- coding: utf-8 -*-
    """
    @author: tz_zs
    """
    import tensorflow as tf
     
    v1 = tf.Variable(10, dtype=tf.float32, name="v")
     
    for variables in tf.global_variables():  # all_variables弃用了
        print(variables)  # <tf.Variable 'v:0' shape=() dtype=float32_ref>
     
    ema = tf.train.ExponentialMovingAverage(0.99)
    print(ema)  # <tensorflow.python.training.moving_averages.ExponentialMovingAverage object at 0x00000218AE5720F0>
     
    maintain_averages_op = ema.apply(tf.global_variables())
    for variables in tf.global_variables():
        print(variables)  # <tf.Variable 'v:0' shape=() dtype=float32_ref>
        # <tf.Variable 'v/ExponentialMovingAverage:0' shape=() dtype=float32_ref>
     
    with tf.Session() as sess:
        tf.global_variables_initializer().run()
        sess.run(tf.assign(v1, 1))
        sess.run(maintain_averages_op)
    
    ————————————————
    
    # -*- coding: utf-8 -*-
    """
    滑动平均值的存储和加载(持久化)
    """
    import tensorflow as tf
     
    v1 = tf.Variable(10, dtype=tf.float32, name="v1")
     
    for variables in tf.global_variables():  # all_variables弃用了
        print(variables)  # <tf.Variable 'v1:0' shape=() dtype=float32_ref>
     
    ema = tf.train.ExponentialMovingAverage(0.99)
    print(ema)  # <tensorflow.python.training.moving_averages.ExponentialMovingAverage object at 0x00000218AE5720F0>
     
    maintain_averages_op = ema.apply(tf.global_variables())
    for variables in tf.global_variables():
        print(variables)  # <tf.Variable 'v1:0' shape=() dtype=float32_ref>
        # <tf.Variable 'v1/ExponentialMovingAverage:0' shape=() dtype=float32_ref>
     
    saver = tf.train.Saver()
    print(saver)  # <tensorflow.python.training.saver.Saver object at 0x0000026B7E591940>
    with tf.Session() as sess:
        tf.global_variables_initializer().run()
        sess.run(tf.assign(v1, 1))
        sess.run(maintain_averages_op)
        print(sess.run([v1, ema.average(v1)]))  # [1.0, 9.9099998]
     
        print(saver.save(sess, "/path/to/model.ckpt"))  # 持久化存储____会返回路径 /path/to/model.ckpt
    #################################################################################################
    print("#####" * 10)
    print("加载")
    #################################################################################################
    var2 = tf.Variable(0, dtype=tf.float32, name="v2")  # <tf.Variable 'v2:0' shape=() dtype=float32_ref>
    print(var2)
    saver2 = tf.train.Saver({"v1/ExponentialMovingAverage": var2})
    with tf.Session() as sess2:
        saver2.restore(sess2, "/path/to/model.ckpt")
        print(sess2.run(var2))  # 9.91 所以,成功加载了v1的滑动平均值
    ————————————————
    

    附录2:移动平均法相关知识(转)
    来源地址:http://wiki.mbalib.com/wiki/%E7%A7%BB%E5%8A%A8%E5%B9%B3%E5%9D%87%E6%B3%95
     移动平均法又称滑动平均法、滑动平均模型法(Moving average,MA)

    什么是移动平均法?
       移动平均法是用一组最近的实际数据值来预测未来一期或几期内公司产品的需求量、公司产能等的一种常用方法。移动平均法适用于即期预测。当产品需求既不快速增长也不快速下降,且不存在季节性因素时,移动平均法能有效地消除预测中的随机波动,是非常有用的。移动平均法根据预测时使用的各元素的权重不同
     
      移动平均法是一种简单平滑预测技术,它的基本思想是:根据时间序列资料、逐项推移,依次计算包含一定项数的序时平均值,以反映长期趋势的方法。因此,当时间序列的数值由于受周期变动和随机波动的影响,起伏较大,不易显示出事件的发展趋势时,使用移动平均法可以消除这些因素的影响,显示出事件的发展方向与趋势(即趋势线),然后依趋势线分析预测序列的长期趋势。

    移动平均法的种类
      移动平均法可以分为:简单移动平均和 加权移动平均 。
     
      一、简单移动平均法
     
       简单移动平均的各元素的权重都相等。简单的移动平均的计算公式如下:  Ft =( At-1 + At-2 + At-3 + … + At-n ) /n 式中,
     
       · Ft-- 对下一期的预测值;
     
       · n-- 移动平均的时期个数;
     
       · At-1-- 前期实际值;
     
       · At-2 , At-3 和 At-n 分别表示前两期、前三期直至前 n 期的实际值。
     
      二、加权移动平均法
     
      加权移动平均 给固定跨越期限内的每个变量值以不同的权重。其原理是:历史各期产品需求的数据信息对预测未来期内的需求量的作用是不一样的。除了以 n 为周期的周期性变化外,远离目标期的变量值的影响力相对较低,故应给予较低的权重。 加权移动平均法 的计算公式如下:
     
       Ft = w1At-1 + w2At-2 + w3At-3 + … + wnAt-n 式中,
     
       · w1-- 第 t-1 期实际销售额的权重;
     
       · w2-- 第 t-2 期实际销售额的权重;
     
       · wn-- 第 t-n 期实际销售额的权
     
       · n-- 预测的时期数; w1 +  w2 + … +  wn = 1
     
      在运用加权平均法时,权重的选择是一个应该注意的问题。经验法和试算法是选择权重的最简单的方法。一般而言,最近期的数据最能预示未来的情况,因而权重应大些。例如,根据前一个月的利润和生产能力比起根据前几个月能更好的估测下个月的利润和生产能力。但是,如果数据是季节性的,则权重也应是季节性的。


     
    移动平均法的优缺点
     
       使用移动平均法进行预测能平滑掉需求的突然波动对预测结果的影响。但移动平均法运用时也存在着如下问题:
     
       1 、 加大移动平均法的期数(即加大 n 值)会使平滑波动效果更好,但会使预测值对数据实际变动更不敏感;
     
       2 、 移动平均值并不能总是很好地反映出趋势。由于是平均值,预测值总是停留在过去的水平上而无法预计会导致将来更高或更低的波动;
     
       3 、 移动平均法要由大量的过去数据的记录。
     

    展开全文
  • 为了更好地介绍这些优化算法,这里先介绍一个概念----指数加权平均(exponentially weighted averages),全称为指数加权移动平均(exponentially weighted moving averages)。 下图展示的是伦敦一年温度的例子,散点...
  • 以下是绘制指数加权平均线的 Python 代码 # -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) # for reproducibility import matplotlib.pyplot as plt # 可视化模块 #解决中文显示问题 plt.rcParams...
  • matlab开发-使用指数加权移动平均值的估计值。用指数加权移动平均法估计投资组合的风险价值
  • 该方法是建立在如下基础上的加权平均法:即认为时间序列中的近期数据对未来值的影响比早期数据对未来值得影响更大。于是通过对时间序列的数据进行加权处理,越是近期的数据,其权数越大;反之,权数就越小。这样就将...
  • 优化算法之指数加权平均详解

    万次阅读 多人点赞 2018-07-24 19:59:57
    一、什么是指数加权平均 指数加权平均(exponentially weighted averges)也叫指数加权移动平均,通过它可以来计算局部的平均值,来描述数值的变化趋势,下面通过一个温度的例子来详细介绍一下。 上面的图,是一个...
  • 吴恩达深度学习:指数加权平均

    千次阅读 2020-11-08 22:02:30
    1. 什么是指数加权平均 2.指数加权平均的优势 3. 为什么在优化算法中使用指数加权平均 4.偏差修正 5. β 如何选择? 6.参考 1. 什么是指数加权平均 指数加权平均(exponentially weighted averges),也叫指数...
  • 指数加权平均(MEA)

    2022-05-08 12:54:39
    滑动平均(exponential moving average),或者叫做指数加权平均(exponentially weighted moving average),可以用来估计变量的局部均值,使得变量的更新与一段时间内的历史取值有关。 2. 通俗解释 变量 在 时刻记,...
  • 参考 理解滑动平均(exponential moving average)
  • 指数加权平均(EMA)理解

    千次阅读 2021-01-24 22:33:57
    滑动平均(exponential moving average),或者叫做指数加权平均(exponentially weighted moving average),可以用来估计变量的局部均值,使得变量的更新与一段时间内的历史取值有关。 滑动平均可以看作是变量的过去...
  • 指数加权平均算法

    千次阅读 2018-07-15 00:30:16
    在深度学习优化算法中,涉及到指数加权平均算法,这里做一个总结。 问题引入 加权平均数 假如我们现在有365天的温度,要求这365天的平均温度值。 Vaver=(θ1+θ2+θ3+...+θ365)÷365Vaver=(θ1+θ2+θ3+...+θ...
  • 上文的公式就是绘制红色、绿色、黄色曲线所用到的指数加权平均公式,公式中的参数β分别设置为0.9、0.98、0.5,对应曲线红色、绿色、黄色。 然后右面的公式1/(1-β)是相当于指数加权平均所平均的天数x,可以理解为...
  • 移动指数加权平均与修正

    千次阅读 2019-07-09 22:39:14
    指数加权平均 举个例子,对于图中英国的温度数据计算移动平均值或者说是移动平均值(Moving average). 大体公式就是前一日的V值加上当日温度的0.1倍,如果用红线表示这个计算数值的话就可以得到每日温度的指数加权...
  • 理解指数加权平均数(Understanding exponentially weighted averages) 上个笔记中,我们讲到了指数加权平均数,这是几个优化算法中的关键一环,而这几个优化算法能帮助你训练神经网络。本笔记中,我希望进一步探讨...
  • 指数加权平均和momentum梯度下降

    千次阅读 2017-11-24 17:10:00
    开头先以一个例子引入指数加权平均  假设以下是伦敦某年365天的天气: 蓝点是每一天的温度, vt表示每一天指数加权后的温度,连接这些点后,也就有了这条红色的弯曲的线,为什么我们要使用指数加权呢?我的理解是让...
  • 关注Dickey-Fuller检验和ARIMA(自回归移动平均)模型 从理论上学习这些概念以及它们在python中的实现 介绍 时间序列(从现在起称为TS)被认为是数据科学领域中鲜为人知的技能之一。 使用python创建时间序列...
  • 指数加权平均-exponential weighted average

    千次阅读 2018-05-06 15:38:09
    这次说一说指数加权平均。 它同样是用来给梯度下降增速的。 在我们的正常的梯度下降中,不论是mini batch还是 full batch,梯度下降的效果大概是下面这个样子的。梯度下降算法就像是上面这个图一样,像一个碗一样。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,955
精华内容 8,382
关键字:

指数加权平均

友情链接: chapter 2_ Forecasting.zip