您的位置:首頁>手機>正文

Facebook的資料預測工具Prophet有何優勢?用貝葉斯推理一探究竟

雷鋒網按:上個月(2月23日),Facebook開源了一款基於 Python 和 R 語言的資料預測工具——“Prophet”(詳細報導請看雷鋒網此前文章

《支持Python!Facebook開源預測工具Prophet》

)。本文則詳細介紹了Prophet的貝葉斯推理實踐,具體展示了研究人員把兩個資料集用在Prophet上的運行效果。

如今,市面上已經許多Python 和 R語言可適用的時間序列預測模型了,那麼Facehook的Prophet在這一領域又有什麼優勢呢?

Prophet在進行預測,其後端系統是一個概率程式語言Stan,這代表Prophet能發揮出很多貝葉斯演算法的優勢,比如說:

使模型具有簡單、易解釋的週期性結構;

預測結果包括才完全後驗分佈中匯出的置信區間,即Prophet提供的是一個資料驅動的風險估計。

在下面研究中,研究者讓Prophet對兩組資料進行預測,在後端使用概率程式語言,讀者可以借此看到使用Stan的一些工作細節。

Prophet使用了一種通用時間序列模型,這種模型可適用於Facebook上的資料,並且具有分段走向(piecewise trends)、多週期及彈性假期(floating holiday)三種特性。

Prophet的把時間序列預測問題轉變成了一個曲線擬合練習(exercise)。在這個曲線中,因變數是增長、週期和holiday的總體表現。

增長(growth)

這一部分採用一個隨時間變化的邏輯增長模型,屬於非線性增長,所以,要用簡單的分段常數函數來類比線路性增長。

用比率調整向量模擬分段點,每個分段點都對應一個具體的時間點。用拉普拉斯分佈(Laplace distribution)類比比率調整變數,位置參數(location parameter)設定為0。

Prophet 模型週期(periodic seasonality)

採用標準傅裡葉級數。年、周的週期性(seasonality)近似值分別為20和6,週期性成分(seasonal component)在正常情況下是平滑狀態。

假期(Holiday)

用一個指標函數來類比。

使用者可以調節擴散參數(spread parameter),以模擬未來會有多少歷史季節性變化(historical seasonal variation)。

Prophet的使用

用戶在用Prophet時,不需要瞭解Stan代碼,僅僅使用大家熟知的Python 或 R程式設計語言即可。

下面,研究者讓它在一個週期性極強的資料集上運行(運行過程如下圖所示)。

該資料集為摩納哥夏威夷火山上測量的大氣二氧化碳含量。

設置好程式後,只用了幾秒鐘,模型就給出了下圖所示的預測結果:

Prophet很容易就探測到該資料以年為週期,並且長期增長的趨勢。在這裡要提一下,Prophet自帶資料驅動的置信區間,這是概率程式設計系統的一個重要優點。

另外,Prophet也為時間序列的組成部分(例如一周中某天、或一年中的某天)提供了簡單、易解釋的預測結果,如下圖所示:

這裡要注意的是,以周為單位的預測資料要比其他兩個的資料小得多,而且噪點也更大。知道這一點非常有意義:這表明,在全球範圍內,大氣中化學物質的含量並不是以周為週期變化的;另外,年資料也顯示出北半球植被對二氧化碳含量的影響:夏天過後含量降低,冬天過後含量升高。

出生數據

下面,研究人員讓Prophet對一組更具挑戰性的資料集(美國年出生人數)進行預測。

該資料集用高斯過程(雷鋒網注:也叫正態隨機過程)進行分析,它同時具有週期性和“假期效果”。

Prophet能夠通過調整轉捩點平滑參數自動探測到轉捩點。研究者把轉捩點平滑參數設為0.1,而不是默認的0.05。這可使預測結果更靈活,更少平滑,但也更容易顯示噪點。

Prophet用了大概1分鐘來理解這些資料集下圖中的黑點),然後給出了預測結果(下圖中的藍線)。

Prophet預測出,出生率會在每年的八月到十月有所提高

從下圖中能看出,新年期間出生人數較少,而情人節期間則偏高。Prophet通過定義指示變數系列(indicator variable series),把這種一年某些天數據猛然增高的現象自動看做“holidays”,這個指示變數系列能說明(或預測)該點的資料是不是(或是否將是)一個假期。

總結

以上概率程式報告中展示了Prophet在貝葉斯演算法中的實踐效果,結果發現:

開發者和資料員們能通過概率程式設計語言(例如Stan和pymc3),更容易地量化所有結果的概率值,而不僅僅是選出最有可能性的那一個;

在做預測時,它能為通用時間序列類比合適的函數。但在類比函數時,為了達到Prophet用戶想要的效果,可能會犧牲一些靈活性;

Prophet使研究人員能更簡單、快捷地運行Stan,省掉了使用Python和R的複雜;

Prophet的魯棒性良好,作為一個概率程式產品,使用者很容易就能上手。

via:

fastforwardlabs

相關文章,請參看雷鋒網此前報導:

Cloudera 發佈自助式資料科學開發環境 原生支援 R、Python、Scala 和各大開源框架

穀歌開源 Python Fire;一張圖讀懂 Python、R 的大資料應用等 | AI 開發者頭條

喜欢就按个赞吧!!!
点击关闭提示