第二章 模型評估與選擇

1、經驗誤差與過擬合

錯誤率(error rate):分類錯誤的樣本數佔總樣本數的比例。
例如:m個樣本中有a個樣本分類錯誤,錯誤率=a/m,準確度=1-a/m
誤差(error):預測輸出與樣本真實輸出之間的差異
訓練誤差(trainning error)或經驗誤差(empirical error):在訓練集上的誤差
泛化誤差(generalization):在新樣本上的誤差

我們希望得到泛化誤差小的模型,而實際上只能努力使經驗誤差最小。

爲了學習器能在新樣本上表現好,應該從訓練樣本中儘可能學習適用於所有潛在樣本的普遍規律

過擬合(overfitting):學習能力太強大,把訓練樣本中不太一般的特性都學習到了。導致模型在訓練樣本上表現很好,而在新樣本上表現差。(泛化能力差)
欠擬合(underfitting):學習能力太弱

過擬合無法避免,只能緩解或者說減小風險。

2、評估方法

模型選擇理想的方案是選擇泛化誤差最小的模型

通常,使用一個“測試集”來測試學習器對新樣本的判別能力,以測試集上的測試誤差作爲泛化誤差的近似。

因此,對數據集D劃分爲訓練集S和測試集T,常見做法:
(1)留出法(hold out)
直接將數據集劃分爲兩個互斥的集合。
注意:訓練測試集的劃分要儘可能保持數據分佈一致。例如分類任務中至少保持樣本類別比例一致,可採用分層採樣(stratified sampling)。
通常,將2/3~4/5的樣本用於訓練,剩餘樣本用於測試。
(2)交叉驗證(cross validation)
將數據集D劃分爲k個互斥的子集,每個子集Di 都儘可能保持數據分佈一致性。每次用k-1個子集作爲訓練集,1個子集作爲測試集,進行k次訓練測試,最終返回k個測試結果的均值。
爲了減少因樣本劃分引入差異,k折交叉驗證通常要隨機使用不同的劃分重複p次。最終評估結果是p次k折交叉驗證結果的均值。
(3)留一法(leave one out)
交叉驗證的特例:數據集D中有m個樣本,則令k=m,劃分爲k個子集,每個子集中只有一個樣本。
缺陷是:數據集較大時,訓練m個模型的開銷太大。
(4)自助發(Bootstrapping)
對數據集D進行m次有放回的抽樣產生數據集D’。一部分樣本在D’中重複出現,一部分樣本在D中不出現。

樣本在m次採樣中始終不被抽中的概率是:(11m)m ,取極限得到limm(11m)m1e0.368
因此,數據集D中約有36.8%的數據在D’中不出現。

在數據集較小,難以有效劃分訓練測試集時,通過自助法可從初始數據集種產生多個不同的訓練集。然而這樣產生數據集的方法改變了原有數據集的分佈,會引入估計偏差。

調參與最終模型
學習算法有很多參數需要設置,很多是在實數範圍內取值,常用的做法是:對每個參數選定一個範圍和步長,對每種參數配置都訓練出模型,把對應最好模型的參數作爲結果。

3、性能度量(performance measure)

性能度量是衡量模型泛化能力的標準,反應了任務需求。模型的好壞是相對的,不僅取決於數據和算法,還取決於任務需求。
迴歸任務中最常用的性能度量是“均方誤差”

E(f;D)=1mi=1m(f(xi)yi)2

更一般的,對數據分佈D和概率密度函數p(·),均方誤差爲:
E(f;D)=xD(f(xi)yi)2p(x)dx

(1)錯誤率與精度

這裏寫圖片描述
分類任務中,對於樣例集D:
分類錯誤率定義爲:

E(f;D)=1mi=1mII(f(xi)yi)

精度定義爲:
acc(f;D)=1mi=1mII(f(xi)=yi)

注:II(f(xi)yi) 是指示函數,即取值爲0或1
更一般的,對數據分佈D和概率密度函數p(·):
錯誤率爲:
E(f;D)=xDII(f(x)y)p(x)dx

精度爲:
acc(f;D)=xDII(f(x)=y)p(x)dx=1E(f;D)

(2)查全率,查準率,F1

以二分類爲例:樣例根據真實類別和預測類別的組合劃分爲:真正例TP(true positive),假正例FP(false positive),真反例TN(true negative),假反例FN(false negative),TP+FP+TN+FN=樣例總數。

這裏寫圖片描述

查準率or**準確率**(precision) P=TPTP+FP
查全率or**召回率**(recall)R=TPTP+FN

準確率、召回率是一對矛盾的度量,比較難達到兩個都很高。

