《机器学习》 —— 第二章:模型评估与选择 学习笔记
2.1 經驗誤差與過擬合
把分類錯誤的樣本數占樣本總數的比例稱為“錯誤率”(error rate),即如果在m個樣本中有a個樣本分類錯誤,則錯誤率E=a/m;相應的,1-a/m稱為“精度”(accuracy),即“精度=1-錯誤率”。
把學習器的實際預測輸出與樣本的真實輸出之間的差異稱為“誤差”(error),學習器在訓練集上的誤差稱為“訓練誤差”(training error)或“經驗誤差”(empirical error),在新樣本上的誤差稱為“泛化誤差”(generalization error)。
當學習器把訓練樣本學得“太好”了的時候,很可能已經把訓練樣本自身的一些特點當作了所有潛在樣本都會具有的一般性質,這樣就會導致泛化性能下降。這種現象在機器學習中稱為“過擬合”(overfitting)。與“過擬合”相對的是“欠擬合”(underfitting),這是指對訓練樣本的一般性質尚未學好。
過擬合是由于學習能力過于強大,以至于把訓練樣本所包含的不太一般的特性都學到了,而欠擬合則通常是由于學習能力低下而造成的。
在現實任務中,往往有多種學習算法可供選擇,甚至對同一個學習算法,當使用不同的參數配置時,也會產生不同的模型。
這就是機器學習中的“模型選擇”(model selection)問題。理想的解決方案當然是對候選模型的泛化誤差進行評估,然后選擇泛化誤差最小的那個模型。
2.2 評估方法
通過實驗測試來對學習器的泛化誤差進行評估并進而做出選擇,這就需要一個“測試集”(testing set)來測試學習器對新樣本的判別能力,然后以測試集上的“測試誤差”(testing error)作為泛化誤差的近似。
2.2.1 留出法
“留出法”(hold-out)直接將數據集D劃分為兩個互斥的集合,其中一個集合作為訓練集S,另一個作為測試集T,即D=S∪T,S∩T=?。
在S上訓練出模型后,用T來評估其測試誤差,作為對泛化誤差的估計。
需注意的是,訓練/測試集的劃分要盡可能保持數據分布的一致性,避免因數據劃分過程引入額外的偏差而對最終結果產生影響。
如果從采樣(sampling)的角度來看待數據集的劃分過程,則保留類別比例的采樣方式通常稱為“分層采樣”(stratified sampling)。
若令訓練集S包含絕大多數樣本,則訓練出的模型可能更接近于用D訓練出的模型,但由于T比較小,評估結果可能不夠穩定準確;
若令測試集T多包含一些樣本,則訓練集S與D差別更大了,被評估的模型與用D訓練出的模型相比可能有較大差別,從而降低了評估結果的保真性(fidelity)。
這個問題沒有完美的解決方案,常見做法是將約2/3~4/5的樣本用于訓練,剩余樣本用于測試。
2.2.2 交叉驗證法
“交叉驗證法”(cross validation)先將數據集D劃分為k個大小相似的互斥子集,即D=D1∪D2∪…D∪k,Di∩Dj=?(i!=j)。
每個子集Di都盡可能保持數據分布的一致性,即從D中通過分層采樣得到。
然后,每次用k-1個子集的并集作為訓練集,余下的那個子集作為測試集;這樣就可以獲得k組訓練/測試集,從而可進行k次訓練和測試,最終返回的是這k個測試結果的均值。
交叉驗證法評估結果的穩定性和保真性在很大程度上取決于k的取值,為強調這一點,通常把交叉驗證法稱為“k折交叉驗證”(k-fold cross validation)。
k最常用的取值是10,此時稱為10折交叉驗證。
將數據集D劃分為k個子集同樣存在多種劃分方式。為減小因樣本劃分不同而引入的差別,k折交叉驗證通常要隨即使用不同的劃分,重復p次,最終的評估結果是這p次交叉驗證結果的均值。
假設數據集D中包含m個樣本,若令k=m,則得到了交叉驗證法的一個特例:留一法(Leave-Ones-Out,簡稱LOO)。
留一法不受隨機樣本劃分方式的影響,因為m個樣本只有唯一的方式劃分為m個子集——每個子集包含一個樣本;
留一法使用的訓練集與初始數據集相比只少了一個樣本,這就使得在絕大多數情況下,留一法中被實際評估的模型與期望評估的用D訓練出的模型很相似。
因此,留一法的評估結果往往被認為比較準確。
然而,留一法也有其缺陷:在數據集比較大時,訓練m個模型的計算開銷可能是難以忍受的,而這還是在未考慮算法調參的情況下。
另外,留一法的估計結果也未必永遠比其它評估方法準確。
2.2.3 自助法
“自助法”(bootstrapping),直接以自助采樣法(bootstrap sampling)為基礎。
給定包含m個樣本的數據集D,對它進行采樣產生數據集D’,然后再將該樣本放回初始數據集D中,使得該樣本在下次采樣時仍有可能被采到;
這個過程重復執行m次后,就得到了包含m個樣本的數據集D’,這就是自助采樣的結果。
顯然,D中有一部分樣本會在D’中多次出現,而另一部分樣本不出現。
可以做一個簡單的估計,樣本在m次采樣中始終不被采到的概率是(1-1/m)m,取極限得到:
即通過自助采樣,初始數據集D中越有36.8%的樣本未出現在采樣數據集D’中。
于是可將D’用作訓練集,D/D’用作測試集;
這樣,實際評估的模型與期望評估的模型都使用m個訓練樣本,而仍有數據總量約1/3的、沒在訓練集中出現的樣本用于測試。
這樣的測試結果,亦稱“包外估計”(out-of-bag estimate)。
自助法在數據集較小、難以有效劃分訓練/測試集時很有用;
此外,自助法能從初始數據集中產生多個不同的訓練集,這對集成學習等方法有很大的好處。
然而,自助法產生的數據集改變了初始數據集的分布,這回引入估計偏差。
因此,在初始數據量足夠時,留出法和交叉驗證法更常用一些。
2.2.4 調參與最終模型
調參和算法選擇沒什么本質區別:對每種參數配置都訓練出模型,然后把對應最好模型的參數作為結果。
機器學習常設計兩類參數:
一類是算法的參數,亦稱“超參數”,數目常在10個以內;
另一種是模型的參數,數目可能很多。
兩者調參方式相似,均是產生多個模型之后基于某種評估方法來進行選擇;
不同之處在于前者通常是由人工設定多個參數候選值后產生模型,后者則是通過學習來產生多個候選模型。
學習算法的很多參數是在實數范圍內取值,因此,對每種參數配置都訓練出模型來是不可行的。
現實中常用的做法是:對每個參數選定一個范圍和變化步長,雖然選定的參數值往往不是“最佳”值,但是在計算開銷和性能估計之間進行折中的結果,通過這個折中,學習過程才變得可行。
給定包含m個樣本的數據集D,在模型評估與選擇過程中由于需要留出一部分數據進行評估測試,事實上只使用了一部分數據訓練模型。
因此,在模型選擇完成后,學習算法和參數配置已選定,此時應該用數據集D重新訓練模型。
這個模型在訓練過程中使用了所有m個樣本,這才是最終提交的模型。
2.3 性能度量
對學習器的泛化性能進行評估,不僅需要有效可行的實驗估計方法,還需要有衡量模型泛化能力的評價標準,這就是性能度量(performance measure)。
性能度量反映了任務需求,在對比不同模型的能力時,使用不同的性能度量往往會導致不同的評判結果;這意味著模型的“好壞”是相對的,什么樣的模型是好的,不僅取決于算法和數據,還決定于任務需求。
在預測任務中, 給定數據集D={(x1,y1),(x2,y2),……,(xm,ym)},其中yi是示例xi的真實標記。
要評估學習器f的性能,就要把學習器預測結果f(x)與真實標記y進行比較。
回歸任務最常用的性能度量是“均方誤差”(mean squared error)
更一般的,對于數據分布D和概率密度函數p(·),均方誤差可描述為
2.3.1 錯誤率與精度
錯誤率是分類錯誤的樣本數占樣本總數的比例,精度則是分類正確的樣本數占樣本總數的比例。
對樣例集D,
分類錯誤率定義為:
精度則定義為:
更一般的,對于數據分布D和概率密度函數p(·),錯誤率和精度可分別描述為:
2.3.2 查準率、查全率與F1
將樣例根據其真實類別與學習器預測類別的組合劃分為真正例(true positive)、假正例(false positive)、真反例(true negative)、假反例(false negative)四種情形,令TP、FP、TN、FN分別表示其對應的樣例數,則顯然有TP+FP+TN+FN=樣例總數。
分類結果的“混淆矩陣”(confusion matrix):
查準率P:
查全率R:
查準率和查全率是一對矛盾的度量。
一般來說,查準率高時,查全率往往偏低;而查全率高時,查準率往往偏低。
根據學習器的預測結果對樣例進行排序,排在前面的學習器認為“最可能”是正例的樣本,排在后面的則是學習器認為“最不可能”是正例的樣本。
按此排序逐個把樣本作為正例進行預測,則每次可以計算出當前的查全率、查準率。
以查準率為縱軸、查全率為橫軸作圖,就得到了查準率-查全率曲線,簡稱“P-R曲線”,顯示該曲線的圖稱為“P-R圖”。
P-R圖直觀地顯示出學習器在樣本總體上的查全率、查準率。
在進行比較時,若一個學習器的P-R曲線被另一個學習器的曲線完全“包住”,則可斷言后者的性能優于前者。
如果兩個學習器的P-R曲線發生了交叉,則難以一般性地斷言兩者孰優孰劣,只能在具體的查準率或查全率條件下進行比較。
一個比較合理的判據是比較P-R曲線下的面積的大小,它在一定程度上表征了學習器在查準率和查全率上取得相對“雙高”的比例。
“平衡點”(Break-Even Point,簡稱BEP),是“查準率=查全率”時的取值。但是BEP太過于簡化,更常用的是F1度量:
在一些應用中,對查準率和查全率的重視程度有所不同。
F1度量的一般形式——Fβ,能讓我們表達出對查準率/查全率的不同偏好,它定義為:
其中β>0度量了查全率對查準率的相對重要性。
β=1時退化為標準的F1;
β>1時查全率有更大影響;
β<1時查準率有更大影響。
F1是基于查準率與查全率的調和平均(harmonic mean)定義的:
1F1\frac{1}{F1}F11?=12\frac{1}{2}21?·(1P\frac{1}{P}P1?+1R\frac{1}{R}R1?)
Fβ則是加權調和平均:
1Fβ\frac{1}{Fβ}Fβ1?=11+β2\frac{1}{1+β2}1+β21?·(1P\frac{1}{P}P1?+β2R\frac{β2}{R}Rβ2?)
與算術平均(P+R2\frac{P+R}{2}2P+R?)和幾何平均(sqrt(P*R))相比,調和平均更重視較小值。
如果希望在n個二分類混淆矩陣上綜合考察查準率和查全率,
一種直接的做法是現在各混淆矩陣上分別計算出查準率和查全率,
記為(P1,R1),(P2,R2),…,(Pn,Rn),再計算平均值,
這樣就得到“宏查準率”(macro-P):
“宏查全率”(macro-R):
以及相應的“宏F1”(macro-F1):
還可先將各混淆矩陣的對應元素進行平均,得到TP、FP、TN、FN的平均值,分別記為再基于這些平均值計算出“微查準率”(micro-P):
“微查全率”(micro-R):
和“微F1”(micro-F1):
2.3.3 ROC與AUC
很多學習器是為測試樣本產生一個實值或概率預測,然后將這個預測值與一個分類閾值(threshold)進行比較。
這個實值或概率預測結果的好壞,直接決定了學習器的泛化能力。
實際上,根據這個實值或概率預測結果,可將測試樣本進行排序,“最可能”是正例的排在前面,“最不可能”是正例的排在后面。
這樣,分類過程就相當于在這個排序中以某個“截斷點”(cut point)將樣本分為兩部分,前一部分判作正例,后一部分則判作反例。
ROC曲線,全稱是“受試者工作特征”(Receiver Operating Characteristic)曲線。
根據學習器的預測結果對樣例進行排序,按此順序逐個把樣本作為正例進行預測,每次計算出兩個重要量的值,分別以它們為橫、縱坐標作圖,就得到了“ROC曲線”。
ROC曲線的縱軸是“真正例率”(True Positive Rate,簡稱TPR),橫軸是“假正例率”(False Positive Rate,簡稱FPR),兩者分別定義為:
顯示ROC曲線的圖稱為“ROC圖”。
繪圖過程:
1.給定m+個正例和m-個反例,根據學習器預測結果對樣例進行排序,
2.然后把分類閾值設為最大,即把所有樣例均預測為反例,此時真正例率和假正例率均為0,在坐標(0,0)處標記一個點;
3.然后,將分類閾值依次設為每個樣例的預測值,即依次將每個樣例劃分為正例;
4.設前一個標記點坐標為(x,y),當前若為真正例,則對應標記點的坐標為(x,y+1m+\frac{1}{m+}m+1?);當前若為假正例,則對應標記點的坐標為(x+1m?\frac{1}{m-}m?1?,y);
5.用線段連接相鄰點即得ROC曲線。
若一個學習器的ROC曲線被另一個學習器的曲線完全“包住”,則可斷言后者的性能優于前者;
若兩個學習器的ROC曲線發生交叉,則難以一般性地斷言兩者孰優孰劣。
此時如果一定要進行比較,則較為合理的判據是比較ROC曲線下的面積,即AUC(Area Under ROC Curve)。
假定ROC曲線是由坐標為{(x1,y1),(x2,y2),…,(xm,ym)}的點按序連接而形成(x1=0,xm=1)。
則AUC可估算為:
形式化地看,AUC考慮的是樣本預測的質量排序,因此它與排序誤差有緊密聯系。
給定m+個正例和m-個反例,令D+和D-分別表示正、反例集合,則排序“損失”(loss)定義為:
即考慮每一對正、反例,若正例的預測值小于反例,則記一個“罰分”,若相等,則記0.5個罰分。
lrank對應的是ROC曲線之上的面積:若一個正例在ROC曲線上對應標記點的坐標為(x,y),則x恰是排序在其之前的反例所占的比例,即假正例率,因此有:
2.3.4代價敏感錯誤率與代價曲線
為權衡不同類型錯誤所造成的不同損失,可為錯誤賦予“非均等代價”(unequal cost)。
根據任務的領域知識設定一個“代價矩陣”(cost matrix),其中costij表示將第i類樣本預測為第j類樣本的代價。
一般來說,costij=0;若將第0類判別為第1類所造成的損失更大,則cost01>cost10;
損失程度相差越大,cost01與cost10值的差別越大。
非均等代價下,希望的不再是簡單地最小化錯誤次數,而是希望最小化“總代價”(total cost)。
ROC曲線不能直接反映出學習器的期望總代價,因此需要“代價曲線”(cost curve)。
代價曲線圖的橫軸是取值為[0,1]的正例概率代價:
其中,p是樣例為正例的概率;
縱軸是取值為[0,1]的歸一化代價:
代價曲線的繪制:
1.ROC曲線上每一點對應了代價平面上的一條線段,設ROC曲線上的點的坐標為(FPR,TPR),則可相應計算出FNR,
2.然后在代價平面上繪制一條從(0,FPR)到(1,FNR)的線段,線段下的面積即表示了該條件下的期望總代價;
3.如此將ROC曲線上的每個點轉化為代價平面上的一條線段,
4.然后取所有線段的下屆,圍成的面積即為在所有條件下學習器的期望總代價。
2.4 比較檢驗
2.5 偏差與方差
2.6 閱讀材料
總結
以上是生活随笔為你收集整理的《机器学习》 —— 第二章:模型评估与选择 学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT (Basic Level) Pr
- 下一篇: 机器学习 —— python库 —— 使