
第2章
模型評估與選擇
2.1 經驗誤差與過擬合
通常我們把分類錯誤的樣本數占樣本總數的比例稱為“錯誤率”(error rate),即如果在m個樣本中有a個樣本分類錯誤,則錯誤率E=a/m;相應的,1?a/m稱為“精度”(accuracy),即“精度=1?錯誤率”。更一般地,我們把學習器的實際預測輸出與樣本的真實輸出之間的差異稱為“誤差”(error),學習器在訓練集上的誤差稱為“訓練誤差”(training error)或“經驗誤差”(empirical error),在新樣本上的誤差稱為“泛化誤差”(generalization error)。顯然,我們希望得到泛化誤差小的學習器。然而,我們事先并不知道新樣本是什么樣,實際能做的是努力使經驗誤差最小化。在很多情況下,我們可以學得一個經驗誤差很小、在訓練集上表現很好的學習器,例如甚至對所有訓練樣本都分類正確,即分類錯誤率為零,分類精度為100%,但這是不是我們想要的學習器呢?遺憾的是,這樣的學習器在多數情況下都不好。
我們實際希望的,是在新樣本上能表現得很好的學習器。為了達到這個目的,應該從訓練樣本中盡可能學出適用于所有潛在樣本的“普遍規律”,這樣才能在遇到新樣本時做出正確的判別。然而,當學習器把訓練樣本學得“太好”了的時候,很可能已經把訓練樣本自身的一些特點當作了所有潛在樣本都會具有的一般性質,這樣就會導致泛化性能下降。這種現象在機器學習中稱為“過擬合”(overfitting)。與“過擬合”相對的是“欠擬合”(underfitting),這是指對訓練樣本的一般性質尚未學好。圖2.1給出了關于過擬合與欠擬合的一個便于直觀理解的類比。
有多種因素可能導致過擬合,其中最常見的情況是由于學習能力過于強大,以至于把訓練樣本所包含的不太一般的特性都學到了,而欠擬合則通常是由于學習能力低下而造成的。欠擬合比較容易克服,例如在決策樹學習中擴展分支、在神經網絡學習中增加訓練輪數等,而過擬合則很麻煩。在后面的學習中我們將看到,過擬合是機器學習面臨的關鍵障礙,各類學習算法都必然帶有一些針對過擬合的措施;然而必須認識到,過擬合是無法徹底避免的,我們所能做的只是“緩解”,或者說減小其風險。關于這一點,可大致這樣理解:機器學習面臨的問題通常是NP難甚至更難,而有效的學習算法必然是在多項式時間內運行完成,若可徹底避免過擬合,則通過經驗誤差最小化就能獲最優解,這就意味著我們構造性地證明了“P=NP”;因此,只要相信“P≠NP”,過擬合就不可避免。

圖2.1 過擬合、欠擬合的直觀類比
在現實任務中,我們往往有多種學習算法可供選擇,甚至對同一個學習算法,當使用不同的參數配置時,也會產生不同的模型。那么,我們該選用哪一個學習算法、使用哪一種參數配置呢?這就是機器學習中的“模型選擇”(model selection)問題。理想的解決方案當然是對候選模型的泛化誤差進行評估,然后選擇泛化誤差最小的那個模型。然而如上面所討論的,我們無法直接獲得泛化誤差,而訓練誤差又由于過擬合現象的存在而不適合作為標準,那么,在現實中如何進行模型評估與選擇呢?