<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/prediction-intervals-for-machine-learning/](https://machinelearningmastery.com/prediction-intervals-for-machine-learning/) 從機器學習角度預測是隱藏該預測的不確定性的單一點。 預測間隔提供了量化和傳達預測中的不確定性的方法。它們與置信區間不同,而是設法量化群體參數中的不確定性,例如均值或標準差。預測間隔描述了單個特定結果的不確定性。 在本教程中,您將發現預測間隔以及如何計算簡單線性回歸模型。 完成本教程后,您將了解: * 預測間隔量化單點預測的不確定性。 * 對于簡單模型,可以分析地估計預測間隔,但對于非線性機器學習模型則更具挑戰性。 * 如何計算簡單線性回歸模型的預測區間。 讓我們開始吧。 ![Prediction Intervals for Machine Learning](img/b2a23414aebd999caccf82acbaf12503.jpg) 機器學習的預測間隔 照片由 [Jim Bendon](https://www.flickr.com/photos/jim_bendon_1957/7899315252/) 拍攝,保留一些權利。 ## 教程概述 本教程分為5個部分;他們是: 1. 什么是錯誤的點估計? 2. 什么是預測區間? 3. 如何計算預測區間 4. 線性回歸的預測區間 5. 工作示例 ## 為什么要計算預測區間? 在預測建模中,給定一些輸入變量,預測或預測是單個結果值。 例如: ```py yhat = model.predict(X) ``` 其中_是_是由訓練模型對給定輸入數據 _X_ 進行的估計結果或預測。 這是一個點預測。 根據定義,它是估計值或近似值,并包含一些不確定性。 不確定性來自模型本身的誤差和輸入數據中的噪聲。該模型是輸入變量和輸出變量之間關系的近似值。 鑒于用于選擇和調整模型的過程,它將是給定可用信息的最佳近似值,但它仍然會產生錯誤。來自域的數據自然會模糊輸入和輸出變量之間的潛在和未知關系。這將使擬合模型成為一項挑戰,同時也會使擬合模型成為預測的挑戰。 鑒于這兩個主要的誤差來源,他們從預測模型中預測的點數不足以描述預測的真實不確定性。 ## 什么是預測區間? 預測區間是預測的不確定性的量化。 它提供了結果變量估計的概率上限和下限。 > 單個未來觀察的預測間隔是具有指定置信度的區間,其將包含來自分布的未來隨機選擇的觀察。 - 第27頁,[統計間隔:從業者和研究人員指南](http://amzn.to/2G8w3IL),2017年。 在使用回歸模型進行預測或預測時,最常使用預測區間,其中正在預測數量。 預測間隔的呈現示例如下: _鑒于給定'x'的'y'預測,'a'到'b'的范圍有95%可能覆蓋真實結果。_ 預測間隔圍繞模型進行的預測,并希望涵蓋真實結果的范圍。 下圖有助于直觀地理解預測,預測間隔和實際結果之間的關系。 ![Relationship between prediction, actual value and prediction interval](img/10d156ba701139423f8a4dbc74d49292.jpg) 預測,實際值和預測區間之間的關系。 取自“用于估計模型輸出的預測間隔的機器學習方法”,2006。 預測間隔與置信區間不同。 置信區間量化估計的人口變量的不確定性,例如平均值或標準差。而預測間隔量化了從群體估計的單個觀察的不確定性。 在預測建模中,置信區間可用于量化模型的估計技能的不確定性,而預測區間可用于量化單個預測的不確定性。 預測間隔通常大于置信區間,因為它必須考慮置信區間和輸出變量的方差。 > 預測間隔總是比置信區間寬,因為它們考慮了與e [誤差]相關的不確定性,即不可減少的誤差。 - 第103頁,[統計學習導論:應用于R](http://amzn.to/2p1CKoB) ,2013。 ## 如何計算預測區間 預測區間被計算為模型的估計方差和結果變量的方差的某種組合。 預測間隔很容易描述,但在實踐中很難計算。 在線性回歸等簡單情況下,我們可以直接估計置信區間。 在非線性回歸算法(如人工神經網絡)的情況下,它更具挑戰性,需要選擇和實施專門技術。可以使用諸如自舉重采樣方法之類的一般技術,但計算上計算成本很高。 論文“[基于神經網絡的預測區間和新進展綜合評述](http://alumnus.caltech.edu/~amir/pred-intv-2.pdf)”提供了一個合理的近期研究神經網絡背景下非線性模型的預測區間。以下列表總結了一些可用于非線性機器學習模型的預測不確定性的方法: * Delta方法,來自非線性回歸領域。 * 貝葉斯方法,來自貝葉斯建模和統計。 * 均值 - 方差估計方法,使用估計的統計數據。 * Bootstrap方法,使用數據重采樣和開發模型集合。 我們可以使用下一節中的工作示例來具體計算預測區間。 ## 線性回歸的預測區間 線性回歸是描述輸入的線性組合以計算輸出變量的模型。 例如,估計的線性回歸模型可以寫成: ```py yhat = b0 + b1 . x ``` 是預測的_, _b0_ 和 _b1_ 是根據訓練數據估計的模型的系數, _x_ 是輸入變量。_ 我們不知道系數 _b0_ 和 _b1_ 的真實值。我們也不知道真實的群體參數,例如 _x_ 或 _y_ 的平均值和標準偏差。必須估計所有這些元素,這為模型的使用帶來了不確定性,以便進行預測。 我們可以做出一些假設,例如 _x_ 和 _y_ 的分布,并且由模型做出的預測誤差(稱為殘差)是高斯分布。 附近的預測間隔可以如下計算: ```py yhat +/- z * sigma ``` _y_ 是預測值, _z_ 是高斯分布的臨界值(例如,95%間隔為1.96), _sigma_ 是標準偏差預測的分布。 我們在實踐中并不知道。我們可以如下計算預測標準偏差的無偏估計(取自_用于估計模型輸出_的預測間隔的機器學習方法): ```py stdev = sqrt(1 / (N - 2) * e(i)^2 for i to N) ``` _stdev_ 是預測分布的標準偏差的無偏估計, _n_ 是所做的總預測,而 _e(i)_是之間的差異。 ith預測和實際價值。 ## 工作示例 讓我們以線性回歸預測區間為例,用一個實例說明。 首先,讓我們定義一個簡單的雙變量數據集,其中輸出變量( _y_ )取決于具有一些高斯噪聲的輸入變量( _x_ )。 下面的示例定義了我們將用于此示例的數據集。 ```py # generate related variables from numpy import mean from numpy import std from numpy.random import randn from numpy.random import seed from matplotlib import pyplot # seed random number generator seed(1) # prepare data x = 20 * randn(1000) + 100 y = x + (10 * randn(1000) + 50) # summarize print('x: mean=%.3f stdv=%.3f' % (mean(x), std(x))) print('y: mean=%.3f stdv=%.3f' % (mean(y), std(y))) # plot pyplot.scatter(x, y) pyplot.show() ``` 首先運行該示例打印兩個變量的均值和標準差。 ```py x: mean=100.776 stdv=19.620 y: mean=151.050 stdv=22.358 ``` 然后創建數據集的圖。 我們可以看到變量之間的明確的線性關系與點的擴展突出了關系中的噪聲或隨機誤差。 ![Scatter Plot of Related Variables](img/2a8ad4c0be4de37ef69d7d12cf9a5e85.jpg) 相關變量的散點圖 接下來,我們可以開發一個簡單的線性回歸,給出輸入變量 _x_ ,將預測 _y_ 變量。我們可以使用 [linregress()SciPy函數](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.linregress.html)擬合模型并返回模型的 _b0_ 和 _b1_ 系數。 ```py # fit linear regression model b1, b0, r_value, p_value, std_err = linregress(x, y) ``` 我們可以使用系數來計算每個輸入變量的預測 _y_ 值,稱為 _yhat_ 。結果點將形成表示學習關系的線。 ```py # make prediction yhat = b0 + b1 * x ``` 下面列出了完整的示例。 ```py # simple linear regression model from numpy.random import randn from numpy.random import seed from scipy.stats import linregress from matplotlib import pyplot # seed random number generator seed(1) # prepare data x = 20 * randn(1000) + 100 y = x + (10 * randn(1000) + 50) # fit linear regression model b1, b0, r_value, p_value, std_err = linregress(x, y) print('b0=%.3f, b1=%.3f' % (b1, b0)) # make prediction yhat = b0 + b1 * x # plot data and predictions pyplot.scatter(x, y) pyplot.plot(x, yhat, color='r') pyplot.show() ``` 運行該示例適合模型并打印系數。 ```py b0=1.011, b1=49.117 ``` 然后將系數與來自數據集的輸入一起使用以進行預測。得到的輸入和預測的 _y_ 值被繪制為數據集的散點圖頂部的線。 我們可以清楚地看到模型已經學習了數據集中的基礎關系。 ![Scatter Plot of Dataset with Line for Simple Linear Regression Model](img/eabd460c3fcbd68997e0d517d764ea01.jpg) 簡單線性回歸模型的線數據集散點圖 我們現在準備用我們的簡單線性回歸模型進行預測并添加預測間隔。 我們將像以前一樣適應模型。這次我們將從數據集中取一個樣本來演示預測間隔。我們將使用輸入進行預測,計算預測的預測間隔,并將預測和間隔與已知預期值進行比較。 首先,讓我們定義輸入,預測和期望值。 ```py x_in = x[0] y_out = y[0] yhat_out = yhat[0] ``` 接下來,我們可以估計預測方向上的標準偏差。 ```py SE = sqrt(1 / (N - 2) * e(i)^2 for i to N) ``` 我們可以使用NumPy數組直接計算它,如下所示: ```py # estimate stdev of yhat sum_errs = arraysum((y - yhat)**2) stdev = sqrt(1/(len(y)-2) * sum_errs) ``` 接下來,我們可以計算所選輸入的預測間隔: ```py interval = z . stdev ``` 我們將使用95%的顯著性水平,即高斯臨界值1.96。 一旦計算了間隔,我們就可以將預測的界限匯總給用戶。 ```py # calculate prediction interval interval = 1.96 * stdev lower, upper = yhat_out - interval, yhat_out + interval ``` 我們可以將所有這些結合在一起。下面列出了完整的示例。 ```py # linear regression prediction with prediction interval from numpy.random import randn from numpy.random import seed from numpy import power from numpy import sqrt from numpy import mean from numpy import std from numpy import sum as arraysum from scipy.stats import linregress from matplotlib import pyplot # seed random number generator seed(1) # prepare data x = 20 * randn(1000) + 100 y = x + (10 * randn(1000) + 50) # fit linear regression model b1, b0, r_value, p_value, std_err = linregress(x, y) # make predictions yhat = b0 + b1 * x # define new input, expected value and prediction x_in = x[0] y_out = y[0] yhat_out = yhat[0] # estimate stdev of yhat sum_errs = arraysum((y - yhat)**2) stdev = sqrt(1/(len(y)-2) * sum_errs) # calculate prediction interval interval = 1.96 * stdev print('Prediction Interval: %.3f' % interval) lower, upper = y_out - interval, y_out + interval print('95%% likelihood that the true value is between %.3f and %.3f' % (lower, upper)) print('True value: %.3f' % yhat_out) # plot dataset and prediction with interval pyplot.scatter(x, y) pyplot.plot(x, yhat, color='red') pyplot.errorbar(x_in, yhat_out, yerr=interval, color='black', fmt='o') pyplot.show() ``` 運行該示例估計 _yhat_ 標準差,然后計算置信區間。 一旦計算出,預測間隔就會呈現給用戶以獲得給定的輸入變量。因為我們設計了這個例子,我們知道了真實的結果,我們也展示了它。我們可以看到,在這種情況下,95%的預測間隔確實涵蓋了真實的預期值。 ```py Prediction Interval: 20.204 95% likelihood that the true value is between 160.750 and 201.159 True value: 183.124 ``` 還創建了一個圖,將原始數據集顯示為散點圖,將數據集預測為紅線,將預測和預測間隔分別顯示為黑點和線。 ![Scatter Plot of Dataset With Linear Model and Prediction Interval](img/d7f64618fbc3a7fe9ecd4c81e2c8b1f7.jpg) 線性模型和預測區間的數據集散點圖 ## 擴展 本節列出了一些擴展您可能希望探索的教程的想法。 * 總結容差,置信度和預測間隔之間的差異。 * 為標準機器學習數據集開發線性回歸模型,并計算小測試集的預測間隔。 * 詳細描述一種非線性預測區間方法的工作原理。 如果你探索任何這些擴展,我很想知道。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 帖子 * [如何以置信區間報告分類器表現](https://machinelearningmastery.com/report-classifier-performance-confidence-intervals/) * [如何計算Python中機器學習結果的Bootstrap置信區間](https://machinelearningmastery.com/calculate-bootstrap-confidence-intervals-machine-learning-results-python/) * [使用Python的置信區間理解時間序列預測不確定性](https://machinelearningmastery.com/time-series-forecast-uncertainty-using-confidence-intervals-python/) * [估計隨機機器學習算法的實驗重復次數](https://machinelearningmastery.com/estimate-number-experiment-repeats-stochastic-machine-learning-algorithms/) ### 圖書 * [了解新統計:影響大小,置信區間和元分析](http://amzn.to/2oQW6No),2017年。 * [統計間隔:從業者和研究人員指南](http://amzn.to/2G8w3IL),2017年。 * [統計學習簡介:應用于R](http://amzn.to/2p1CKoB) ,2013。 * [新統計學概論:估計,開放科學及其他](http://amzn.to/2FJlj5H),2016年。 * [預測:原則與實踐](http://amzn.to/2tFQ1Io),2013。 ### 文件 * [神經網絡模型的一些誤差估計的比較](https://pdfs.semanticscholar.org/31c8/17950a35c282c9da7ba7c7f927a6ff28a5af.pdf),1995。 * [用于估計模型輸出的預測區間的機器學習方法](https://www.sciencedirect.com/science/article/pii/S0893608006000153),2006。 * [基于神經網絡的預測間隔和新進展綜述](https://ieeexplore.ieee.org/abstract/document/5966350),2010。 ### API * [scipy.stats.linregress()API](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.linregress.html) * [matplotlib.pyplot.scatter()API](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html) * [matplotlib.pyplot.errorbar()API](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.errorbar.html) ### 用品 * 維基百科上的[預測區間](https://en.wikipedia.org/wiki/Prediction_interval) * [交叉驗證](https://stats.stackexchange.com/questions/226565/bootstrap-prediction-interval)上的Bootstrap預測間隔 ## 摘要 在本教程中,您發現了預測間隔以及如何計算簡單線性回歸模型。 具體來說,你學到了: * 預測間隔量化單點預測的不確定性。 * 對于簡單模型,可以分析估計預測間隔,但對于非線性機器學習模型則更具挑戰性。 * 如何計算簡單線性回歸模型的預測區間。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看