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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 如何在評估機器學習算法時選擇正確的測試選項 > 原文: [https://machinelearningmastery.com/how-to-choose-the-right-test-options-when-evaluating-machine-learning-algorithms/](https://machinelearningmastery.com/how-to-choose-the-right-test-options-when-evaluating-machine-learning-algorithms/) 當[評估機器學習算法](http://machinelearningmastery.com/how-to-evaluate-machine-learning-algorithms/ "How to Evaluate Machine Learning Algorithms")時使用的測試選項可能意味著過度學習,平庸的結果和可用的最先進結果之間的差異,您可以自信地從屋頂上呼喊(您真的覺得有時這樣做)。 在本文中,您將發現可在算法評估測試工具中使用的標準測試選項,以及下次如何選擇正確的選項。 ## 隨機性 選擇正確的測試選項的困難的根源是隨機性。大多數(幾乎所有)機器學習算法都以某種方式使用隨機性。隨機性可以在算法中是明確的,或者可以在選擇用于訓練算法的數據的樣本中。 [![Randomness](https://img.kancloud.cn/be/ac/beac6b92a88f21046030eddc2a307fbb_300x200.jpg)](https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2014/02/randomness.jpg) 隨機性 攝影: [afoncubierta](http://www.flickr.com/photos/afoncubierta/12020857005/sizes/l/) ,保留一些權利 這并不意味著算法產生隨機結果,這意味著它們產生具有一些噪聲或[方差](http://en.wikipedia.org/wiki/Variance)的結果。我們稱這種類型的有限方差,隨機和利用它的算法,[隨機算法](http://en.wikipedia.org/wiki/Stochastic_process)。 ## 對相同數據進行訓練和測試 如果您有數據集,則可能需要在數據集上訓練模型,然后在該數據集上報告模型的結果。那個模型有多好,對吧? 這種評估算法的方法的問題在于,您確實會知道算法在數據集上的表現,但是沒有任何關于算法將如何對未訓練模型的數據執行的指示(所謂的看不見的數據) )。 這很重要,只有當您想使用該模型對未見數據進行預測時。 ## 分裂測試 使用一個數據集來訓練和估計算法在看不見的數據上的表現的一種簡單方法是拆分數據集。您獲取數據集,并將其拆分為訓練數據集和測試數據集。例如,您隨機選擇66%的實例進行訓練,并將剩余的34%用作測試數據集。 該算法在訓練數據集上運行,并在測試數據集上創建和評估模型,并獲得表現準確度,即87%的分類準確度。 當您擁有大量數據或訓練模型時(特別是資源或時間),吐痰測試速度非常快。對非常大的數據集進行拆分測試可以準確估計算法的實際表現。 算法對數據有多好?我們可以自信地說它可以達到87%的準確度嗎? 問題是如果我們再次將訓練數據集吐出到不同的66%/ 34%分割中,我們將得到與我們的算法不同的結果。這稱為模型方差。 ## 多個拆分測試 分裂測試在數據集的不同拆分中獲得不同結果的問題的解決方案是減少隨機過程的方差并多次執行。我們可以從相當數量的運行中收集結果(比如10)并取平均值。 例如,假設我們將數據集分成66%/ 34%,運行我們的算法并得到準確度,我們用10次不同的分割完成了10次。我們可能有10個準確度分數如下:87,87,88,89,88,86,88,87,88,87。 我們模型的平均表現為87.5,標準偏差約為0.85。 [![Coin Toss](https://img.kancloud.cn/da/b3/dab37f89b0bd66ea683a5f4b13347816_237x300.jpg)](https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2014/02/coin-toss.jpg) 硬幣折騰 照片由 [ICMA照片](http://www.flickr.com/photos/icma/3635981474/sizes/l/),保留一些權利 多個拆分測試的一個問題是,某些數據實例可能永遠不會包含在訓練或測試中,而其他數據實例可能會多次選擇。結果是,這可能會使結果產生偏差,并且可能無法對算法的準確性給出有意義的概念。 ## 交叉驗證 確保每個實例用于訓練和測試相同次數同時減少準確度得分的方差的問題的解決方案是使用[交叉驗證](http://en.wikipedia.org/wiki/Cross-validation_(statistics))。特別是k折交叉驗證,其中k是數據集中要進行的拆分數。 例如,讓我們選擇k = 10的值(非常常見)。這將數據集分成10個部分(10倍),算法將運行10次。每次運行算法時,它將在90%的數據上進行訓練,并在10%的數據上進行測試,每次運行算法將改變算法測試的10%的數據。 在此示例中,每個數據實例將恰好用作訓練實例9次,并作為測試實例1次。準確度不是平均值和標準偏差,而是精確的準確度得分,表示進行了多少次正確的預測。 k折交叉驗證方法是用于評估算法在數據集上的表現的首選方法。您希望選擇k值,為您的算法提供大小合適的訓練和測試數據集。不太不成比例(對于訓練或測試來說太大或太小)。如果您有大量數據,則可能不得不采用數據采樣或恢復分割測試。 交叉驗證確實可以對未見數據的算法表現進行無偏估計,但如果算法本身使用隨機性會怎樣。每次用不同的隨機數種子(偽隨機序列的開始)訓練時,該算法將對相同的訓練數據產生不同的結果。交叉驗證不考慮算法預測的方差。 另一個值得關注的問題是交叉驗證本身使用隨機性來決定如何將數據集拆分為k個折疊。交叉驗證不會估計算法如何使用不同的折疊集合執行。 這只有在您想要了解算法在數據集上的穩健性時才有意義。 ## 多重交叉驗證 考慮算法本身方差的一種方法是多次運行交叉驗證,并從每次運行中獲取算法精度的均值和標準差。 這將為您提供算法在數據集上的表現估計,以及對表現的穩健性(標準偏差的大小)的估計。 如果算法A有一個均值和標準差,算法B有另一個均值和標準差,并且它們不同(例如,算法A具有更高的準確度),您如何知道差異是否有意義? 這只有在您想比較算法之間的結果時才有意義。 ## 統計學意義 當使用多次k次交叉驗證時,比較算法表現測量的解決方案是使用[統計顯著性](http://en.wikipedia.org/wiki/Statistical_hypothesis_testing)測試(如[學生t檢驗](http://en.wikipedia.org/wiki/Student's_t-test))。 多次運行k折交叉驗證的結果是一個數字列表。我們希望使用均值和標準差來總結這些數字。您可以將這些數字視為來自基礎人群的樣本。統計顯著性檢驗回答了這個問題:兩個樣本來自同一群體嗎? (沒有不同)。如果答案是“是”,則即使平均值和標準偏差不同,也可以說差異在統計上不顯著。 我們可以使用統計顯著性檢驗來表示在使用多次運行時算法結果之間的差異(或缺乏差異)(如使用不同隨機數種子的多次k次交叉驗證)。這可以在我們想要對結果做出準確的聲明時(算法A優于算法B且差異具有統計顯著性) 這不是故事的結尾,因為這些測試(p值)有不同的統計顯著性測試(參數和非參數)和參數。我打算在這里畫線,因為如果你已經跟我走了這么遠,你現在已經足夠了解選擇測試選項以產生嚴格的(可發布的!)結果。 ## 摘要 在這篇文章中,您發現了在設計測試工具以評估機器學習算法時可用的主要測試選項之間的區別。 具體來說,您了解了實用程序和問題: * 對同一數據集進行訓練和測試 * 拆分測試 * 多次拆分測試 * 交叉驗證 * 多重交叉驗證 * 統計學意義 如有疑問,請使用k折交叉驗證(k = 10),并在想要有意義地比較數據集上的算法時,使用多次k-fold交叉驗證和統計顯著性檢驗。
                  <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>

                              哎呀哎呀视频在线观看