2.1經驗誤差與過擬合
錯誤率:分類錯誤的樣本數占樣本總數的比例
精度=1-錯誤率
誤差:學習器的實際預測輸出與樣本的真實輸出之間的差異
訓練誤差/經驗誤差:學習器在訓練集上的誤差
泛化誤差:在新樣本上的誤差
為了得到在新樣本上也能表現好的學習器,應該從訓練樣本中盡可能找出適合所有潛在樣本的普遍規律。如果學習器把訓練樣本學的太好時,很可能已經把訓練樣本自身的一些特點當做了所有潛在樣本都會具有的一般性質,使泛化功能下降,這叫過擬合。與其相對的是欠擬合,指訓練樣本的一般性質未學好。兩者的直觀類比如圖2.1所示
現實任務中,我們有很多學習算法可以選擇,甚至對同一種學習算法,使用不同參數配置,也會產生不同的模型。模型選擇問題就是指該選用哪種學習算法,使用哪種參數配置。
2.2評估方法
我們通常使用測試集來測試學習器對新樣本的判別能力,以測試集上的測試誤差作為泛化誤差的近似。測試集應該盡可能與訓練集互斥。
假設我們有一個包含m個樣例的數據集D,要做到既要訓練,又要測試,可以通過對D進行適當的處理,產生訓練集S和測試集T,下面是幾種做法
2.2.1留出法
留出法直接將數據集D分為兩個互斥的集合,分別是訓練集S和測試集T
分層采樣:分層采樣(stratified sampling) - zealfory - CSDN博客,鏈接的實例中,仍存在多種劃分方式對數據集D進行分割,比如把D中的樣本進行排序,可以把前350個正例放在S中,也可以把后350個正例放在S中,不同的劃分會導致不同的訓練集/測試集。因此,單次使用留出法不能保證結果的可靠性,一般要采用多次隨機劃分,重新進行實驗評估后取平均值作為留出法的評估結果。
劃分的常見做法是將大約2/3~4/5的樣本用于訓練,其余用于測試
2.2.2交叉驗證法
交叉驗證法先將數據集劃分為k個大小相似的互斥子集,每個子集都盡可能保持數據分布的一致性,即從D中通過分層采樣得到,用k-1個子集的并集作為訓練集,余下的子集作為測試集,這樣可以獲得k組訓練集/測試集,最終返回k次測試結果的平均值。顯然,交叉驗證法評估結果的穩定性和保真性很大程度取決于k,通常把交叉驗證法稱為k折交叉驗證,k常用的取值有5、10、20,10折交叉驗證示意圖如圖2.2所示
k折交叉驗證通常要使用不同的劃分重復p次,最終的評估結果是這p次k折交叉驗證結果的均值,常見的有10次10折交叉驗證。
若數據集包含m個樣本,令k=m,得到交叉驗證法的特例:留一法。因為m個樣本只有唯一的方式劃分為m個子集——每個子集只包含一個樣本,因此不受隨機樣本劃分的影響。留一法的訓練集比初始數據集只少了一個樣本,使得在絕大多數情況下,留一法中被實際評估的模型與期望評估的用D訓練出來的很相似,因此,評估結果往往被認為比較準確。缺陷是在數據集較大時,訓練m個模型的計算開銷可能難以忍受,另外留一法的估計結果也未必永遠比其他評估方法準確。
2.2.3自助法
給定包含m個樣本的數據集D,對它采樣產生數據集D’:每次隨機從D中挑選一個樣本,將其拷貝放入D‘,然后再將樣本放回初始數據集D中,使得該樣本在下次采樣仍有可能被采到,這個過程重復執行m次,就得到包含m個樣本的數據集D’,這就是自主采樣的結果。顯然,D中有一部分樣本會在D‘中多次出現,而另一部分不出現。通過自助采樣,初始數據集D中約有36.8%的樣本未出現在D’中。實際評估的模型與期望評估的模型都使用m個訓練樣本,但仍有約1/3的沒在訓練集中的樣本用于測試,這樣的測試結果,稱“包外估計”
在初始數據量足夠時,留出法和交叉驗證法更常用,自助法在數據集較小,難以有效劃分訓練集/測試集有用。
2.2.4調參與最終模型
對每個參數選定一個范圍和變化步長,例如[0,0.2]范圍內以0.05為步長,則在5個候選參數值中產生選定值,雖然選定的不是最佳,但通過這個折中學習過程變得可行
在模型選擇完成后,學習算法和參數配置選定,此時用數據集D重新訓練模型,這個模型在訓練過程使用了所有m個樣本,這就是我們最終提交給用戶的模型
在研究對比不同算法的泛化性能時,我們用測試集上的判別效果來估計模型在實際使用時的泛化能力,而把訓練數據分為訓練集和驗證集,基于驗證集上的性能來進行模型選擇和調參
2.3性能度量
性能度量:衡量模型泛化能力的評價標準
在預測任務中,要評估學習器f的性能,要把學習器預測結果f(x)與真實標記y進行比較
回歸任務常用的性能度量是“均方誤差”
2.3.1錯誤率與精度
錯誤率:分類錯誤的樣本數占樣本總數的比例
精度:分類正確的樣本數占樣本總數的比例
2.3.2查準率、查全率與F1
將樣例數據根據其真實類別和學習器預測類別的組合分為四種情形,如圖2.1所示
查準率P=TP/(TP+FP)
查全率R=TP/(TP+FN)
查準率可理解為挑出來的西瓜中好瓜的比例。查全率可理解為所有好瓜中有多少比例被挑出來。兩者是一對矛盾的度量,一般查準率高,查全率低,而查全率高,查準率低。
根據學習器的預測結果對樣例進行排序,排在最前面的是學習器人認為最可能是正例的樣本,排在后面的反之,以查準率為縱軸、查全率為橫軸作圖得到“P-R曲線”,如圖2.3
若一個學習器的P-R曲線被另一個學習器的曲線完全包住,則可斷言后者的性能優于前者,例如圖2.3所示,學習器A的性能優于學習器C。如果兩個學習器的P-R曲線發生了交叉,例如圖2.3的學習器A和B,比較性能有三種辦法:1.比較P-R曲線下面積的大小,它在一定程度下表示學習器在查準率和查全率取得相對“雙高”的比例,但這個值不太容易估算2.平衡點(BEP)是一個綜合考慮查準率和查全率的性能度量,它是查準率=查全率時的取值,基于BEP的比較,認為學習器A優于B,但是BEP還是過于簡化 3.常用的F1度量,F1=
F1度量的一般形式,能表達對查準率/查全率的不同偏好,其中
>0度量了查全率對查準率的相對重要性,
=1退化為標準的F1,
>1查全率有更大影響,
<1查準率有更大影響
在n個二分類混淆矩陣上綜合考察查準率和查全率,有兩種做法:
1.先在各混淆矩陣上分別計算查準率和查全率,再計算平均值,得到宏查準率(macro-P)、宏查全率(macro-R)及相應的宏F1(macro-F1)
2.將各混淆矩陣的對應元素進行平均,得到TP、FP、TN、FN的平均值,基于這些平均值算出微查準率(micro-P)、微查全率(micro-R)和微F1(micro-F1)
2.3.3ROC與AUC
將測試樣本進行排序,分類過程就相當于在這個排序中以某個截斷點將樣本分為兩部分,前一部分判作正例,后一部分則判作反例。
ROC(受試者工作特征):根據學習器的預測結果對樣例進行排序,按此順序逐個把樣本作為正例進行預測,計算真正例率(TPR)和假正例率(FPR),分別作為ROC曲線的縱軸和橫軸。兩者定義為
圖2.4(a)是ROC圖的示意圖,對角線對應隨機猜測模型,而(0,1)對應將所有正例排在反例之前的理想模型。現實任務中通常利用有限個測試樣例來繪制ROC圖,無法產生圖2.4(a)的光滑曲線,只能繪制出圖2.4(b)所示的近似ROC曲線。
ROC曲線繪制過程:給定m+個正例和m-個反例,根據學習器預測結果對樣例進行排序,把所有樣例均預測為反例,此時TPR和FPR均為0,在(0,0)處標記一個點,然后依次將每個樣例劃分為正例,設前一個標記點坐標為(x,y),當前若為真正例,則對應標記點的坐標為(x,y+1/m+),當前若為假正例,則對應標記點坐標為(x+1/m+,y),然后用線段連接相鄰點即可
類似P-R圖,若一個學習器的ROC曲線被另一個學習器的曲線包住,則可斷言后者性能優于前者;若兩個學習器的ROC曲線交叉,可以通過比較ROC曲線下的面積,即AUC來判斷。
AUC可估算為
給定m+個正例和m-個反例,令D+和D-分別表示正、反例集合,排序“損失”定義為
2.3.4代價敏感錯誤率與代價曲線
為權衡不同類型錯誤所造成的不同損失,可為錯誤賦予“非均等代價”
以二類任務為例,設定一個“代價矩陣”,如表2.2所示,其中表示將i類樣本預測為第j類樣本的代價
在非均等代價下,我們希望最小化“總體代價”,而不是簡單地最小化錯誤次數
將表2.2中的第0類作為正類、第1類作為反類,D+與D-分別代表樣例集D的正例子集和反例子集,則“代價敏感”錯誤率為
非均等代價下,代價曲線可以反映出學習器的期望總體代價。代價曲線圖的橫軸是取值為[0,1]的正例概率代價(其中p是樣例為正例的概率)
縱軸是取值為[0,1]的歸一化代價(其中FPR是假正例率,FNR=1-TPR是假反例率)
代價曲線的繪制:ROC曲線上每個點對應代價平面上的一條線段,設ROC曲線上點的 坐標為(TPR,FPR),再相應計算出FNR,然后在代價平面上繪制一條從(0,FPR)到(1,FNR)的線段,線段下的面積表示該條件下的期望總體代價,將ROC曲線上的每個點都轉化成代價平面上的一條線段,取所有線段的下界,圍成的面積為在所有條件下學習器的期望總體代價,如圖2.5所示
2.4比較檢驗
2.4.1假設檢驗
假設檢驗中的“假設”是對學習器泛化錯誤率分布的某種判斷或猜想,下面是兩種對單個學習器泛化性能的假設進行檢驗的方法
1.在包含m個樣本的測試集上,泛化錯誤率為的學習器被測得測試錯誤率為
的概率:
這符合二項分布,如圖2.6所示,若=0.3,則10個樣本中測得3個被誤分類的概率最大
根據二項分布可以得到結論:在a的顯著度下,假設“”不能被拒絕,即能以1-a的置信度認為,學習器的泛化錯誤率不大于
,否則該假設可被拒絕,即在a的置信度下可認為學習器的泛化率大于
2.通過多次重復留出法或交叉驗證法進行多次訓練,此時可使用t檢驗,假設得到了k個測試錯誤率,
...
,則平均測試錯誤率
和方差
為
k個測試錯誤率可看作泛化錯誤率的獨立采樣,則變量
服從自由度為k-1的t分布,如圖2.7所示
這里考慮雙邊假設,若平均錯誤率與
之差|
|位于臨界值范圍[
,
]內,則不能拒絕假設“u=
”,即可認為泛化錯誤率為
,置信度為1-a,否則可拒絕該假設,即在該顯著度下可認為泛化錯誤率與
有顯著不同
2.4.2交叉驗證t檢驗
在一個數據集上比較兩個學習器的算法
對k折交叉驗證產生的k對測試錯誤率:先對每對結果求差(),若兩個學習器性能相同,則差值均值為0,根據差值
對“學習器A、B性能相同”假設做t檢驗,在顯著度a下,變量
小于臨界值,則假設不能被拒絕,即兩個學習器的性能沒有顯著差別。
不同輪次的訓練集可能有重疊,導致過高估計假設成立,這時可以采用5X2交叉驗證法,即5次2折交叉驗證,每次2折交叉驗證前隨機打亂數據,使得數據劃分不重復。學習器A和B第i次2折交叉驗證產生兩隊測試錯誤率,求差后的得到第1折的差值和第2折差值
,每次2折實驗都計算出方差
變量
服從自由度為5的t分布,雙邊檢驗的臨界值為
2.4.3McNemar檢驗
在一個數據集上比較兩個學習器的算法
兩個學習期分類結果的差別如表2.4所示
假設兩學習器性能相同,則,變量
服從正態分布 ,均值為1,方差為
,則變量
服從自由度為1的分布,在顯著度a下,當以上變量小于臨界值
,不能拒絕該假設,即認為兩學習器的性能沒有顯著差別,反之有顯著差別,且平均錯誤率較小的學習器較優
2.4.4Friedman檢驗與Nemenyi檢驗
Friedman檢驗是基于算法排序
假定使用留出法或交叉驗證法得到每個算法在每個數據集的測試結構,在每個數據集上根據測試性能由好到壞排序,賦予序值1,2...若測試性能相同,則平分序值。例如,D1上,A最好,其次B,最后C,在D2上,A最好,B和C性能相同,可列出表2.5,最后一行對每一列的序值求平均,得到平均序值
用Friedman檢驗判斷這些算法是否性能都相同,若相同,則平均序值相同。假設N個數據集上比較k個算法,表示第i個算法的平均序值,“原始Friedman檢驗”過于保守,常使用變量
這個變量服從自由度為k-1和(k-1)(N-1)的F分布。若“所有算法的性能都相同”這個假設被拒絕,說明算法性能顯著不同,可用戶Nemenyi后續檢驗來進一步區別算法。它計算出平均序值差別的臨界值域
以表2.5數據為例,根據式(2.34)和(2.35)計算出=24.429,查表可知,它大于a=0.05時的F檢驗臨界值5.143,因此拒絕“所有算法性能相同”的假設,再使用Nemenyi后續檢驗,表2.7中k=3時
=2.344,根據式(2.36)計算CD=1.657,由表2.5知,算法A與C、算法B與C的平均序值差距均未超過臨界值域,而算法A與C的差距超過了,因此認為算法A與C的性能顯著不同,算法A與C、算法B與C的性能沒有顯著差別
圖2.8所示是Friedman檢驗圖,可以看出,算法A與B的臨界值域橫線段有交疊,表示沒有顯著差別,算法A與C橫線段沒有交疊區域,表示A優于C。
2.5偏差與方差
對測試樣本x,令為x在數據集的標記,y為x的真實標記,f(x;D)為訓練集D上學得模型f在x上的預測輸出,以回歸任務為例,學習算法的期望預測為
樣本數相同的不同訓練集產生的方差為
噪聲為
期望輸出與真實標記的差別為偏差,即
通過計算得到泛化誤差可分解為偏差、方差與噪聲之和
偏差度量了學習算法的期望預測與真實結果的偏離程度,刻畫了學習算法本身的擬合能力。方差度量了同樣大小的數據集的變動導致的學習性能的變化,刻畫了數據擾動造成的影響。噪聲度量了在當前任務上任何學習算法所能達到的期望泛化誤差的下界,刻畫了學習問題本身的難度。偏差-方差分解說明,泛化性能是由學習算法的能力、數據的充分性和學習任務本身的難度共同決定的。
偏差-方差窘境表示偏差與方差是有沖突的,如圖2.9所示,訓練不足時,學習器的擬合能力不夠強,訓練數據的擾亂不足以使學習器發生顯著變化,此時偏差主導了泛化錯誤率,隨著訓練程度加深,學習器的擬合能力增強,訓練數據發生的擾動漸漸被學習器學到,此時方差主導泛化錯誤率,訓練程度充足后,學習器的擬合能力很強 ,訓練發生的輕微擾動都能使學習器發生顯著變化,若訓練數據自身的,非全局的特性被學習器學到將發生過擬合。
本章總結:本章講述利用各種評估方法(例如留出法、交叉驗證法,自助法等),將數據集劃分為訓練集和測試集,使用測試集的判別效果來估計學習器在新樣本上的泛化能力。通過各種性能度量(例如錯誤率,精度,查準率,查重率、F1,ROC曲線等)來衡量模型泛化能力。利用各種比較檢驗方法(例如交叉驗證t檢驗,McNemar檢驗等)來比較學習器的性能。