prophet翻譯(八)--- 異常值

異常值

異常值可以影響Prophet的預測結果,主要有兩種方式。下面的示例中,我們使用之前提到的R頁面的日誌化維基百科訪問量數據進行預測,但添加了一段錯誤的數據:

# Python
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_R_outliers1.csv')
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=1096)
forecast = m.predict(future)
fig = m.plot(forecast)

image

在上述示例中,趨勢的預測看起來是合理的,但不確定性區間似乎過於寬廣。Prophet能夠處理歷史中的異常值,但是隻能通過擬合趨勢變化來處理它們。因此,不確定性模型預期未來的趨勢變化具有類似的幅度。

處理異常值的最佳方法是將其移除- Prophet對缺失數據沒有問題。如果在歷史數據中將異常值的值設置爲NA(缺失值),但保留未來的日期,那麼Prophet將爲異常值給出預測。

# Python
df.loc[(df['ds'] > '2010-01-01') & (df['ds'] < '2011-01-01'), 'y'] = None
model = Prophet().fit(df)
fig = model.plot(model.predict(future))

image
在上面的示例中,異常值擾亂了不確定性估計,但並沒有影響到主要的預測值yhat。然而,並不是所有情況下都是如此,就像在下面這個示例中添加了異常值的情況一樣:

# Python
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_R_outliers2.csv')
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=1096)
forecast = m.predict(future)
fig = m.plot(forecast)

image
在這個示例中,2015年6月的一組極端異常值擾亂了季節性的估計,因此它們的影響會一直持續到未來。同樣,正確的方法是將它們移除:

# Python
df.loc[(df['ds'] > '2015-06-01') & (df['ds'] < '2015-06-30'), 'y'] = None
m = Prophet().fit(df)
fig = m.plot(m.predict(future))

image

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