在時間序列中,我們需要基于該時間序列當前已有的數(shù)據來預測其在之后的走勢,三次指數(shù)平滑(Triple/Three Order Exponential Smoothing,Holt-Winters)算法可以很好的進行時間序列的預測。 時間序列數(shù)據一般有以下幾種特點:1.趨勢(Trend) 2. 季節(jié)性(Seasonality)。 趨勢描述的是時間序列的整體走勢,比如總體上升或者總體下降。下圖所示的時間序列是總體上升的: 季節(jié)性描述的是數(shù)據的周期性波動,比如以年或者周為周期,如下圖: 三次指數(shù)平滑算法可以對同時含有趨勢和季節(jié)性的時間序列進行預測,該算法是基于一次指數(shù)平滑和二次指數(shù)平滑算法的。 一次指數(shù)平滑算法基于以下的遞推關系: si=αxi+(1-α)si-1 其中α是平滑參數(shù),si是之前i個數(shù)據的平滑值,取值為[0,1],α越接近1,平滑后的值越接近當前時間的數(shù)據值,數(shù)據越不平滑,α越接近0,平滑后的值越接近前i個數(shù)據的平滑值,數(shù)據越平滑,α的值通常可以多嘗試幾次以達到最佳效果。 一次指數(shù)平滑算法進行預測的公式為:xi+h=si,其中i為當前最后的一個數(shù)據記錄的坐標,亦即預測的時間序列為一條直線,不能反映時間序列的趨勢和季節(jié)性。 二次指數(shù)平滑保留了趨勢的信息,使得預測的時間序列可以包含之前數(shù)據的趨勢。二次指數(shù)平滑通過添加一個新的變量t來表示平滑后的趨勢: si=αxi+(1-α)(si-1+ti-1) ti=?(si-si-1)+(1-?)ti-1 二次指數(shù)平滑的預測公式為 xi+h=si+hti 二次指數(shù)平滑的預測結果是一條斜的直線。 三次指數(shù)平滑在二次指數(shù)平滑的基礎上保留了季節(jié)性的信息,使得其可以預測帶有季節(jié)性的時間序列。三次指數(shù)平滑添加了一個新的參數(shù)p來表示平滑后的趨勢。 三次指數(shù)平滑有累加和累乘兩種方法,下面是累加的三次指數(shù)平滑 si=α(xi-pi-k)+(1-α)(si-1+ti-1) ti=?(si-si-1)+(1-?)ti-1 pi=γ(xi-si)+(1-γ)pi-k 其中k為周期 累加三次指數(shù)平滑的預測公式為: xi+h=si+hti+pi-k+(h mod k) 注意:數(shù)據之魅P88此處有錯誤,根據Wikipedia修正。 下式為累乘的三次指數(shù)平滑: si=αxi/pi-k+(1-α)(si-1+ti-1) ti=?(si-si-1)+(1-?)ti-1 pi=γxi/si+(1-γ)pi-k 其中k為周期 累乘三次指數(shù)平滑的預測公式為: xi+h=(si+hti)pi-k+(h mod k) 注意:數(shù)據之魅P88此處有錯誤,根據Wikipedia修正。 α,?,γ的值都位于[0,1]之間,可以多試驗幾次以達到最佳效果。 s,t,p初始值的選取對于算法整體的影響不是特別大,通常的取值為s0=x0,t0=x1-x0,累加時p=0,累乘時p=1. 我們使用DataMarket的International Airline Passengers數(shù)據來測試累加和累乘三次指數(shù)平滑算法的性能,該數(shù)據記錄的是每月的國際航線乘客數(shù): 下圖為使用累加三次指數(shù)平滑進行預測的效果:其中紅色為源時間序列,藍色為預測的時間序列,α,?,γ的取值為0.45,0.2,0.95: 下圖為累乘三次指數(shù)平滑進行預測的效果,α,?,γ的取值為0.4,0.05,0.9: 可以看到三次指數(shù)平滑算法可以很好的保存時間序列數(shù)據的趨勢和季節(jié)性信息,在International Airline Passengers數(shù)據集上累乘平滑指數(shù)算法的效果更好。 參考文獻: [1]. 數(shù)據之魅:基于開源工具的數(shù)據分析 |
|