prophet翻譯(七)--- 不確定性間隔

不確定性間隔

默認情況下,Prophet將爲預測的yhat返回不確定性區間。這些不確定性區間背後有幾個重要的假設。

預測中存在三種不確定性來源:趨勢的不確定性、季節性估計的不確定性以及額外的觀測噪聲。

趨勢的不確定性

預測中最大的不確定性源是未來趨勢變化的潛在性。在本文檔中已經看到的時間序列顯示了歷史上明顯的趨勢變化。Prophet能夠檢測和擬合這些趨勢變化,但是在未來,我們應該預期什麼樣的趨勢變化呢?由於無法確定,我們採取最合理的做法,假設未來的趨勢變化與歷史上相似。特別是,我們假設未來的趨勢變化的平均頻率和幅度與歷史觀察到的相同。我們將這些趨勢變化向前投射,並通過計算它們的分佈來獲得不確定性區間。

這種假設意味着我們假定未來的趨勢變化與歷史上的趨勢變化類似,並且通過計算這些變化的分佈,可以得到對未來的不確定性區間。這種方法是在當前信息下對未來進行最合理的估計,但仍需要謹慎解釋和使用預測結果,因爲未來的實際趨勢變化可能與歷史上的變化有所不同。

這種測量不確定性的方式的一個特點是,通過增加 changepoint_prior_scale(變化點先驗規模),可以增加速率的靈活性,從而增加預測的不確定性。這是因爲如果我們在歷史上建模更多的速率變化,那麼我們也會預期未來會有更多的變化,這使得不確定性區間成爲過擬合的有用指標。

通過增加 changepoint_prior_scale,我們允許模型更容易地擬合曆史數據中的速率變化,這可能導致模型在歷史數據中出現過多的變化點。這種過度擬合會增加模型對歷史數據的過度敏感性,進而增加預測的不確定性。因此,不確定性區間的擴大可以作爲判斷模型是否出現過擬合的指標之一。

在使用 Prophet 進行建模時,適當選擇 changepoint_prior_scale 的值非常重要。較高的值可以提供更大的靈活性,但也可能導致過度擬合和不確定性的增加。因此,在選擇 changepoint_prior_scale 時,需要權衡模型的複雜性和過擬合的風險,以獲得合適的預測不確定性水平。
不確定性區間的寬度(默認爲80%)可以使用參數interval_width進行設置:

# Python
forecast = Prophet(interval_width=0.95).fit(df).predict(future)

再次強調,這些區間假設未來的速率變化頻率和幅度與過去相同。然而,這個假設很可能是不成立的,因此您不應該期望這些不確定性區間能夠準確覆蓋實際情況。

儘管Prophet的不確定性區間提供了一種衡量預測的不確定性的方法,但由於未來的情況可能與歷史不同,因此這些區間可能無法準確預測未來的變化。在使用不確定性區間時,應該謹慎解釋和使用,並意識到其有限的準確性。

爲了更準確地瞭解未來的變化和不確定性,除了使用Prophet的不確定性區間外,還應考慮其他因素、觀察額外的數據,以及使用其他方法和模型進行分析和預測。

季節性不確定性

默認情況下,Prophet僅返回趨勢和觀測噪聲的不確定性。要獲取季節性的不確定性,您需要進行完整的貝葉斯抽樣。可以使用參數mcmc.samples(默認爲0)來實現這一點。下面是在Quickstart中的Peyton Manning數據的前六個月中執行此操作的示例代碼:

# Python
m = Prophet(mcmc_samples=300)
forecast = m.fit(df, show_progress=False).predict(future)

image
在Python中,您可以使用m.predictive_samples(future)方法訪問原始的後驗預測樣本。在R中,您可以使用predictive_samples(m, future)函數進行訪問。
這些函數可以用於獲取貝葉斯後驗預測的原始樣本。m是已經擬合的Prophet模型,future是用於預測的未來時間點的數據框。調用這些函數將返回包含後驗預測樣本的數據結構,您可以進一步處理和分析這些樣本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章