查準率-查全率曲線,P-R曲線
以查準率做縱軸,查全率做橫軸,
這裏寫圖片描述

如何來衡量學習器的好壞?
a) 平衡點(break-event point)
precise=recall時的取值
例如:A的平衡點取值大於B,可認爲A優於B
b)F1度量
F1是基於recall和precision的調和平均
1F1=12·(1P+1R)
算數平均和集合平均相比,調和平均更重視較小值。

F1=2PRP+R=2TP+TPTN

在不同的應用場景中,對recall和precision的重視程度不同。例如廣告推薦中,爲了避免打擾用戶,precision更重要。

體現recall和precision的偏好,有FβFβ 是加權調和平均:

1Fβ=11+β2·(1P+β2R)
β>1 時,recall影響大,β<1 時,precision影響大。

當有多次訓練測試,or多分類任務有多個混淆矩陣時,考察全局性能,可以:
1)分別求(Pi ,Ri ),再計算平均值,得到宏查準率(macro-P),宏查全率(macro-R),宏F1。
2)對TP,FP,TN,FN取平均值,再計算微查全率(micro-P),微查準率(micro-R),微F1

(3) ROC 和 AUC

很多學習器爲測試樣本產生一個概率預測[0,1],然後將預測值與分類閾值進行比較,大於閾值則爲正類,小於閾值則爲反類。

ROC(receiver operating characteristic)受試者工作特徵
以TPR(true positive rate)真正例率爲縱軸,FPR(false positive rate)假正例率爲橫軸。

TPR=TPTP+FN

FPR=FPTN+FP

繪製ROC曲線
給定m+ 個正例和m 個反例,根據預測結果對樣例排序;先把閾值設爲最大,在(0,0)出標記一個點,然後把閾值依次設爲樣例的預測值,計算TPR,FPR,描點,連線。

AUC(area under roc curve)
通過比較ROC曲線下的面積來判斷好壞。
這裏寫圖片描述
AUC可估算爲:

AUC=12i=1m1(xi+1xi)(yi+yi+1)

(4)代價敏感錯誤率與代價曲線

不同類型的錯誤造成的後果不同,因此爲了權衡錯誤造成的損失,設置非均等代價
以二分類爲例,設定代價矩陣:
這裏寫圖片描述
在非均等代價下,不再是最小化錯誤次數,而是最小化總體代價(total cost),令D+ ,D 分別代表正例子集和反例子集,則代價敏感錯誤率爲:

E(f;D;cost)=1m(xiD+II(f(xi)yi)cost01+xiDII(f(xi)yi)cost10)

4、比較檢驗

機器學習中性能比較是很複雜的一件事,(我們用測試性能來近似泛化性能;而這跟測試集的選取有很大關係;很多機器學習算法本身有一定隨機性)。
所以,統計假設檢驗(hypothesis test)可以爲性能比較提供重要依據。基於假設檢驗,我們可以推斷 如果測試集上A比B好,則A的泛化性能是否在統計意義上優於B,以及這個結論的把握有多大。

(1)假設檢驗

假設“假設”是對學習器泛化錯誤率分佈的猜想。
泛化錯誤率ϵ 的學習器在一個樣本上犯錯的概率爲ϵ
測試錯誤率ϵ^ 意味着m個測試樣本中有ϵ^m 個被誤分類。那麼,泛化錯誤率爲ϵ 的學習器被測得測試錯誤率爲ϵ^ 的概率爲:

P(ϵ^;ϵ)=Cmmϵ^ϵmϵ^(1ϵ)mmϵ^

給定測試錯誤率,解P(ϵ^;ϵ)ϵ=0 可知,ϵ=ϵ^ 時,P(ϵ^;ϵ) 最大,|ϵϵ^ 增大時,P(ϵ^;ϵ) 減小;這是一個二項式分佈,即表示在m次事件中,碰巧發生mϵ^ 次情況的概率
這裏寫圖片描述

如上圖,若ϵ=0.3 ,則10個樣本中測得3個樣本被誤分類的概率最大。
對單個學習器泛化性能的假設檢驗:
1)二項檢驗(binomial test)
可用二項檢驗對ϵ0.3 (泛化錯誤率是否不大於0.3)的假設進行檢驗。
更一般的對假設ϵϵ0 進行檢驗,對分類錯誤數大於mϵ0 的概率求和,判斷是否小於顯著度標準α。如果小於則接受假設,否則拒絕假設。1α 反映了結論的置信度。一般α取0.05,0.1

ϵ¯=max ϵs.t.i=mϵ0+1mϵi(1ϵ)mi<α

