EMA(指数平均数指标)到底是什么?
23 个回答
最近在看吴恩达的《DeepLearning课程》, 涉及梯度下降算法优化的时候,介绍过指数加权平均。课程中是以伦敦的温度为例子,为了方便使用数据,我就直接使用温度的例子了。
问题
假如我们现在有365天的温度,要求最近N天的平均温度值,其中 N \in [0, 365] 。
加权平均数
当N=365,加权平均数为:
V_{aver} = (\theta_1 + \theta_2 + \theta_{3} + ... + \theta_{365}) \div 365
指数加权平均是一种近似求平均的方法。
指数加权平均
v_{t} = \beta v_{t-1} + (1-\beta) \theta_{t}
- v_{t} : 约等于最近的 \frac{1}{1-\beta} 天的平均温度值;(为啥是 \frac{1}{1-\beta} 后面再讲)。
- \theta_{t} :代表的是第t天的温度值;
- \beta : 可调节的超参.
例如: \beta=0.9 ,t=100, v_{100} \approx 90到100这十天的平均温度。
举例迭代的过程如下:
v_{0} = 0
v_{1} = \beta v_{0} + (1 - \beta) \theta_{1}
v_{2} = \beta v_{1} + (1 - \beta) \theta_{2}
v_{3} = \beta v_{2} + (1 - \beta) \theta_{3}
设置不同的 \beta 会是什么样子呢?
\beta = 0.9 ,代表的是最近10天的平均温度值,对应下图中的红线.
\beta = 0.98 ,代表的是最近50天的平均温度值,对应下图中的绿线.
\beta = 0.5 ,代表的是最近2天的平均温度值,对应下图中的黄线,可以看到这时候和每天的温度值基本就是吻合的.
我们把公式展开一下,看看这个算法是怎么作用于 \theta_{t} 的,以 v_{100} 为例。
v_{100}= 0.1\theta_{100} + 0.9v_{99} \\ = 0.1\theta_{100} + 0.9( 0.1\theta_{99} + 0.9v_{98}) \\ =... \\ = 0.1\theta_{100} + 0.1 * 0.9 \theta_{99} + 0.1 * 0.9 ^{2}\theta_{98} + ... + 0.1 * 0.9 ^{99}\theta_{1}
到这里我们就很清楚 v_{t} 实际上是对每天温度的加权平均,时间越近,权重越大,而且是指数式的,所以叫做指数加权平均。 假如我们以1/e为一个分界点,认为权重小于1/e对整个结果影响很小,权重指数衰减到这个值之后的项就可以忽略不计了,那当 \beta 取值的时候,多久才可以衰减到1/e呢?
考虑以下函数:
f(\beta) = \beta^{1 / (1 - \beta)}
f(0.9) = 0.98^{10}\approx 1/e
这个时候需要10天可以衰减到1/e
f(0.98) = 0.98^{50}\approx 1/e
这个时候需要50天可以衰减到1/e
所以最开始说:
v_{t} :代表的是第 \frac{1}{1-\beta} 天的温度值;
应用
- 深度学习优化算法中应用。解决梯度下降算法中收敛过慢的问题。
- CTR预估。如果最开始上线一个位置,数据量很小,LR、FTRL训练模型很不好搞得时候可以用MA算法;
- 异常点平滑。美团外卖的收入监控报警系统中的hot-winter就是指数移动平均算法的升级。
公众号:胡慢慢滚雪球。更新软件工程、个人思考、投资相关的东西。
其实你之所以看不懂很可能是迷惑于EMA的计算方法!其实更重要的是应用!在交易中EMA不用自己算的,系统计算好的!
但我还是简单介绍下EMA吧!
简单移动平均线计算的方法对于一段时间内的市场价格平等对待,比较难排除异常价格的干扰。指数移动平均线更看重最新价格的权重,可以排除“噪音”影响,给出的信号更准。
EMA计算方法:
EMA(t)=平滑常数*当前价格+(1-平滑常数)*EMA(t-1)
t表示EMA的周期和下文中的n一样。
所以EMA的计算需要用前一个EMA的值和平滑常数,一般用第一天的SMA为EMA的初始值。平滑常数=2/(n+1),平滑常数的大小取决于EMA的周期,周期越小,平滑常数越大,当前价格的权重更高。
如下图所示,蓝色线是20EMA、紫色线是20SMA,明显蓝色线比紫色线更贴近市场价格。
EMA更关注现在的市场价格变化,这也是我们在交易中追求的。但相对来说EMA还是一个滞后指标,在判断趋势中有一定作用,但对于交易信号上比较迟缓。