1. 程式人生 > >機器學習—模型評估與選擇

機器學習—模型評估與選擇

作者:WenWu_Both
出處:http://blog.csdn.net/wenwu_both/article/
版權:本文版權歸作者和CSDN部落格共有
轉載:歡迎轉載,但未經作者同意,必須保留此段宣告;必須在文章中給出原文連結;否則必究法律責任

本文作為周志華《機器學習》的閱讀筆記。

(1)經驗誤差和過擬合

錯誤率:分類錯誤的樣本數佔樣本總數的比例
精度:1-錯誤率
誤差分為訓練誤差(或稱經驗誤差)和泛化誤差
訓練誤差:在訓練集上的誤差
泛化誤差:在新樣本上的誤差
機器學習的目標是得到泛化誤差最小的學習器。

學習器把訓練樣本學得“太好”了的時候,很可能已經把訓練樣本自身的一些特點當做所有潛在樣本都具有的一般性質,這樣就會導致泛化效能下降,稱之為“過擬合”,與之相對的為“欠擬合”

欠擬合比較容易克服,而過擬合很麻煩,而且無法徹底避免,我們只能“緩解”,或者說減小其風險

現實中存在多個機器學習模型,在模型選擇中,最理想的解決方案是對候選模型的泛化誤差進行評估,然後選擇泛化誤差最小的模型,但是我們無法直接獲得泛化誤差,而訓練誤差又由於過擬合的存在而不適合作為標準,那麼如何進行模型的評估與選擇呢?

(2)模型評估方法

通常可通過設定“測試集”來測試學習器對新樣本的判別能力,“測試集”的測試誤差近似作為泛化誤差,故測試集設定的合理性尤為關鍵。

1、留出法
將資料集D直接分為互斥的兩個集合,其一為訓練集S,另外一個為測試集T

需要注意的是:
a. 訓練/測試集的劃分儘可能保持資料分佈的一致性,推薦“分層取樣”
b.對資料集進行分割的前後順序也會造成訓練/測試集的多種組合,故單次留出法得到的結果往往不夠穩定和可靠,一般要採用若干次隨機劃分、重複進行實驗評估後取平均值作為留出法的評估結果。
c.常用做法是將2/3-4/5的樣本用於訓練,剩餘樣本作為測試

2、交叉驗證法
先將資料集劃分為k個大小相似、分佈均衡的互斥子集,然後,每次用k-1個子集的並集作為訓練集,餘下的那個子集為測試集,進行k次訓練和測試,最後返回測試的平均結果。
k最常見的取值為10,稱為10折交叉驗證

與留出法類似,將資料集劃分為k個子集的過程中存在多種劃分方式,一般是隨機採用不同的劃分重複p次,最終的評估結果為p次k折交叉檢驗的結果,常見的有“10次10折交叉檢驗”

極端情況為“留1法”,即k為資料集的樣本個數,精度較高,但計算開銷難以忍受。

3、自助法
直接以自助取樣法(bootstrap sampling)為基礎,給定包含m個樣本的資料集D,我們對它進行隨機取樣產生資料集D’,每次隨機從D中挑選一個樣本複製到D’,重複進行m次。將D’作為訓練集,D\D’作為測試集。

在資料集較小、難以有效劃分訓練/測試集時很有用,但會引入估計誤差,所以,當資料量足夠的時候,留出法及交叉驗證法比較常用。

PS:學習演算法的很多引數都是在實數範圍內進行取值,因此,對每種引數配置均訓練出模型是不可行的,一般是將其離散化,對每個引數劃定範圍並選取變化步長。計算結果可能不是最佳值,但這是計算開銷與效能估計之間進行折中的結果,正是折中,學習過程才變得可行。

(3)效能度量

對學習器的泛化效能進行評估,不僅需要有效可行的實驗估計方法,還需要有衡量模型泛化能力的評價標準,這就是效能度量(performance measure)。

1、錯誤率與精度
2、查準率與查全率
類似的需求在資訊檢索、Web搜尋中經常出現
PR曲線:縱座標為查準率,橫座標為查全率
3、ROC與AUC
這裡寫圖片描述
ROC(Receiver Operating Characteristic)受試者工作特性。
ROC曲線:縱座標為“真正例率”(TPR) 橫座標為“假正例率”(FPR)

AUC為ROC曲線下的面積值,AUC越大,則學習器的效能越好。

這裡寫圖片描述

4、代價敏感錯誤率與代價曲線

(4)比較檢驗

實際上,機器學習效能比較這件事比大家想象的要複雜得多。
首先,我麼希望比較的是泛化效能,然而通過實驗評估方法我們獲得的是測試集上的效能,兩者的對比結果可能未必相同;
第二,測試集上的效能與測試集的選擇有很大的關係
第三,很多機器學習演算法本身就有一定的隨機性,即便用相同的引數設定在同一個測試集上多次執行,其結果也會有不同

統計假設檢驗(hypothesis test)為我們進行學習器效能比較提供了重要的依據。

1、假設檢驗
2、交叉驗證t檢驗
3、McNemar檢驗
4、Friedman檢驗與Nemenyi後續檢驗

(5)偏差與方差