Prophet:Facebook 簡單高效的時間序列模型
3.1 趨勢模型
首先是趨勢模型 g(t)。
在 Prophet 算法里,趨勢模型有兩個選擇,一個是基于飽和增長模型 (saturating growth model),另一個是基于分段線性函數 (piecewise linear model)。
3.1.1 飽和增長模型
Prophet 使用如下形式的飽和增長模型:
其中,C 為承載能力(如可上網人數、可處理事件等),k 為增長率,m 為偏移參數。
當 C=1,k=1,m=0 時就是大家常見的 Sigmoid 函數的形式。
在現實生活中,承載能力、增長率和偏移參數并不是一成不變的,所以作者將其轉換為隨時間變化的函數:
除此之外,現實中的時間序列其走勢也不是不變的,在某些特定的時候會發生改變,這就需要用戶去研究變點檢測 (change points)。
在 Prophet 中,變點的位置是需要設置的,每一段的趨勢和走勢也會隨著變點的設置而改變。目前有兩種方法去設置變點,一種是人工指定的方式,另一種是通過算法來自動選擇。
假設現在有 S 個變點,變點的時間戳為

,

,

每個變點都會出現增長率的變化 。如果初始增長率為 k 的話,那么時間戳 t 上的增長率為:

其中

為指示函數:

一旦初始增長率 k 確定,那么偏移參數 m 也會隨之確定。
既然是分段函數,我們也需要處理好分段邊界:

所以分段邏輯回歸模型為:

此外我們含有一個重要參數 C(t),該參數需要用戶根據市場規模來進行調整。
3.1.2 分段線性模型我們再來看一下分段線性函數,根據

給出基本模型:

其中 k 表示增長率,

表示增長率的變化量,m 為偏移參數,

值得注意的是,分段線性函數并沒有表示承載能力的

參數。
3.1.3 序列中的變點變點可以由分析師人工設定,相應的參數有變點的位置、個數、增長的變化率。
當然,也可以根據候選對象進行自動選擇。自動選擇主要是利用了先驗知識

,參數

控制模型變換的靈活性,當

趨于 0 時,增長函數將蛻變為 Logistic 函數或者線性函數。默認情況下,Prophet 會在時間序列前 80% 的范圍里,通過等份的方法找到 25 個變點,而變點的增長率滿足 Laplace 分布

3.1.4 趨勢預測現在,歷史 T 個數據點中有 S 個變點,且對應的增長率的變化量服從

,但預測未來也需要考慮未來的變點位置。
作者通過歷史數據推斷出方差,從而替換

來模擬未來的速率變化。在一個完全貝葉斯框架下,可以通過先驗知識來獲得它的后驗概率,或者我們也可以用最大似然估計來評估速率尺度參數:

。
未來變點位置將通過隨機抽樣的方法使變點的平均頻率與歷史數據相匹配:

因此,我們保證了未來和歷史具有相同平均頻率和變點變化率,從而衡量預測未來趨勢中的不確定性,一旦從數據中推斷出了 λ ,我們便可以使用生成模型來模擬未來可能的趨勢,并使用模擬的趨勢來計算不確定區間。
3.2 季節性模型
季節性(這里指周期性)是大部分時間序列都會考慮其中的,因為時間序列通常會隨著天、周、月、年等的變化而呈現周期性變化。為了擬合和預測這些數據,作者制定了季節模型。
作者利用傅立葉級數來提供一個靈活的周期性影響:

其中,P 為周期(一年 P=365.25,一個星期 P=7);N 為經驗所得(年 N=10,周N=3)。
我們另傅立葉級數的參數為

,則可以用這個來構造一個季節性向量矩陣。
例如當 N=10 時:

季節項表示為:

作者用標準化

對參數

進行初始化, σ 為可設置參數,值越大,季節效應越明顯;值越小,季節效應越不明顯。
請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
- 1 AI狂歡遇上油價破百,全球股市還能漲多久? | 產聯看全球
- 2 OpenAI深夜王炸!ChatGPT Images 2.0實測:中文穩、細節炸,設計師慌了
- 3 6000億美元估值錨定:字節跳動的“去單一化”突圍與估值重構
- 4 Tesla AI5芯片最新進展總結
- 5 連夜測了一波DeepSeek-V4,我發現它可能只剩“審美”這個短板了
- 6 熱點丨AI“瑜亮之爭”:既生OpenClaw,何生Hermes?
- 7 AI界的殺豬盤:9秒刪庫跑路,全員被封號,還繼續扣錢!
- 8 2026,人形機器人只贏了面子
- 9 DeepSeek降價90%:價格屠夫不是身份,是戰略
- 10 AI Infra產業鏈卡在哪里了?


分享













