在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁(yè) > 博客 > 時(shí)間序列的自回歸理論和實(shí)現(xiàn)

            時(shí)間序列的自回歸理論和實(shí)現(xiàn)

            發(fā)布人:數(shù)據(jù)派THU 時(shí)間:2021-10-20 來(lái)源:工程師 發(fā)布文章

            來(lái)源:DeepHub IMBA

            本篇文章結(jié)構(gòu)如下:

            1. 自回歸-理論和數(shù)學(xué)

            2. 在Python中實(shí)現(xiàn)的自動(dòng)回歸

            3. 自回歸-選擇最好的參數(shù)值

            4. 結(jié)論

            自回歸

            術(shù)語(yǔ) AutoRegression (AR) 與來(lái)自統(tǒng)計(jì)的常規(guī)回歸密切相關(guān)。唯一的問(wèn)題是 AR 模型使用來(lái)自相同輸入變量的滯后格式數(shù)據(jù)——這就是 AutoRegression 的 Auto 部分。

            AutoRegression 的預(yù)測(cè)能力有限,就像簡(jiǎn)單的移動(dòng)平均線一樣。該算法使用過(guò)去值的線性組合來(lái)進(jìn)行未來(lái)預(yù)測(cè)。一般的 AutoRegression 模型用以下公式表示:

            1.png

            其中 c 是常數(shù),phi 是 p 階以下的滯后系數(shù),epsilon 是不可約誤差(白噪聲)。

            使用 AR 模型時(shí),您只需要指定參數(shù) p 的值。如果 p=1,則 AR 模型公式簡(jiǎn)化為:

            2.png

            就這么簡(jiǎn)單!

            p 的更高階數(shù)往往會(huì)給出更好的預(yù)測(cè)結(jié)果,但僅限于某個(gè)點(diǎn)。稍后您將看到如何自動(dòng)為 p 選擇最佳值。但首先,讓我們看看如何用 Python 實(shí)現(xiàn) AutoRegression。

            在 Python 中的實(shí)現(xiàn)自回歸

            您今天將創(chuàng)建自己的數(shù)據(jù)集。這是一條簡(jiǎn)單的直線,添加了一點(diǎn)噪音:

            import numpy as np
             import pandas as pd
             from sklearn.metrics import mean_squared_error
             from statsmodels.tsa.ar_model import AR
             import matplotlib.pyplot as plt
             from matplotlib import rcParams
             from cycler import cycler
             rcParams['figure.figsize'] = 18, 5
             rcParams['axes.spines.top'] = False
             rcParams['axes.spines.right'] = False
             rcParams['axes.prop_cycle'] = cycler(color=['#365977'])
             rcParams['lines.linewidth'] = 2.5
             # Create
             np.random.seed(2)
             xs = np.arange(0, 500, 5)
             ys = [x + np.random.random() * 10 for x in xs]
             df = pd.DataFrame(data={
                 'x': xs,
                 'y': ys
             })
             # Plot
             plt.title('Random dataset', size=20)
             plt.plot(df['y']);

            這是它的樣子:

            3.jpg

            下一步是將數(shù)據(jù)集劃分為訓(xùn)練和測(cè)試子集。 將使用最后 10 個(gè)數(shù)據(jù)點(diǎn)進(jìn)行測(cè)試,并使用其他所有數(shù)據(jù)進(jìn)行訓(xùn)練:

            # Train/test split
             df_train = df[:-10]
             df_test = df[-10:]
             # Plot
             plt.title('Random dataset train and test sets', size=20)
             plt.plot(df_train['y'], label='Training data')
             plt.plot(df_test['y'], color='gray', label='Testing data')
             plt.legend();

            以下是兩個(gè)數(shù)據(jù)集的樣子:

            4.jpg

            接下來(lái),將聲明一個(gè)用于訓(xùn)練和可視化 AR 模型的函數(shù) — train_and_plot(maxlag: int)。此功能在這里是為了方便,以避免一遍又一遍地復(fù)制粘貼幾乎相同的代碼。它在訓(xùn)練集上訓(xùn)練 AR(p=maxlag) 模型,并以圖形方式比較預(yù)測(cè)和測(cè)試集。

            該函數(shù)還會(huì)在繪圖副標(biāo)題中打印模型系數(shù),因此您可以根據(jù)需要將它們與之前討論的數(shù)學(xué)公式聯(lián)系起來(lái)。

            這是代碼:

             def train_and_plot(maxlag):
                 model = AR(df_train['y']).fit(maxlag=maxlag, method='mle')
                 forecasts = model.predict(
                     start=len(df_train),
                     end=len(df_train) + len(df_test) - 1,
                     dynamic=False
                )
                 parameters = model.params.to_dict()
                 for k, v in parameters.items():
                     parameters[k] = np.round(v, 3)
                 plt.title(f'AR({maxlag}) training/testing data and forecasts', size=20, y=1.1)
                 plt.suptitle(parameters, y=0.94)
                 plt.plot(df_train['y'], label='Training data')
                 plt.plot(df_test['y'], color='gray', label='Testing data')
                 plt.plot(forecasts, color='orange', label='Forecasts')
                 plt.legend();

            現(xiàn)在可以使用此函數(shù)通過(guò)在新單元格中執(zhí)行 train_and_plot(maxlag=1) 來(lái)訓(xùn)練簡(jiǎn)單的 AR(1) 模型。它顯示下圖:

            5.jpg

            將參數(shù) p 更改為想要的任何內(nèi)容。例如,AR(2) 模型結(jié)果如下所示 (train_and_plot(maxlag=2)):

            6.jpg

            問(wèn)題仍然存在——這個(gè)數(shù)據(jù)集的最佳 AR 模型順序是什么?讓我們?cè)谙乱还?jié)中回答這個(gè)問(wèn)題。

            AutoRegression - 選擇最佳參數(shù)值

            使用 AR(1) 和 AR(2) 獲得的預(yù)測(cè)看起來(lái)并不那么有希望。你總是想優(yōu)化 p 的值。一種方法是繪制自相關(guān)圖和偏自相關(guān)圖并對(duì)其進(jìn)行檢查,但這工作量太大。

            更好的方法是在循環(huán)內(nèi)訓(xùn)練 AR(1) 到 AR(n) 模型,并跟蹤測(cè)試集的性能??梢允褂?RMSE 或任何其他指標(biāo)來(lái)執(zhí)行此操作。

            這是一個(gè)簡(jiǎn)單的代碼片段,可以做到這一點(diǎn):

             # Max lag order
             max_p = 10
             # To store RMSE
             errors = {}
             for p in range(1, max_p + 1):
                 # Train and predict
                 model = AR(df_train['y']).fit(maxlag=p, dynamic=False)
                 preds = model.predict(
                     start=len(df_train),
                     end=len(df_train) + len(df_test) - 1,
                     dynamic=False
                )
                 # Calculate and store RMSE
                 error = mean_squared_error(df_test['y'], preds, squared=False)
                 errors[f'AR({p})'] = error

            以下是 AR(1) 到 AR(10) 模型的誤差:

            7.png

            看起來(lái) AR(5) 模型在測(cè)試集上的誤差最低。以下是數(shù)據(jù)集和預(yù)測(cè)在此模型順序中的樣子:

            8.jpg

            使用 AIC 指標(biāo)進(jìn)行評(píng)估也很常見,因?yàn)樗鼉A向于簡(jiǎn)單的模型而不是復(fù)雜的模型。這兩個(gè)指標(biāo)都表明 AR(5) 是最好的模型。

            總結(jié)

            可以使用 AR 模型來(lái)預(yù)測(cè)簡(jiǎn)單的數(shù)據(jù)集。該算法與移動(dòng)平均模型結(jié)合使用時(shí)效果最佳,這是我們將在下一篇文章中討論的主題。

            如果您決定將 AR 模型應(yīng)用于 Airline Passengers 等數(shù)據(jù)集,則無(wú)論模型順序如何,都不會(huì)獲得良好的預(yù)測(cè)結(jié)果。使數(shù)據(jù)集靜止可能會(huì)有所幫助,但預(yù)測(cè)仍然不如指數(shù)平滑法。

            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

            加速度計(jì)相關(guān)文章:加速度計(jì)原理


            關(guān)鍵詞: AI

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