<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 時間序列預測作為監督學習 > 原文: [https://machinelearningmastery.com/time-series-forecasting-supervised-learning/](https://machinelearningmastery.com/time-series-forecasting-supervised-learning/) 時間序列預測可以被視為監督學習問題。 通過重新構建時間序列數據,您可以訪問針對問題的標準線性和非線性機器學習算法套件。 在這篇文章中,您將了解如何重新構建時間序列問題,作為機器學習的監督學習問題。閱讀這篇文章后,你會知道: * 什么是監督學習,以及它是如何成為所有預測建模機器學習算法的基礎。 * 用于構建時間序列數據集的滑動窗口方法以及如何使用它。 * 如何使用滑動窗口進行多變量數據和多步預測。 讓我們開始吧。 ![Time Series Forecasting as Supervised Learning](https://img.kancloud.cn/90/2b/902baf27a1e65151cbd04f9ca1afbda4_640x427.jpg) 時間序列預測作為監督學習 照片由[JeroenLooyé](https://www.flickr.com/photos/looye/6780166094/),保留一些權利。 ## 監督機器學習 大多數實際機器學習使用監督學習。 監督學習是輸入變量( **X** )和輸出變量( **y** )的地方,您可以使用算法來學習從輸入到輸出的映射函數。 ```py Y = f(X) ``` 目標是近似真實的底層映射,以便當您有新的輸入數據( **X** )時,您可以預測該數據的輸出變量( **y** )。 下面是監督學習數據集的設計示例,其中每行是由一個輸入變量( **X** )和一個要預測的輸出變量( **y** )組成的觀察。 ```py X, y 5, 0.9 4, 0.8 5, 1.0 3, 0.7 4, 0.9 ``` 它被稱為監督學習,因為從訓練數據集學習算法的過程可以被認為是監督學習過程的教師。 我們知道正確的答案;該算法迭代地對訓練數據進行預測,并通過進行更新來糾正。當算法達到可接受的表現水平時,學習停止。 監督學習問題可以進一步分為回歸和分類問題。 * **分類**:分類問題是輸出變量是一個類別,例如“ _red_ ”和“ _blue_ ”或“_ 疾病 _ “和”_ 沒有疾病 _。“ * **回歸**:回歸問題是當輸出變量是實際值時,例如“_ 美元 _”或“_ 權重 _。”上面的人為舉例是回歸問題。 ## 時間序列數據的滑動窗口 時間序列數據可以表達為監督學習。 給定時間序列數據集的數字序列,我們可以將數據重組為看起來像監督學習問題。我們可以使用前面的時間步長作為輸入變量,并使用下一個時間步作為輸出變量。 讓我們以一個例子來具體化。想象一下,我們有一個時間序列如下: ```py time, measure 1, 100 2, 110 3, 108 4, 115 5, 120 ``` 我們可以通過使用前一時間步的值來預測下一個時間步的值,將此時間序列數據集重組為監督學習問題。以這種方式重新組織時間序列數據集,數據看起來如下: ```py X, y ?, 100 100, 110 110, 108 108, 115 115, 120 120, ? ``` 查看上面轉換的數據集并將其與原始時間序列進行比較。以下是一些觀察結果: * 我們可以看到前一個時間步長是輸入( **X** ),下一個時間步長是我們監督學習問題中的輸出( **y** )。 * 我們可以看到觀察之間的順序被保留,并且在使用該數據集訓練監督模型時必須繼續保留。 * 我們可以看到,我們沒有先前的值可以用來預測序列中的第一個值。我們將刪除此行,因為我們無法使用它。 * 我們還可以看到,我們沒有已知的下一個值來預測序列中的最后一個值。我們可能還希望在訓練我們的監督模型時刪除此值。 使用先前時間步驟來預測下一個時間步驟稱為滑動窗口方法。簡而言之,在一些文獻中它可以被稱為窗口方法。在統計和時間序列分析中,這稱為滯后或滯后方法。 先前時間步數稱為窗口寬度或滯后大小。 這個滑動窗口是我們如何將任何時間序列數據集轉換為監督學習問題的基礎。從這個簡單的例子中,我們可以注意到一些事情: * 我們可以看到這可以如何將時間序列轉換為回歸或分類監督學習問題,用于實值或標記的時間序列值。 * 我們可以看到,一旦按照這種方式準備時間序列數據集,可以應用任何標準線性和非線性機器學習算法,只要保留行的順序即可。 * 我們可以看到如何增加寬度滑動窗口以包括更多的先前時間步長。 * 我們可以看到滑動窗口方法如何用于具有多個值的時間序列,或所謂的多變量時間序列。 我們將探討滑動窗口的一些使用,接下來開始使用它來處理時間序列,在每個時間步驟有多個觀察點,稱為多變量時間序列。 ## 具有多變量時間序列數據的滑動窗口 在時間序列數據集中記錄的給定時間的觀測數量很重要。 傳統上,使用不同的名稱: * **單變量時間序列**:這些數據集中每次只觀察到一個變量,例如每小時的溫度。上一節中的示例是單變量時間序列數據集。 * **多變量時間序列**:這些是每次觀察到兩個或多個變量的數據集。 大多數時間序列分析方法,甚至關于該主題的書籍,都集中在單變量數據上。這是因為它是最容易理解和使用的。多變量數據通常更難以使用。模型更難,而且許多經典方法往往表現不佳。 > 多變量時間序列分析同時考慮多個時間序列。 ......總的來說,它比單變量時間序列分析復雜得多 - 第 1 頁,[多變量時間序列分析:R 和金融應用](http://www.amazon.com/dp/1118617908?tag=inspiredalgor-20)。 使用機器學習時間序列的最佳位置是經典方法的落后。這可能是復雜的單變量時間序列,并且考慮到額外的復雜性,更可能是多變量時間序列。 下面是另一個工作示例,使滑動窗口方法具體為多變量時間序列。 假設我們有下面設想的多變量時間序列數據集,每個時間步都有兩個觀察結果。我們還假設我們只關注預測 **measure2** 。 ```py time, measure1, measure2 1, 0.2, 88 2, 0.5, 89 3, 0.7, 87 4, 0.4, 88 5, 1.0, 90 ``` 我們可以將此時間序列數據集重新構建為窗口寬度為 1 的監督學習問題。 這意味著我們將使用 **measure1** 和 **measure2** 的先前時間步長值。我們還將為 **measure1** 提供下一個時間步長值。然后我們將預測 **measure2** 的下一個時間步長值。 這將為我們提供 3 個輸入要素和一個輸出值,以預測每種訓練模式。 ```py X1, X2, X3, y ?, ?, 0.2 , 88 0.2, 88, 0.5, 89 0.5, 89, 0.7, 87 0.7, 87, 0.4, 88 0.4, 88, 1.0, 90 1.0, 90, ?, ? ``` 我們可以看到,就像上面的單變量時間序列示例一樣,我們可能需要刪除第一行和最后一行以訓練我們的監督學習模型。 這個例子提出了一個問題,如果我們想要預測下一個時間步的 **measure1** 和 **measure2** 怎么辦? 在這種情況下也可以使用滑動窗口方法。 使用上面相同的時間序列數據集,我們可以將其稱為監督學習問題,其中我們預測 **measure1** 和 **measure2** 具有相同的窗口寬度 1,如下所示。 ```py X1, X2, y1, y2 ?, ?, 0.2, 88 0.2, 88, 0.5, 89 0.5, 89, 0.7, 87 0.7, 87, 0.4, 88 0.4, 88, 1.0, 90 1.0, 90, ?, ? ``` 沒有多少監督學習方法可以處理多個輸出值的預測而無需修改,但是一些方法,如人工神經網絡,幾乎沒有什么問題。 我們可以考慮預測多個值作為預測序列。在這種情況下,我們預測了兩個不同的輸出變量,但我們可能想要預測一個輸出變量之前的多個時間步長。 這稱為多步預測,將在下一節中介紹。 ## 具有多步預測的滑動窗口 預測的時間步數很重要。 同樣,根據預測的時間步數,傳統的問題是使用不同的名稱: * **一步預測**:這是預測下一個時間步(t + 1)的地方。 * **多步預測**:這是預測兩個或更多未來時間步長的地方。 到目前為止,我們所看到的所有例子都是一步預測。 有許多方法可以將多步預測建模為監督學習問題。我們將在以后的文章中介紹其中一些替代方法。 目前,我們正專注于使用滑動窗口方法構建多步預測。 考慮來自上面第一個滑動窗口示例的相同的單變量時間序列數據集: ```py time, measure 1, 100 2, 110 3, 108 4, 115 5, 120 ``` 我們可以將這個時間序列構建為一個兩步預測數據集,用于監督學習,窗口寬度為 1,如下所示: ```py X1, y1, y2 ? 100, 110 100, 110, 108 110, 108, 115 108, 115, 120 115, 120, ? 120, ?, ? ``` 我們可以看到第一行和最后兩行不能用于訓練監督模型。 這也是顯示輸入變量負擔的一個很好的例子。具體而言,監督模型僅使用 **X1** 來預測 **y1** 和 **y2** 。 您的問題需要仔細考慮和實驗才能找到導致模型表現可接受的窗口寬度。 ## 進一步閱讀 如果您正在尋找有關如何使用時間序列數據作為機器學習問題的更多資源,請參閱以下兩篇論文: * [順序數據機器學習:回顧](http://web.engr.oregonstate.edu/~tgd/publications/mlsd-ssspr.pdf)(2002)[PDF] * [時間序列預測的機器學習策略](http://link.springer.com/chapter/10.1007%2F978-3-642-36318-4_3)(2013)([也幻燈片](http://www.ulb.ac.be/di/map/gbonte/ftp/time_ser.pdf) PDF) 有關如何執行此操作的 Python 代碼,請參閱帖子: * [如何將時間序列轉換為 Python 中的監督學習問題](http://machinelearningmastery.com/convert-time-series-supervised-learning-problem-python/) ## 摘要 在這篇文章中,您了解了如何將時間序列預測問題重新構建為用于機器學習方法的監督學習問題。 具體來說,你學到了: * 監督學習是將機器學習問題框定為輸入和輸出觀察的最流行方式。 * 滑動窗口是將時間序列數據集重組為監督學習問題的方法。 * 多變量和多步預測時間序列也可以使用滑動窗口方法構建為監督學習。 您對滑動窗口方法或此帖子有任何疑問嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看