<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/how-to-develop-a-skilful-time-series-forecasting-model/](https://machinelearningmastery.com/how-to-develop-a-skilful-time-series-forecasting-model/) 您交給數據并告知他們開發預測模型。 _ 你做什么的?_ 這是一種常見的情況;遠比大多數人想象的要普遍。 * 也許您會收到一個 CSV 文件。 * 也許您可以訪問數據庫。 * 也許你正在開始比賽。 問題可以合理地定義: * 您擁有或可以訪問歷史時間序列數據。 * 您知道或可以找出需要預測的內容。 * 您知道或者可以了解在評估候選模型時最重要的是什么。 那么你如何解決這個問題呢? 除非你經歷過這場審判,否則你可能會掙扎。 * 你可能很難,因為你是機器學習和時間序列領域的新手。 * 即使您擁有機器學習經驗,也可能會因為時間序列數據不同而掙扎。 * 即使您具有時間序列預測背景,您也可能會遇到困難,因為機器學習方法可能優于您的數據的傳統方法。 在所有這些情況下,您將從仔細和系統地解決問題中受益。 在這篇文章中,我想給你一個特定的,可操作的程序,你可以用它來處理你的時間序列預測問題。 讓我們開始吧。 ![How to Develop a Skilful Time Series Forecasting Model](https://img.kancloud.cn/2f/46/2f468cd4dc01a648bbc3db935bd35d9d_640x277.jpg) 如何開發熟練的時間序列預測模型 照片由[制作肯尼亞](https://www.flickr.com/photos/makeitkenya/22036888582/),保留一些權利。 ## 流程概述 這個過程的目標是盡可能快地獲得“_ 足夠好的 _”預測模型。 這個過程可能會或可能不會提供最好的模型,但它會提供一個好的模型:一個比基線預測更好的模型,如果存在這樣的模型。 通常,此過程將提供的模型占問題可達到的 80%到 90%。 這個過程很快。因此,它專注于自動化。基于仔細分析,搜索超參數而不是指定超參數。我們鼓勵您并行測試模型套件,快速了解哪些有效,哪些無效。 盡管如此,這個過程非常靈活,如果您有時間和資源,您可以在給定的步驟中循環或盡可能深入。 這個過程分為四個部分;他們是: 1. 定義問題 2. 設計測試線束 3. 測試模型 4. 完成模型 您會注意到該過程不同于預測建模問題的經典線性工作。這是因為它旨在快速獲得工作預測模型,然后放慢速度,看看是否可以獲得更好的模型。 您處理新的時間序列預測問題的過程是什么? 在評論中分享。 ## 如何使用此過程 最大的錯誤是跳過步驟。 例如,幾乎所有初學者所犯的錯誤就是直接進行建模,而沒有深入了解正在解決的問題或如何穩健地評估候選解決方案。這幾乎總會導致大量的浪費時間。 慢下來,按照流程,完成每一步。 我建議為每個可以隨時重新運行的實驗提供單獨的代碼。 這很重要,以便您在發現錯誤,修復代碼和重新運行實驗時可以回退。您正在運行實驗并快速迭代,但如果您是草率的,那么您不能相信任何結果。在設計用于評估候選模型的測試工具時,這一點尤其重要。 讓我們仔細看看這個過程的每一步。 ## 1.定義問題 定義您的時間序列問題。 在每個主題中要考慮和激發問題的一些主題如下: 1. 輸入與輸出 1. 預測的輸入和輸出是什么? 2. 內生與外生 1. 什么是內生和外生變量? 3. 非結構化與結構化 1. 時間序列變量是非結構化的還是結構化的? 4. 回歸與分類 1. 您正在研究回歸或分類預測建模問題嗎? 2. 有哪些方法來構建時間序列預測問題? 5. 單變量與多變量 1. 您是在處理單變量或多變量時間序列問題嗎? 6. 單步與多步 1. 您需要單步驟還是多步驟預測? 7. 靜態與動態 1. 您需要靜態或動態更新的模型嗎? 即使您必須估計或猜測,也要回答每個問題。 一些有用的工具可以幫助您獲得答案: * 數據可視化(例如線圖等)。 * 統計分析(例如 ACF / PACF 圖等)。 * 領域專家。 * 項目利益相關 在了解更多信息后,請更新這些問題的答案。 ## 2.設計測試線束 設計可用于評估候選模型的測試工具。 這包括用于估計模型技能的方法和用于評估預測的度量。 如果您正在尋找想法,下面是一個常見的時間序列預測模型評估方案: 1. 將數據集拆分為訓練和測試集。 2. 在訓練數據集上擬合候選方法。 3. 直接對測試集進行預測或使用前向驗證。 4. 計算將預測與預期值進行比較的指標。 測試工具必須堅固耐用,您必須完全信任它提供的結果。 一個重要的考慮因素是確保用于數據準備的任何系數僅從訓練數據集中估算,然后應用于測試集。這可能包括數據標準化的平均值和標準差。 ## 3.測試模型 使用您的測試工具測試許多模型。 我建議您仔細設計實驗,以測試標準模型的一套配置并讓它們運行。每個實驗都可以將結果記錄到文件中,以便您可以快速發現每次運行中最前三到五個最熟練的配置。 您可以設計實驗的一些常見方法類別包括: * 基線。 * 持久性(網格搜索持久的滯后觀察) * 滾動移動平均線。 * ... * 自回歸。 * ARMA 用于固定數據。 * ARIMA 用于趨勢數據。 * SARIMA 提供季節性數據。 * ... * 指數平滑。 * 簡單的平滑 * Holt Winters 平滑 * ... * 線性機器學習。 * 線性回歸 * 嶺回歸 * 套索回歸 * 彈性網絡回歸 * ...。 * 非線性機器學習。 * k-最近鄰居 * 分類和回歸樹 * 支持向量回歸 * ... * 合奏機器學習。 * 套袋 * 推進 * 隨機森林 * 梯度提升 * ... * 深度學習。 * MLP * CNN * LSTM * 雜種 * ... 此列表基于單變量時間序列預測問題,但您可以根據問題的具體情況對其進行調整,例如:使用 VAR / VARMA /等。在多變量時間序列預測的情況下。 根據您的需要,插入更多您最喜歡的經典時間序列預測方法和機器學習方法。 這里的順序很重要,其結構越來越復雜,從古典到現代的方法。早期的方法很簡單,快速提供良好的結果;后來的方法更慢,更復雜,但也有更高的標準,以明確熟練。 由此產生的模型技能可用于棘輪。例如,最佳持久性配置的技能提供了所有其他模型必須超越的基線技能。如果自回歸模型比持久性更好,那么它就會成為一個優秀的新級別,以便將方法視為技巧。 理想情況下,您希望在進入下一個級別之前耗盡每個級別。例如。充分利用自回歸方法,并在繼續使用指數平滑方法之前,將結果用作新基線來定義“熟練”。 我最后深入學習,因為通常神經網絡在時間序列預測方面很差,但在這方面仍有很大的改進和實驗空間。 您擁有的時間和資源越多,您可以評估的配置就越多。 例如,有了更多的時間和資源,您可以: * 在已知已經表現良好的配置周圍以更精細的分辨率搜索模型配置。 * 搜索更多模型超參數配置。 * 使用分析在要搜索的模型超參數上設置更好的邊界。 * 使用領域知識更好地準備數據或設計輸入功能。 * 探索不同的潛在更復雜的方法。 * 探索表現良好的基礎模型的集合。 我還鼓勵您將數據準備方案作為模型運行的超參數包括在內。 一些方法將執行一些基本數據準備,例如 ARIMA 中的差分,然而,通常不清楚究竟需要什么數據準備方案或方案組合來最佳地將數據集呈現給建模算法。而不是猜測,網格搜索并根據實際結果決定。 一些要考慮的數據準備方案包括: * 差異化以消除趨勢。 * 季節性差異以消除季節性。 * 標準化為中心。 * 標準化為重新縮放。 * 電源轉換使正常。 如此多的搜索可能會很慢。 加快模型評估的一些想法包括: * 通過云硬件(例如 Amazon EC2)并行使用多臺計算機。 * 減小訓練或測試數據集的大小,以使評估過程更快。 * 如果以后有時間,請使用更粗糙的超參數網格并圈回。 * 也許不要為前進驗證中的每個步驟重新設計模型。 ## 4.完成模型 在上一個時間步驟結束時,您知道您的時間序列是否可預測。 如果它是可預測的,您將擁有一個熟悉該問題的前 5 到 10 個候選模型的列表。 您可以選擇一個或多個模型并完成它們。這包括在所有可用的歷史數據(訓練和測試)上訓練新的最終模型。 該模型已準備就緒;例如: * 預測未來。 * 將模型保存到文件以供以后用于進行預測。 * 將模型合并到用于進行預測的軟件中。 如果您有時間,可以隨時回到上一步,看看是否可以進一步改進最終模型。 如果數據隨時間顯著變化,則可能需要定期進行此操作。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 * [什么是時間序列預測?](https://machinelearningmastery.com/time-series-forecasting/) * [如何通過時間序列預測項目](https://machinelearningmastery.com/work-time-series-forecast-project/) * [如何訓練最終機器學習模型](https://machinelearningmastery.com/train-final-machine-learning-model/) ## 摘要 在這篇文章中,您發現了一個簡單的四步過程,您可以使用該過程快速發現針對時間序列預測問題的熟練預測模型。 你覺得這個過程有用嗎? 請在下面告訴我。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看