《機器學習(周志華)》筆記--模型的評估與選擇(1)--經驗誤差與擬合、偏差與方差


一、經驗誤差與擬合

  1、模型的評估

    機器學習的目的是使學到的模型不僅對已知數據而且對未知數據都能有很好的預測能力。不同的學習方法會訓練出不同的模型,不同的模型可能會對未知數據作出不同的預測,所以,如何評價模型好壞,並選擇出好的模型是我們所學的重點。

                        

  2、訓練集與測試集

    (1)為什么要划分訓練集和測試集?

     答:我們想要利用收集的西瓜數據構建一個機器學習模型,用來預測新的西瓜的好壞,但在將模型用於新的測量數據之前,我們需要知道模型是否有效,也就是說,我們是否應該相信它的預測結果。不幸的是,我們不能將用於構建模型的數據用於評估模型的性能。因為我們的模型會一直記住整個訓練集。所以,對於訓練集中的任何數據點總會預測成正確的標簽。這種記憶無法告訴我們模型的泛化能力如何,即預測新樣本的能力如何。我們要用新數據來評估模型的性能。新數據是指模型之前沒見過的數據,而我們有這些新數據的標簽。通常的做法是,我們把手頭上的數據分為兩部分,訓練集與測試集。訓練集用來構建機器學習模型測試集用來評估模型性能

    (2)如何划分訓練集與測試集?

     答:通常的做法是,我們將手頭數據的百分之 70 或 80 用來訓練數據,剩下的百分之 30 或 20 作為測試用來評估模型性能。值得注意的是,在划分數據集之前,我們要先把手頭上的數據的順序打亂,因為我們搜集數據時,數據可能是按照標簽排放的。比如,現在有 100 個西瓜的數據,前 50 個是好瓜,后 50 個是壞瓜,如果將后面的 30 個西瓜數據當做測試集,這時測試集中只有壞瓜一個類別,這無法告訴我們模型的泛化能力如何,所以我們將數據打亂,確保測試集中包含所有類別的數據

    (3)相關要點:

      錯誤率(error rate):分類錯誤的樣本占樣本總數的比例(即如果在m個樣本中有a個樣本分類錯誤,則錯誤率E = a / m)。

      精度(accuracy):分類正確的樣本占樣本總數的比例(1 - a/m,即精度 = 1 - 錯誤率)。

      誤差(error):學習器的預測輸出與樣本的真實輸出之間的差異。

      訓練誤差(training error) / 經驗誤差(empirical error):學習器在訓練集上的誤差。

      泛化誤差(generalization error):學習器在測試集上的誤差。

    泛化誤差越小意味着新樣本預測的准確性越高,然而,我們並不知道新樣本是什么樣子,實際能做的是努力使訓練誤差最小化,在很多情況下,我們可以學習到一個訓練誤差神效,在訓練集上表現很好的學習器。很遺憾,這種學習器在很多情況下都不好。我們希望得到的學習器應該是在新樣本表現很好的學習器,就是要從訓練樣本中學習到所有潛在樣本的“普遍規律”,這樣在遇到新樣本時才能進行正確的判斷。當學習器把訓練樣本學得太好的時候,很可能把樣本的一些特有的特點當作所有樣本都有有的一般性質,導致泛化能力下降,我們不能期待一個在訓練集上表現不好的學習器在測試集有更好的表現。

  3、欠擬合與過擬合

    (1)欠擬合

      欠擬合:模型在訓練集上誤差很高。

      欠擬合原因模型過於簡單,沒有很好的捕捉到數據特征,不能很好的擬合數據。

  舉例說明:

                                                 

    如圖,我們的數據是一份非線性數據,如果你想要用線性回歸來擬合這份數據,由於數據是非線性的,模型是線性,則過於簡單。所以,無論模型怎么訓練,最終都不能很好的擬合數據。

     (2)過擬合

     過擬合:在訓練集上誤差低,測試集上誤差高;

      過擬合原因:模型把數據學習的太徹底,以至於把噪聲數據的特征也學習到了,這樣就會導致在后期測試的時候不能夠很好地識別數據,模型泛化能力太差。

                            

    如圖,在訓練集上,模型為了擬合數據,添加了更多的多次項,使模型過於復雜,對噪音數據也能很好的擬合,所以在訓練集上正確率很高,而在測試集上沒有這些噪音數據,所以正確率很低。

 二、偏差和方差

  1、模型誤差來源

  我們知道了欠擬合是模型在訓練集上誤差過高過擬合模型是在訓練集上誤差低,在測試集上誤差高

   那么模型誤差的來源是什么呢?

     其實,模型在訓練集上的誤差來源主要來自於偏差,在測試集上誤差來源主要來自於方差。

  舉例:

       

  上圖表示,如果一個模型在訓練集上正確率為 80%,測試集上正確率為 79% ,則模型欠擬合,其中 20% 的誤差來自於偏差,1% 的誤差來自於方差。如果一個模型在訓練集上正確率為 99%,測試集上正確率為 80% ,則模型過擬合,其中 1% 的誤差來自於偏差,19% 的誤差來自於方差。

  可以看出,欠擬合是一種高偏差的情況。過擬合是一種低偏差,高方差的情況。

  2、偏差與方差

     偏差:預計值的期望與真實值之間的差距;

     方差:預測值的離散程度,也就是離其期望值的距離。

  舉例:

    

             2.1.1偏差與方差                                              2.1.2 欠擬合                                                           2.1.3 過擬合

    以射擊打靶為例,藍色的小點是我們在靶子上的射擊記錄,藍色點的質心(黑色點)到靶心的距離為偏差,某個點到質心的距離為方差。所以,某個點到質心的誤差就是由偏差與方差所組成。

    欠擬合:欠擬合是因為模型過於簡單,模型過於簡單我們可以當做是我們射擊時射擊的范圍比較小,它所涵蓋的范圍不包括靶心,所以無論怎么射擊,射擊點的質心里靶心的距離都很遠,所以偏差很高。但是因為射擊范圍很小,所以所有射擊點相互離的比較緊密,則方差低。

    過擬合:過擬合是因為模型過於復雜,我們可以理解為這個時候射擊的范圍很大了,經過不斷的訓練射擊的點的質心離靶心的距離很近了,但是由於數據量有限,而射擊范圍很大,所以所有射擊點之間非常離散,也就是方差很大。

  3驗證集

    (1)為什么需要驗證集?

    答:在機器學習中,通常需要評估若⼲候選模型的表現並從中選擇模型,這⼀過程稱為模型選擇。可供選擇的候選模型可以是有着不同超參數的同類模型。以神經網絡為例,我們可以選擇隱藏層的個數,學習率大小和激活函數。為了得到有效的模型,我們通常要在模型選擇上下⼀番功夫。從嚴格意義上講,測試集只能在所有超參數和模型參數選定后使⽤⼀次。不可以使⽤測試數據選擇模型,如調參。由於⽆法從訓練誤差估計泛化誤差,因此也不應只依賴訓練數據選擇模型。鑒於此,我們可以預留⼀部分在訓練數據集和測試數據集以外的數據來進行模型選擇。這部分數據被稱為驗證數據集,簡稱驗證集。

    為了方便大家理解,舉一個生活中的案例進行類比,我們一般是通過考試衡量學生的學習情況。老師上完課后,給學生布置的作業相當於訓練數據集,中期的測試題相當於驗證集,期末考試題相當於測試數據集。為了更加客觀的衡量學生學習情況,期末考試題的內容不應該出現在平常的作業題和中期的測試題中,因為之前做過的題,對於計算機而言,相當於已經記住了,如果再次做同樣的題,准確率就會很高。同樣的道理,平常的作業題也不應該出現在中期的測試題里。中期的測試題,是為了掌握學生的學習情況,了解自己哪些方面內容沒掌握,從而調整下一步學習的方向,為期末考試做好准備。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM