【机器学习】NeuralProphet,这个时序工具包也太强了吧...
作者:杰少
NeuralProphet
簡(jiǎn)介
幾乎絕大多數(shù)做時(shí)間序列的朋友都了解Facebook的Prophet模型,因?yàn)槠湓跍?zhǔn)確性、可解釋性等方面有著良好的性能,而且可以為用戶自動(dòng)化許多元素(如超參數(shù)選擇或特征工程),因而它獲得了廣泛的應(yīng)用。本文我們介紹一個(gè)最新的NeuralProphet時(shí),從名字就可以看出,這個(gè)是神經(jīng)網(wǎng)絡(luò)和Prophet的結(jié)合,與傳統(tǒng)的黑盒NN不同,本文我們就介紹的NeuralProphet模型集成了Prophet的所有優(yōu)點(diǎn),不僅具有不錯(cuò)的可解釋性,還有優(yōu)于Prophet的預(yù)測(cè)性能。
NeuralProphet
01
Prophet
Prophet如果認(rèn)為是基本自回歸的擴(kuò)展(除了使用lagged的目標(biāo)值,還對(duì)輸入變量使用傅立葉變換,這使得我們可以通過調(diào)模型拿到更好的結(jié)果)。
Prophet可以使用額外的信息,不僅僅是target的延遲值;
模型能融入節(jié)假日信息;
可以自動(dòng)檢測(cè)趨勢(shì)的變化;
02
NeuralProphet
和許多黑盒子的NN不同,NeuralProphet保留了Prophet的所有優(yōu)勢(shì),同時(shí),通過引入改進(jìn)的后端(Pytorch代替Stan)和使用自回歸網(wǎng)絡(luò)(AR網(wǎng)絡(luò)),將神經(jīng)網(wǎng)絡(luò)的可擴(kuò)展性與AR模型的可解釋性結(jié)合起來,提高其準(zhǔn)確性和可擴(kuò)展性。
AR網(wǎng)絡(luò)——它是一個(gè)單層網(wǎng)絡(luò),經(jīng)過訓(xùn)練可以模擬時(shí)間序列信號(hào)中的AR過程,但規(guī)模比傳統(tǒng)模型大得多。
03
NeuralProphet VS Prophet
NeuralProphet使用PyTorch的梯度下降進(jìn)行優(yōu)化,使得建模速度更快;
利用自回歸網(wǎng)絡(luò)對(duì)時(shí)間序列自相關(guān)進(jìn)行建模;
滯后回歸器使用單獨(dú)的前饋神經(jīng)網(wǎng)絡(luò)建模;
NeuralProphet具有可配置的前饋神經(jīng)網(wǎng)絡(luò)的非線性深層;
模型可調(diào)整到特定的預(yù)測(cè)范圍(大于1);
提供自定義的損失函數(shù)和度量策略;
代碼
1.數(shù)據(jù)讀取
#?!pip?install?neuralprophet import?pandas?as?pd from?fbprophet?import?Prophet from?neuralprophet?import?NeuralProphet from?sklearn.metrics?import?mean_squared_error#?plotting import?matplotlib.pyplot?as?plt#?settings plt.style.use('seaborn') plt.rcParams["figure.figsize"]?=?(16,?8) df?=?pd.read_csv('./data/wp_log_peyton_manning.csv') print(f'The?dataset?contains?{len(df)}?observations.') df.head() The dataset contains 2905 observations.| 2007-12-10 | 9.590761 |
| 2007-12-11 | 8.519590 |
| 2007-12-12 | 8.183677 |
| 2007-12-13 | 8.072467 |
| 2007-12-14 | 7.893572 |
2.Prophet預(yù)測(cè)
test_length?=?365 df_train?=?df.iloc[:-test_length] df_test?=?df.iloc[-test_length:] prophet_model?=?Prophet() prophet_model.fit(df_train) future_df?=?prophet_model.make_future_dataframe(periods=test_length) preds_df_1?=?prophet_model.predict(future_df) prophet_model.plot_components(preds_df_1); prophet_model.plot(preds_df_1);?3. NeuralProphet
4.效果比較
NeuralProphet的效果比Prophet好了很多。
小結(jié)
NeuralProphet在時(shí)間序列預(yù)測(cè)的效果上面一般會(huì)比Prophet好很多,在遇到時(shí)間序列問題的時(shí)候強(qiáng)烈建議大家嘗試一下。
參考文獻(xiàn)
?https://towardsdatascience.com/facebooks-prophet-deep-learning-neuralprophet-76796aed1d86
總結(jié)
以上是生活随笔為你收集整理的【机器学习】NeuralProphet,这个时序工具包也太强了吧...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何用轻量级RTSP服务本地生成RTSP
- 下一篇: eclipse中The JSP spec