<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Python 中時間序列預測的指數平滑的溫和介紹 > 原文: [https://machinelearningmastery.com/exponential-smoothing-for-time-series-forecasting-in-python/](https://machinelearningmastery.com/exponential-smoothing-for-time-series-forecasting-in-python/) 指數平滑是單變量數據的時間序列預測方法,可以擴展為支持具有系統趨勢或季節性成分的數據。 它是一種強大的預測方法,可用作流行的 Box-Jenkins ARIMA 系列方法的替代方法。 在本教程中,您將發現單變量時間序列預測的指數平滑方法。 完成本教程后,您將了解: * 什么是指數平滑以及它與其他預測方法的不同之處。 * 指數平滑的三種主要類型以及如何配置它們。 * 如何在 Python 中實現指數平滑。 讓我們開始吧。 ![A Gentle Introduction to Exponential Smoothing for Time Series Forecasting in Python](https://img.kancloud.cn/34/54/3454208d5464c387ab484839f46967f8_640x425.jpg) Python 中時間序列預測的指數平滑的溫和介紹 照片由 [Wolfgang Staudt](https://www.flickr.com/photos/wolfgangstaudt/2204054918/) ,保留一些權利。 ## 教程概述 本教程分為 4 個部分;他們是: 1. 什么是指數平滑? 2. 指數平滑的類型 3. 如何配置指數平滑 4. Python 中的指數平滑 ## 什么是指數平滑? 指數平滑是單變量數據的時間序列預測方法。 像 Box-Jenkins ARIMA 系列方法這樣的時間序列方法開發了一種模型,其中預測是近期過去觀察或滯后的加權線性和。 指數平滑預測方法的類似之處在于預測是過去觀察的加權和,但模型明確地使用指數減小的權重用于過去的觀察。 具體而言,過去的觀察以幾何減小的比率加權。 > 使用指數平滑方法產生的預測是過去觀測的加權平均值,隨著觀測結果的變化,權重呈指數衰減。換句話說,觀察越近,相關重量越高。 - 第 171 頁,[預測:原則和實踐](https://amzn.to/2xlJsfV),2013。 指數平滑方法可以被視為對等,并且是流行的 Box-Jenkins ARIMA 類時間序列預測方法的替代方法。 總的來說,這些方法有時被稱為 ETS 模型,指的是錯誤,趨勢和季節性的顯式建模。 ## 指數平滑的類型 指數平滑時間序列預測方法有三種主要類型。 一種假設沒有系統結構的簡單方法,明確處理趨勢的擴展,以及增加季節性支持的最先進方法。 ### 單指數平滑 單指數平滑,簡稱 SES,也稱為簡單指數平滑,是一種沒有趨勢或季節性的單變量數據的時間序列預測方法。 它需要一個名為 _alpha_ ( _a_ )的參數,也稱為平滑因子或平滑系數。 該參數控制在先前時間步驟的觀察結果的影響以指數方式衰減的速率。 Alpha 通常設置為介于 0 和 1 之間的值。大值意味著模型主要關注最近的過去觀察,而較小的值意味著在進行預測時會考慮更多的歷史記錄。 > 接近 1 的值表示快速學習(即,只有最近的值影響預測),而接近 0 的值表示學習緩慢(過去的觀察對預測有很大影響)。 - 第 89 頁,[實用時間序列預測與 R](https://amzn.to/2LGKzKm) ,2016 年。 超參數: * **Alpha** :級別的平滑因子。 ### 雙指數平滑 雙指數平滑是指數平滑的擴展,明確增加了對單變量時間序列趨勢的支持。 除了用于控制水平平滑因子的 _alpha_ 參數外,還增加了一個額外的平滑因子來控制稱為 _beta_ (_ 的趨勢變化影響的衰減。 b_ )。 該方法支持以不同方式變化的趨勢:加法和乘法,取決于趨勢分別是線性還是指數。 具有附加趨勢的雙指數平滑通常被稱為 Holt 的線性趨勢模型,以 Charles Holt 方法的開發者命名。 * **附加趨勢**:具有線性趨勢的雙指數平滑。 * **乘法趨勢**:具有指數趨勢的雙指數平滑。 對于更長距離(多步驟)的預測,這種趨勢可能會持續不切實際。因此,隨著時間的推移抑制趨勢可能是有用的。 阻尼意味著將未來時間步長趨勢的大小減小到一條直線(沒有趨勢)。 > Holt 線性方法產生的預測顯示出未來的不變趨勢(增加或減少)。更為極端的是指數趨勢法產生的預測[...]受此觀察的推動[...]引入了一個參數,在未來的某個時間“抑制”趨勢為平線。 - 第 183 頁,[預測:原則和實踐](https://amzn.to/2xlJsfV),2013。 與對趨勢本身進行建模一樣,我們可以使用相同的原理來抑制趨勢,特別是對于線性或指數阻尼效應,可以相加或相乘。阻尼系數 _Phi_ ( _p_ )用于控制阻尼率。 * **添加劑阻尼**:線性地抑制趨勢。 * **乘法阻尼**:以指數方式抑制趨勢。 超參數: * **Alpha** :級別的平滑因子。 * **Beta** :趨勢的平滑因子。 * **趨勢類型**:加法或乘法。 * **Dampen Type** :加法或乘法。 * **Phi** :阻尼系數。 ### 三次指數平滑 三次指數平滑是指數平滑的擴展,明確地增加了對單變量時間序列的季節性支持。 這種方法有時被稱為 Holt-Winters Exponential Smoothing,以該方法的兩個貢獻者命名:Charles Holt 和 Peter Winters。 除了α和β平滑因子之外,還添加了一個新參數,稱為 _gamma_ ( _g_ ),它控制對季節性成分的影響。 與趨勢一樣,季節性可以被建模為季節性線性或指數變化的加法或乘法過程。 * **添加季節性**:具有線性季節性的三重指數平滑。 * **乘法季節性**:具有指數季節性的三次指數平滑。 三指數平滑是指數平滑的最高級變化,通過配置,它還可以開發雙指數和單指數平滑模型。 > 作為一種自適應方法,Holt-Winter 的指數平滑允許水平,趨勢和季節性模式隨時間變化。 - 第 95 頁,[實用時間序列預測與 R](https://amzn.to/2LGKzKm) ,2016 年。 此外,為確保正確建模季節性,必須指定季節性時間段(_ 期間 _)中的時間步數。例如,如果系列是每月數據并且每年重復季節性時段,則期間= 12。 超參數: * **Alpha** :級別的平滑因子。 * **Beta** :趨勢的平滑因子。 * **Gamma** :季節性的平滑因子。 * **趨勢類型**:加法或乘法。 * **Dampen Type** :加法或乘法。 * **Phi** :阻尼系數。 * **季節性類型**:加法或乘法。 * **期間**:季節性時間段的時間步長。 ## 如何配置指數平滑 可以明確指定所有模型超參數。 對于專家和初學者來說,這可能具有挑戰性。 相反,通常使用數值優化來搜索和資助平滑系數( _alpha_ , _beta_ , _gamma_ 和 _phi_ )對于導致最低錯誤的模型。 > [...]更加穩健和客觀的方法來獲得任何指數平滑方法中包含的未知參數的值是從觀測數據中估計它們。 [...]未知參數和任何指數平滑方法的初始值可以通過最小化 SSE [平方誤差之和]來估算。 - 第 177 頁,[預測:原則和實踐](https://amzn.to/2xlJsfV),2013。 必須明確指定指定趨勢和季節性變化類型的參數,例如它們是加性或乘法的天氣以及它們是否應該被抑制。 ## Python 中的指數平滑 本節介紹如何在 Python 中實現指數平滑。 Statsmodels Python 庫中提供了 Python 中的指數平滑的實現。 這些實現基于 Rob Hyndman 和 George Athanasopoulos 的優秀書籍[預測:原理與實踐](https://amzn.to/2xlJsfV),2013 及其在“[預測](https://cran.r-project.org/web/packages/forecast/index.html)”包中的 R 實現方法的描述) 。 ### 單指數平滑 可以通過 SimpleExpSmoothing Statsmodels 類在 Python 中實現單指數平滑或簡單平滑。 首先,必須實例化 _SimpleExpSmoothing_ 類的實例并傳遞訓練數據。然后調用 _fit()_ 函數提供擬合配置,特別是稱為 _smoothing_level_ 的 _alpha_ 值。如果沒有提供或設置為 _ 無 _,模型將自動優化該值。 此 _fit()_ 函數返回包含學習系數的 _HoltWintersResults_ 類的實例。可以調用結果對象上的 _forecast()_ 或 _predict()_ 函數進行預測。 例如: ```py # single exponential smoothing ... from statsmodels.tsa.holtwinters import SimpleExpSmoothing # prepare data data = ... # create class model = SimpleExpSmoothing(data) # fit model model_fit = model.fit(...) # make prediction yhat = model_fit.predict(...) ``` ### 雙指數和三指數平滑 可以使用 ExponentialSmoothing Statsmodels 類在 Python 中實現單指數,雙指數和三指數平滑。 首先,必須實例化 ExponentialSmoothing 類的實例,同時指定訓練數據和模型的某些配置。 具體而言,您必須指定以下配置參數: * **趨勢**:趨勢分量的類型,作為加法的“_ 加 _”或乘法的“ _mul_ ”。可以通過將趨勢設置為“無”來禁用對趨勢建模。 * **阻尼**:是否應該抑制趨勢分量, _True_ 或 _False_ 。 * **季節性**:季節性成分的類型,為“_ 添加 _”為添加劑或“ _mul_ ”為乘法。可以通過將季節性組件設置為“無”來禁用它。 * **seasonal_periods** :季節性時間段內的時間步數,例如每年季節性結構 12 個月 12 個月([更多](https://robjhyndman.com/hyndsight/seasonal-periods/))。 然后通過調用 _fit()_ 函數將模型擬合到訓練數據上。 此功能允許您指定指數平滑模型的平滑系數或對其進行優化。默認情況下,它們已經過優化(例如 _ 優化= True_ )。這些系數包括: * **smoothing_level** ( _alpha_ ):該級別的平滑系數。 * **smoothing_slope** ( _beta_ ):趨勢的平滑系數。 * **smoothing_seasonal** ( _gamma_ ):季節性成分的平滑系數。 * **damping_slope** ( _phi_ ):阻尼趨勢的系數。 另外,擬合函數可以在建模之前執行基本數據準備;特別: * **use_boxcox** :是否執行系列的冪變換(True / False)或指定變換的 lambda。 _fit()_ 函數將返回包含學習系數的 _HoltWintersResults_ 類的實例。可以調用結果對象上的 _forecast()_ 或 _predict()_ 函數進行預測。 ```py # double or triple exponential smoothing ... from statsmodels.tsa.holtwinters import ExponentialSmoothing # prepare data data = ... # create class model = ExponentialSmoothing(data, ...) # fit model model_fit = model.fit(...) # make prediction yhat = model_fit.predict(...) ``` ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 圖書 * 第 7 章指數平滑,[預測:原則和實踐](https://amzn.to/2xlJsfV),2013。 * 第 6.4 節。時間序列分析簡介,[工程統計手冊](https://www.itl.nist.gov/div898/handbook/),2012。 * [實際時間序列預測與 R](https://amzn.to/2LGKzKm) ,2016 年。 ### API * [Statsmodels 時間序列分析](http://www.statsmodels.org/dev/tsa.html) * [statsmodels.tsa.holtwinters.SimpleExpSmoothing API](http://www.statsmodels.org/dev/generated/statsmodels.tsa.holtwinters.SimpleExpSmoothing.html) * [statsmodels.tsa.holtwinters.ExponentialSmoothing API](http://www.statsmodels.org/dev/generated/statsmodels.tsa.holtwinters.ExponentialSmoothing.html) * [statsmodels.tsa.holtwinters.HoltWintersResults API](http://www.statsmodels.org/dev/generated/statsmodels.tsa.holtwinters.HoltWintersResults.html) * [預測:時間序列和線性模型 R 包](https://cran.r-project.org/web/packages/forecast/index.html)的預測函數 ### 用品 * [維基百科上的指數平滑](https://en.wikipedia.org/wiki/Exponential_smoothing) ### 摘要 在本教程中,您發現了單變量時間序列預測的指數平滑方法。 具體來說,你學到了: * 什么是指數平滑以及它與其他預測方法的不同之處。 * 指數平滑的三種主要類型以及如何配置它們。 * 如何在 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>

                              哎呀哎呀视频在线观看