首先來看甚麼是「指數平滑」(Wiki)

指數平滑(Exponential smoothing)是使用指數窗口函數(window function(也稱為變跡函數或漸縮函數 apodization function or tapering function)平滑時間序列數據的經驗法則。而在簡單移動平均線中,過去的觀察值被平均加權,指數函數用於分配隨時間呈指數下降的權重。這是一個易於學習且易於應用的過程,用於根據用戶的先前假設(例如季節性)進行某些確定。指數平滑通常用於時間序列數據的分析。

單指數平滑
這就是事情變得有趣的地方。想像一個加權平均值,我們考慮所有數據點,同時隨著時間的推移分配指數級更小的權重。例如,如果我們從 0.9 開始,我們的權重將是(回到過去):

0.91,0.92,0.93,0.94,0.95,0.96.或:  0.9,0.81,0.729,0.6561,0.59049,0.531441,.
最終接近舊的大零。在某種程度上,這與上面的加權平均值非常相似,只是權重由數學決定,均勻衰減。起始重量越小,它越快接近零。只是有一個問題:權重加起來不等於 1。僅僅前 3 個數字的和就已經是 2.439!

y^x=αyx+(1α)y^x1

上述示例中的α(alpha) ,被稱為平滑因子或平滑係數。

所以本質上我們有一個帶有兩個權重的加權移動平均線: α和1 - α. 總數是α和1 - α是 1,所以一切都很好。

現在讓我們放大總和的右側。巧妙地,1 - α 乘以之前的期望值 是的y^x - 1. 如果你仔細想想,它是同一個公式的結果,這使得表達式遞歸(recursion),如果你把它全部寫在紙上,你會很快看到( 1 - α )一直到系列的開頭,如果有一個,則無限地相乘。這就是為什麼這種方法被稱為 指數的。

關於另一個重要的事情α是它的值決定了我們對最近觀察值與最後預期值的權重。它是一種槓桿,當它較高時(接近 1)或較低時(接近 0)給右側更多的重量。α也可以稱為「記憶衰減率」(memory decay rate):越高的α,「遺忘」的速度越快。

指數平滑是信號處理中常用來平滑數據的眾多窗函數之一,它充當低通濾波器以去除高頻噪聲。在這種方法之前, Poisson's 從 19 世紀開始在卷積(convolutions)中使用遞歸指數窗函數,以及Kolmogorov 和 Zurbenko在 1940 年代對湍流的研究中使用遞歸移動平均線。

原始數據序列通常表示為從時間開始, 指數平滑算法的輸出通常寫為,這可以被認為是對下一個值的最佳估計將會。當觀察序列從時間開始時,指數平滑的最簡單形式由公式給出:

 

 

其中平滑因子,並且

Double exponential smoothing (Holt linear)

當數據中有趨勢時,簡單的指數平滑效果不佳在這種情況下,以「雙指數平滑」或稱「二階指數平滑」的是對指數濾波器套用兩次遞歸,因此被稱為「雙指數平滑」。雙指數平滑背後的基本思想是引入一個術語來考慮一系列表現出某種形式的趨勢的可能性。該斜率分量本身通過指數平滑更新

工作原理如下:

同樣,觀察的原始數據序列表示為, 從時間開始我們用表示時間的平滑值, 和是我們對當時趨勢的最佳估計算法的輸出現在寫成, 的值的估計有時基於最新的原始數據雙指數平滑由公式給出

 

 

且 for  by

 

 

where  () 數據平滑因子,並且  (趨勢平滑因子

預測超越由近似值給出:

 

設置初始值是一個偏好問題。上面列出的選項以外的選項是對於一些.

請注意,0是未定義的(沒有對時間 0 的估計),並且根據定義明確的1 = 0 + 0,因此可以評估進一步的值。

稱為布朗線性指數平滑 (LES) 或布朗雙指數平滑的第二種方法的工作原理如下

 

其中t ,時間t的估計水平t ,時間t的【估計】趨勢是:

 

Holt's double exponential smoothing (mt4 version) - indicator for MetaTrader 4(連結)

 

什麼是 Holt-Winters 方法?

三重指數平滑法,也稱為 Holt-Winters 方法,是可用於預測系列中的數據點的眾多方法或算法,是一種建模和預測一系列值隨時間(時間序列)的行為的方法,前提是該序列是為「季節性」的,即數據在某個時期內重複出現升降的週期循環。Holt-Winters在許多應用中仍然無處不在,包括監控,用於異常檢測和容量規劃等目的。

Holt-Winters 三重指數平滑公式解釋

Holt-Winters 方法使用指數平滑法對過去的大量值進行編碼,並使用它們來預測現在和未來的「典型」值。指數平滑是指使用指數加權移動平均線 (EWMA) 來平滑時間序列。如果你有一些時間序列 x t,你可以定義一個新的時間序列 s t ,它是x t 的平滑版本 

s t = αx t +(1− α ) s t -1

在 1950 年代後期,Charles Holt 認識到了帶有時間序列和趨勢的簡單 EWMA 模型的問題。他修改了簡單的指數平滑模型來解釋線性趨勢。這被稱為霍爾特指數平滑。這個模型稍微複雜一些。它由兩個 EWMA 組成:一個用於 xt的平滑值,另一個用於其 斜率術語 水平 和 趨勢 也被使用。

s t = αx t +(1− α )( s t -1+ b t -1)

b t = β ( s t - s t -1)+(1- β ) b t -1

請注意平滑值如何更好地遵循具有雙指數平滑的原始時間序列。這意味著您將獲得更好的預測。

要使用此模型進行預測,您必須稍作調整。因為斜率還有另一個術語,所以您必須在預測中考慮到這一點。假設您試圖預測 未來m 個時間步的值。m超前預測 的公式 F t + m是:

F t + m = s t + mb t

注意它本質上是一條線的公式。如果您的時間序列沒有線性趨勢,而是某種「季節性」怎麼辦?為此,您還需要另一個 EWMA。Holt 的學生 Peter Winters 通過引入一個附加項來考慮季節性因素,從而擴展了他老師的模型。請注意如何存在另一個變量 L,它取決於季節性週期並且必須提前知道。

時間序列行為的三個方面——值、趨勢和季節性——表示為三種類型的指數平滑,因此 Holt-Winters 被稱為三重指數平滑。該模型通過計算這三種影響的綜合效應來預測當前或未來的價值。該模型需要幾個參數:每個平滑參數(ɑ、β、γ)、一個季節的長度和一個季節的周期數。

 

Holt-Winters 預測示例

Holt-Winters 預測中最難的部分是了解模型的工作原理和選擇好的參數。為了解決第一個問題,我們將通過“手動”執行 Holt-Winters 來演示示例模型。解釋 Holt-Winters 的常用方法是展示一堆帶有希臘字母和下標的複雜方程。我們將跳過數學並展示它是如何工作的,這要簡單得多。我們將使用這個時間序列:

 


這是我用來生成它的 R 代碼。 模式很明顯:繪圖重複值 [0, 1, 0, 0, 0]。你能告訴我接下來的五個值是什麼嗎?當然可以,因為我剛剛告訴過你!它們是 [0, 1, 0, 0, 0]。 如果我們將這些值與這五個點的平均值相關,它會是什麼樣 子?(0+1+0+0+0)/5 的平均值是 0.2,我們將在繪圖上畫一條水平線:


Holt-Winters 有一個趨勢成分。如果我們將其參數設置為零,Holt-Winters 會忽略趨勢(斜率),因此模型會簡化。現在,它只是一堆相對於平均值的值。在我們的圖中,相對於 0.2 的值是 [-0.2, 0.8, -0.2, -0.2, -0.2]。如果我們在沒有趨勢的情況下進行 Holt-Winters,這就是我們要構建的模型類型。這是 R 中的 Holt-Winters 函數給出的內容,我手動添加了一些藍色註釋:

趨勢預測只是對此的增強。您必須結合線的斜率,而不是使用固定平均值作為基礎。這是一個有趨勢的模型:


什麼是預測中的季節性?

季節性是指包含完整重複的周期性模式或固定時間長度。但是,季節性可能會令人困惑。您可能認為您的數據每天都在重複(每天下午 2 點有一個高峰),但如果週末有不同的行為(週日下午 2 點沒有高峰),那麼您的季節實際上是一周,而不是一天。在季節內,有周期,這是預測的粒度。如果您想為一周內每一天的每一小時建模一個值,則您的季節為 168 小時,您的周期為 1 小時。您已經知道,根據定義,示例係列每五個點重複一次,即季節是五個時期。如果您不知道時間序列的季節是什麼?你怎麼能弄明白?做錯了會有什麼後果?正確的季節性對於 Holt-Winters 預測至關重要。為了說明這一點,讓我們看看當您使用六個時期的季節時會發生什麼,比實際的五個時期的季節大一個:

 


預測,即圖表中的紅線,變得不那麼準確並變成了垃圾。要獲得好的結果,需要給模型提供好的參數。這是 Holt-Winters 預測的第二個挑戰。

確定 Holt-Winters 公式計算的最佳參數

選擇季節性是一個難題。通用預測很難,因為它必須準備好用於任何數據集,這些數據集可能具有值、趨勢和季節性的任意組合。它甚至可能沒有其中一些組件。除非您手動檢查數據並為其定制模型,否則這些通常是未知數。在 SolarWinds,我們需要能夠正常工作的預測功能,​​無需任何假設或對數據特徵的了解。對此有多種方法:機器學習、傅里葉分析等。我們對這個問題的解決方案是嘗試許多不同的事物組合,使用像 Nelder-Mead這樣的技術 優化以挑選獲勝者。這利用了計算機在簡單事情上的速度,所以我們簡單地制定了問題:我可以量化預測有多好,我可以比較預測嗎?然後我們嘗試不同的參數組合,看看哪個獲勝。讓我們量化預測的好壞。上次的預測很糟糕,但 有多糟糕? 量化預測準確性的常用方法是計算預測值與實際值之間的差異。下圖中的藍色箭頭表示預測與實際值的差距。

 

要量化整體準確性,您可以通過取平均值或平方值之和將這些差異組合成一個值。如果預測更好,則結果是一個較小的值,如果預測更差,則該值較大。這為您提供了一種比較預測結果的好方法。我們的預測代碼嘗試了很多具有不同參數的組合(很多!),並選擇產生最低組合錯誤分數的組合。為了說明這一點,這裡有一堆關於同一時間序列的預測,嘗試不同的頻率。

由於數據和預測之間的差異很小,因此具有正確的季節性(每個季節五個時期)很容易從視覺上挑選出來。這是我們的預測通過優化所做的直觀示例。它還優化了其他參數,例如趨勢。

【出處】

Holt's double exponential smoothing (mt4 version) - indicator for MetaTrader 4 

Holt-Winters Forecasting

https://grisha.org/blog/2016/01/29/triple-exponential-smoothing-forecasting/

https://orangematter.solarwinds.com/2019/12/15/holt-winters-forecasting-simplified/

 

 

 

創作者介紹
創作者 The Dance of Disorder (Fluctuations of Entropy) 的頭像
Jason

The Dance of Disorder (Fluctuations of Entropy)

Jason 發表在 痞客邦 留言(0) 人氣( 1 )