此時若ϵ^< 臨界值ϵ¯ ,則根據二項檢驗可得出結論:在α 的顯著度下,假設ϵϵ0 不能被拒絕,即以1α 的置信度認爲學習器的泛化錯誤率不大於ϵ0
2)t檢驗(t test)
通過交叉驗證法等進行多次訓練測試,會得到多個測試錯誤率。假設得到了k個測試錯誤率ϵ^1,ϵ^2,...,ϵ^k ,平均測試錯誤率μ 和方差σ2 爲:

μ=1ki=1kϵ^i

σ2=1k1i=1k(ϵ^iμ)2

考慮到k個測試錯誤率可看做泛化錯誤率ϵ0 的獨立採樣,則變量
τt=k(μϵ0)σ

服從自由度爲k-1的t分佈
這裏寫圖片描述
對假設μ=ϵ0 和顯著度α ,可計算出當測試錯誤率均值爲ϵ0 時,在1α 概率內能觀測到的最大錯誤率,即臨界值。
若平均錯誤率μϵ0 之差|μϵ0 位於臨界值範圍[tα/2,tα/2] 內,則不能拒絕假設μ=ϵ0 ,即可認爲泛化錯誤率爲ϵ0 ,置信度爲1α ;否則可拒絕該假設。一般α取0.05,0.1
這裏寫圖片描述

兩個學習器泛化性能比較檢驗:
1)交叉驗證t檢驗
使用k折交叉驗證法,對學習器A和B分別得到的測試錯誤率ϵ1A,ϵ2A,...,ϵkAϵ1B,ϵ2B,...,ϵkB ,可用k折交叉驗證“成對t檢驗(paired t-tests)”來進行比較檢驗。
基本思想:若AB性能相同,則使用相同測試集的測試錯誤率應相同,即ϵiA=ϵiB
做法:每隊結果求差Δi=ϵiAϵiB ,若學習器性能相同則差的均值應爲0。
根據差值Δ0,Δ1,...,Δk 來對假設“學習器A和B性能相同”這個假設做t檢驗,計算差的均值μ 和方差σ2 ,在顯著度α 下,若變量

τt=|kμσ

小於臨界值tα/2,k1 ,則假設不能被拒絕,即認爲兩個學習器性能沒有顯著差別,置信度1α ;否則認爲有顯著差別。tα/2,k1 是自由度爲k-1的t分佈上尾部累計分佈爲α/2 的臨界值。
2)McNeMar檢驗
對二分類問題,使用留出法,對學習器A和B分類結果的差別,如“列聯表(contingency table)”所示:
這裏寫圖片描述
假設“學習器A和B性能相同”,則應有e01=e10 ,那麼變量e01e10 應服從正態分佈,均值爲1,方差爲e01+e10 。因此,變量
τχ2=(|e01e10|1)2e01+e10

服從自由度爲1的χ2 分佈,即標準正態分佈變量的平方。
給定顯著度α ,當以上變量值小於臨界值χα2 時,不能拒絕假設。
多個學習器泛化性能比較檢驗:
1)Friedman檢驗
2)Nemenyi後序檢驗

5、偏差與方差

用“偏差-方差分解”(bias-variance decomposition)來解釋學習算法的泛化性能–爲什麼具有這樣的性能。

對測試樣本x ,令yDx 在數據集中的標記,yx 的真實標記,f(x;D) 爲訓練集D上學得模型fx 上的預測輸出。
以迴歸任務爲例:
學習算法的期望預測爲:f¯(x)=ED[f(x;D)]
使用樣本數相同的不同訓練集產生的方差爲:var(x)=ED[(f(x;D)f¯(x))2]
噪聲爲:ε2=ED[(yDy)2]
偏差(期望輸出與真實標記的差別):bias2(x)=(f¯(x)y)2

偏差-方差分解對學習算法的期望泛化誤差錯誤率進行拆解。

E(f;D)=bias2(x)+var(x)+ε2

即,泛化誤差可分解爲偏差、方差與噪聲之和。
偏差度量了學習算法的期望預測與真實結果的偏離程度(學習算法本身的擬合能力
方差度量了同樣大小的訓練集的變動所導致的學習性能的變化(數據擾動所造成的影響
噪聲表達了當前任務上任何學習算法所能達到的期望泛化誤差的下界(學習問題本身的難度
即,泛化性能是由學習算法的能力、數據的充分性及學習任務本身的難度共同來決定的。
這裏寫圖片描述
訓練不足時,學習器的擬合能力不夠強,此時偏差主導了泛化錯誤。
訓練充足後,學習器擬合能力已經很強,訓練數據發生的擾動漸漸能被學習器學習到,方差主導泛化錯誤率。若訓練數據的非全局特性被學習器學到了,將發生過擬合。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章