一、什么是指數加權平均?
????????指數在數學中表示一個數的冪次運算(如a?中的n),而在統計學中特指隨時間變化的幾何衰減系數,加權指對不同數據賦予不同權重,使重要數據對結果產生更大影響。指數加權平均指是一種時間序列數據的加權計算方法,其特點是隨著時間推移,數據權重呈指數級衰減——近期數據具有更高權重,而早期數據影響逐漸減弱。該方法的核心在于"動態平衡歷史與當前數據,同時突出近期信息的可靠性"。
二、什么叫數據權重呈指數級衰減?
? ? ? ? 我在之前寫過的一篇文章【人工智能】神經網絡的優化器optimizer(一):Momentum動量優化器中有所提及,現在先把神經網絡中指數加權平均的公式貼出來:
? ? ? ? 展開推導如下:
?????????基于以上公式,我們可以假設下:
??????????可以看到,越遠的梯度權重呈現指數級衰減。
三、數學推導?
????????拋開神經網絡單純講指數加權平均的核心公式為:
????????
其中:
:當前時刻的加權平均值
:上一時刻的加權平均值(初始值?
)
:想要觀察的時刻?t 的值
:衰減因子(0<β<1),控制歷史數據的權重分布?
?????????推導過程?
????????遞推展開?(假設?):
??
??
?????????權重系數規律?:
????????從展開式可見,歷史數據?的權重為?
。權重隨?k(時間距離)增大而?指數衰減?:
- 當前時刻?
:權重?=(1?β)
- 前一時刻?
:權重?=(1?β)β
- 前?n 時刻
:權重?=
- 權重總和收斂于1?:
??(當?t→∞)?
四、權重的取值
? ? ? ? 那么我們的權重究竟取多少是合適的呢?其實并沒有一個具體的值可以確定,需要根據不同的情況確定不同的值,大概的范圍如下:
β?值 | 平滑性 | 響應速度 | 典型曲線特征 |
---|---|---|---|
0.98(最大) | ?極高? | ?極慢? | 平坦,滯后實際變化 |
0.9(適中) | 中等 | 中等 | 平衡平滑與響應,歷史數據權重衰減慢,平均結果更平滑,但響應延遲明顯。 |
0.5(較小) | ?極低? | ?極快? | 抖動明顯,緊跟最新數據,近期數據主導,對波動更敏感,但噪聲抑制弱。 |
? ? ? ? 以下通過一個例子:正弦波加噪聲數據,來對比β=0.1/0.5/0.9/0.98 時的平滑效果:
? ? ? ? 可以觀察到以下幾個規律:
β=0.1(藍線):幾乎跟隨噪聲波動,響應快但平滑效果差
β=0.5(橙線):平衡噪聲抑制與趨勢跟蹤
β=0.9(綠線):極度平滑但明顯滯后原始信號峰值
β=0.98(紅線):滯后嚴重
????????β越小曲線越貼近原始數據,β越大平滑效果越強但滯后越明顯。
? ? ? ? 代碼如下:
import numpy as np
import matplotlib.pyplot as plt# 生成模擬數據(正弦波+噪聲)
np.random.seed(42)
t = np.linspace(0, 10, 100)
data = np.sin(t) + np.random.normal(0, 0.2, 100)def ewma(data, beta):v = [0] # 初始化v0for x in data:v.append(beta * v[-1] + (1 - beta) * x)return v[1:] # 去掉初始v0# 計算不同β值的EWMA
beta_list = [0.1, 0.5, 0.9,0.98]
results = {f'β={beta}': ewma(data, beta) for beta in beta_list}# 可視化
plt.figure(figsize=(10, 6))
plt.plot(t, data, 'k.', label='data')
for label, result in results.items():plt.plot(t, result, label=label, linewidth=2)
plt.legend()
plt.grid(True)
plt.show()
五、指數加權平均和普通平均的區別
? ? ? ? 我們通過一個簡單的例子說明:
(一)假設你連續10天記錄的氣溫數據為:[22, 23, 24, 25, 26, 27, 28, 29, 30, 31]℃:
普通平均:將所有溫度相加后除以天數
(22+23+24+25+26+27+28+29+30+31)/10 = 26.5℃
這種方法賦予每天相同權重,但會稀釋近期溫度變化的影響。
指數加權平均(衰減因子β=0.5):
第10天權重:50%(31×0.5=15.5)
第9天權重:25%(30×0.25=7.5)
第8天權重:12.5%(29×0.125≈3.6)
...
最終加權值≈15.5+7.5+3.6+1.8+0.9+0.4+0.2+0.1+0.05+0.02≈30.1℃
????????對比可見:這種計算明顯更貼近近期升溫趨勢(第10天31℃),而普通平均則被早期低溫數據拉低。由此可知指數加權平均對短期變化更敏感,適合捕捉天氣趨勢;普通平均則更適合分析長期穩定狀態。