天天看點

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

Facebook的資料預測工具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時,不需要了解stan代碼,僅僅使用大家熟知的python 或 r程式設計語言即可。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

從下圖中能看出,新年期間出生人數較少,而情人節期間則偏高。prophet通過定義訓示變量系列(indicator variable

series),把這種一年某些天資料猛然增高的現象自動看做“holidays”,這個訓示變量系列能說明(或預測)該點的資料是不是(或是否将是)一個假期。

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

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

開發者和資料員們能通過機率程式設計語言(例如stan和pymc3),更容易地量化所有結果的機率值,而不僅僅是選出最有可能性的那一個; 在做預測時,它能為通用時間序列模拟合适的函數。但在模拟函數時,為了達到prophet使用者想要的效果,可能會犧牲一些靈活性; prophet使研究人員能更簡單、快捷地運作stan,省掉了使用python和r的複雜; prophet的魯棒性良好,作為一個機率程式産品,使用者很容易就能上手。

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

<a href="http://www.leiphone.com/news/201703/ytpa23qztqbepxl5.html">cloudera 釋出自助式資料科學開發環境 原生支援 r、python、scala 和各大開源架構</a>

<a href="http://www.leiphone.com/news/201703/fano0ytimfeycu6j.html">谷歌開源 python fire;一張圖讀懂 python、r 的大資料應用等 | ai 開發者頭條</a>

本文作者:夏睿