支援 Python 與 R 語言!Facebook 開源大規模預測工具「Prophet」

Facebook 宣佈開源一款基於 Python 和 R 語言的數據預測工具——「Prophet」,即「先知」。取名倒是非常直白。
評論
評論

本文來自合作媒體 雷鋒網 ,INSIDE 授權轉載

前幾天,Facebook 宣佈開源一款基於 Python 和 R 語言的數據預測工具——「Prophet」,即「先知」。取名倒是非常直白。

Facebook 表示,Prophet 相比現有預測工具更加人性化,並且難得地提供 Python 支援。另外,它生成的預測結果足以和專業數據分析師媲美

Facebook 把預測任務的流程用下圖展示出來:

從圖中可以看出,預測共分四個流程:建模,預測評估,表面問題和人工檢查。

在建模階段,目前可用的 Python 工具包寥寥無幾。最廣為人知的「forecast」,Google 開發的 CausalImpact, 以及推特的 AnomalyDetection,均是基於 R 語言。很顯然 Facebook 想要改變這一點。

從 Facebook 官方聲明來看, 推出 Prophet,是希望用它來替代 forecast,成為最受歡迎的預測工具 。相對於後者,Facebook 表示 Prophet 有兩大優點:

1. 開發合理、準確的預測模型更加直接。

之前許多預測工具 ARIMA 和 exponential smoothing 等等,每一項工具都有它的長處、短處和調節參數。但 Facebook 表示,選擇不恰當的模型或參數會造成讓人難以滿意的結果;而即便是有經驗的數據分析師在選擇模型、參數上也經常遇到困難。言下之意是,Prophet 將著重改善這方面的體驗,讓模型、參數的選擇更直觀。

2. 用 Prophet 做出的預測,能夠以對普通人更加直觀的方式進行定制。

Prophet 有針對週期性的平滑參數(smoothing parameters for seasonality),允許開發者調整與歷史週期的匹配程度。它還有針對趨勢的平滑參數,能夠調整對歷史趨勢變化的緊跟程度。對於成長曲線(growth curves),開發者能人工設置上限,即 capacities,把關於「該預測如何成長(或下降)」的先驗訊息注入進去。最後,開發者還能設置不規則日期,來對超級杯、感恩節、黑色星期五之類的特殊日子進行建模。

組成部分

在它的核心,Prophet 是一個可加性迴歸模型(additive regression model),它有四個組成部分:

  1. 一個分段的線性或邏輯成長曲線趨勢。Prophet 通過提取數據中的轉變點,自動檢測趨勢變化。
  2. 一個按年的週期組件,使用傅立葉級數(Fourier series)建模而成。
  3. 一個按周的週期組件,使用虛擬變量(dummy variables)。
  4. 使用者設置的重要節日表。

適用範圍

Prophet 針對的是商業預測任務,適用於具備以下特徵的場景:

  • 針對每小時、每天或每星期的觀察,有至少數月(理想情況的一年)的歷史記錄。
  • 多重顯著的「人類層級」週期性:星期 X 以及年份。
  • 日期間隔不規則的重要節日(比如超級杯),需要事先得知。
  • 觀察缺失或是異常值在合理範圍內。
  • 歷史趨勢變化,比如產品發佈或者改寫記錄(logging changes)。
  • 符合非線性成長曲線的趨勢,有天然上、下限或者飽和點。

想要進一步瞭解 Prophet 的讀者,請參考以下鏈接:

Facebook 部落格:https://research.fb.com/prophet-forecasting-at-scale/

使用指南:https://facebookincubator.github.io/prophet/docs/quick_start.html

檔案:http://facebookincubator.github.io/prophet/