1、經驗誤差與過擬合
通常我們把分類錯誤的樣本數占樣本總數的比例稱為“錯誤率”(error rate),即如果在m個樣本中有a個樣本分類錯誤,則錯誤率E=a/m;相應的,1-a/m稱為“精度”(accuracy),即“精度=1一錯誤率”。更一般地,我(學習器的實際預測輸出與樣本的真實輸出之間的差異稱為“誤差”(error),學習器在訓練集上的誤差稱為“訓練誤差”(training error)或“經驗誤差”(empirical error),在新樣本上的誤差稱為“泛化誤差”(generalization error)。顯然,我們希望得到泛化誤差小的學習器,然而,我們事先並不知樣本是什么樣,實際能做的是努力使經驗誤差最小化。
“過擬合”(overfitting)與“欠擬合”(underfitting),學習器把訓練樣本學得太好了的時候,很可能已經把訓練樣本自身的一些特點當作了所有潛在樣本都會有的一般性質,這樣就會導致泛化能力下降。這種現象在機器學習中稱為過擬合,相對地,欠擬合是指對訓練樣本的一般性質尚未學好。
2、評估方法
通常,我們可通過實驗測試來對學習器的泛化誤差進行評估並進而做出選擇。即對數據集D進行適當處理,從中產生出訓練集S和測試集T。下面介紹幾種常見的做法。
2.1 留出法
“留出法”(hold-out)直接將數據集D划分為兩個互斥的集合,分別作為訓練集S和測試集T,即D=S υ T,S ∩ T=Φ。在S上訓練出模型后,用T來評估其測試誤差,作為對泛化誤差的估計。常見做法是將大約2/3~4/5的樣本用於訓練,剩余樣本用於測試。
2.2 交叉驗證法
“交叉驗證法”(cross validation)先將數據集D划分為k個大小相似的互斥子集,即,每個子集Di都盡可能保持數據分布的一致性,即從D中通過分層采樣得到,然后,每次用k-1個子集的並集作為訓練集,余下的那個子集作為測試集這樣就可獲得k組訓練/測試集,從而可進行k次訓練和測試,最終返回的是這k個測試結果的均值。通常把此過程稱為“k折交叉驗證”(k-fold cross validation)。
Python實現:
from sklearn.cross_validation import train_test_split # 避免過擬合,采用交叉驗證,驗證集占訓練集20%,固定隨機種子(random_state) train_X, test_X, train_y, test_y = train_test_split(train_dataSet, train_label, test_size = 0.2, random_state = 0)
2.3 自助法
“自助法”(bootstrapping)直接以自助采樣法(bootstrap sampling)為基礎,它是一個很好解決在留出法和交叉驗證法中,由於保留了一部分樣本用於測試,導致訓練樣本規模不同造成影響的解決方案。采樣過程為:從給定包含m個訓練樣本的數據集D中,有放回地抽取m個樣本形成數據集D'。顯然,D中有一部分樣本會在D'中多次出現,而另一部分樣本不出現。可以做一個簡單的估計,樣本在m次采用中不被采到的概率取極限是:
即通過自助采樣,實際評估的模型與期望評估的模型都使用m個訓練樣本,而我們仍有數據總量約1/3的沒在訓練集中初一的樣本用於測試。這樣的測試結果也稱為“包外估計”(out-of-bag estimate)。
自助法在數據集較小,難以有效划分訓練/測試集時很有用;此外,自助法能從初始數據集中產生多個不同的訓練集,這對集成學習等方法有很大的好處。然而,自助法產生的數據集改變了初始數據集的分布,這會引入估計偏差,因此,在初始數據量足夠時,留出法和交叉驗證法更常用一些。
3、性能度量
對學習器的泛化性能進行評估,不僅需要有效可行的實驗評估方法,還要有衡量模型泛化能力的評價標准,這就是性能度量(performance measure)。
3.1 錯誤率與精度
分類錯誤率定義為:
精度則為:
3.2 混淆矩陣
下圖是一個二類問題的混淆矩陣,其中的輸出采用了不同的類別標簽
常用的衡量分類性能的指標有:
- 正確率(Precision),它等於 TP/(TP+FP) ,給出的是預測為正例的樣本中的真正正例的比例。
- 召回率(Recall),他等於 TP/(TP+FN),給出的是預測為正例的真實正例占所有真實正例的比例。
正確率和召回率也稱為查准率和查全率,它們是一對矛盾的度量。一般來說,正確率高時,召回率往往偏低,反之也是。關系如下圖
3.3 ROC與AUC
ROC全稱是“受試者工作特征”(Receiver Operating Characteristic)曲線,其橫軸是“假正例率”(False Positive Rate,簡稱FPR),縱軸是“真正例率”(True Positive Rate,簡稱TRP),兩者分別定義為:
ROC曲線給出的是當閾值變化時假陽率和真陽率的變化情況。左下角的點所對應的是將所有樣例判為反例的情況,而右上角的點對應的則是將所有樣例判為正例的情況。虛線給出的是隨機猜測的結果曲線。
對不同的ROC曲線進行比較的一個指標是曲線下的面積(Area Unser the Curve)。AUC給出的是分類器的平均性能值,當然它並不能完全代替對整條曲線的觀察。一個完美分類器的AUC為1.0,而隨機猜測的AUC則為0.5。
3.4 均方誤差
回歸任務最常用的性能度量是“均方誤差”(mean squared error)
THE END.