機器學習筆記:模型選擇與評估(Model selection and evaluation)

前言

在機器學習中,我們需要用一些方法去衡量我們選擇的模型效果的優(yōu)劣。這里我記錄了一些比較常見的方法,以此來評估我們選擇的模型在此場景下的優(yōu)劣程度。

一、介紹

我們將學習器預測輸出與樣本真實輸出的差異稱為誤差。預測正確的樣本數(shù)占樣本總數(shù)比例稱為準確率(accuracy),相反錯誤樣本數(shù)占樣本總數(shù)的比例稱為錯誤率(error rate) 。 但是準確率并不能有效說明機器學習性能,實際上達到準確率100%的學習器在大多數(shù)情況都不好。

我們實際希望得到的是能夠在新樣本上表現(xiàn)很好的機器。在新樣本上的誤差,我們稱為泛化誤差。訓練學習器的時候,學習器學習訓練集“太好”,導致將訓練集的一些特點當成所有樣本的普遍規(guī)律,這樣會導致泛化性能下降,這種現(xiàn)象在機器學習中被稱為“過擬合”(overfitting)。相反的學習器學習訓練集太差,訓練集一般的性質(zhì)都沒有學好,稱為“欠擬合”(underfitting)。

二、評估方法

現(xiàn)實任務中,我們需要選擇合適的模型和合適的參數(shù)。那么我們方案通常是,對候選的模型進行泛化誤差評估,選取泛化誤差最少的模型。所以在我們模型訓練之前對數(shù)據(jù)集進行劃分,分成訓練集和測試集。我們會根據(jù)數(shù)據(jù)集的情況(數(shù)據(jù)量,分布是否均勻等)來選擇合適的劃分方式。

我們需要使用一個測試集來測試學習器對新樣本的泛化能力。測試樣本也是從樣本真實分布中獨立同分布采樣而得。測試集和訓練集盡可能互斥。以下是常用的幾種方式:

2.1 留出法
  • 把數(shù)據(jù)集分成互不相交的兩部分,一部分是訓練集,一部分是測試集。

  • 保持數(shù)據(jù)分布大致一致,類似分層抽樣

  • 訓練集數(shù)據(jù)的數(shù)量應占2/3~4/5

  • 為了保證隨機性,將數(shù)據(jù)集多次隨機劃分為訓練集和測試集,然后在對多次劃分結果取平均。

2.2 交叉驗證法 如圖2-1所示:
圖2-1 交叉驗證法圖例
  • 將數(shù)據(jù)集隨機分為互斥的k個子集,為保證隨機性,P次隨機劃分取平均。

  • 將k個子集隨機分為k-1個一組剩下一個為另一組,有k種分法。

  • 將每一種分組結果中,k-1個子集的組當做訓練集,另外一個當做測試集,這樣就產(chǎn)生了k次預測,對其取平均

  • 稱為p次k折交叉驗證,一般取k=10

2.3 自助法
  • 適用于樣本量較小,難以劃分時。換句話說,樣本量足夠時,用自助法并不如留出法和交叉驗證法,因其無法滿足數(shù)據(jù)分布一致。

  • 每次隨機從數(shù)據(jù)集(有m個樣本)抽取一個樣本,然后再放回(也就是說可能被重復抽出),m次后得到有m個樣本的數(shù)據(jù)集,將其作為訓練集

  • 始終不被抽取到的樣本的比例:

  • 也就是說這保證了訓練集樣本數(shù)(不重復)在2/3左右

2.4 小結

(1)自助法在數(shù)據(jù)量較小,訓練集測試集難分的時候比較適用。在初始數(shù)據(jù)量足夠時,留出法和交叉驗證法更加適用。

(2)我們在對比不同算法模型的泛化性能時,我們用測試集來評估模型實際的泛化能力,而把訓練集另分為訓練集和驗證集,用驗證集評估來做模型選擇和調(diào)參。通常我們會多隨機劃分數(shù)據(jù)集來進行模型調(diào)優(yōu),來減少數(shù)據(jù)集分布差異帶來的影響。

(3)當模型選擇完成后,學習算法和參數(shù)配置已選定,此時應該將所有數(shù)據(jù)集用來重新訓練模型,這個模型在訓練過程中使用了所有的樣本,這才是最終我們提交給用戶的模型。

三、評估指標

3.1常用的預測評估方法

我們需要從100名同學中(男50名,女50名),選出所有女生。通過分類器模型后,選取結果為40名女生20名男生。
目標為識別所有女生,即識別為女生為正樣本,識別為男生為負樣本。
分類結果混淆矩陣 如圖 3-1 所示:


圖3-1 分類結果混淆矩陣

我們需要的是女生所以,選取女生稱為相關,選取的男生為無關。即我們可以得到混淆矩陣,如圖3-2所示:


圖 3-2 分類結果混淆矩陣

accuracy(準確率)是用來計算模型預測正確的能力(包含正負樣本),即模型預測正確的樣本數(shù)占總人數(shù)比例,(TP+FP)/(TP+FP+FN+TN)=(40+20)/(40+20+10+30)。根據(jù)accuracy,在某些場合可以說明一個分類器的有效度,但是很多時候,并不能充分評估一個模型的好壞。

precision(精準率)計算檢測到的模型預測正樣本的能力,即模型成功預測出的女生概率,P=TP/(TP+FP)=40/(40+20)=0.67

recall(召回率)計算檢測到正樣本占正樣本總數(shù)比例,即有多少比例的正樣本被成功預測,R = TP/(TP+FN) = 40/(40+10)=0.8

根據(jù)P和R,我們根據(jù)召回率可以說分類的很好,但是根據(jù)精準率我們可以說分類不好,所以只根據(jù)P和R無法更好的評估分類效果,這時我們就可以引入F-measure,F(xiàn)β表達式如圖3-3所示:


圖3-3 Fβ表達式

當β等于1時,F(xiàn)-measure就被稱為F1,F(xiàn)1表達式如圖3-4所示:


圖3-4 F1表達式

F1 為了衡量召回率和精準率兩個綜合評估值,計算公式:F1=2*PR/(P+R),F(xiàn)1在對預測如果只有一個二分類混淆矩陣,那么用以上的指標就可以進行評價,但是如果我們需要在n個二分類混淆矩陣上要綜合考察評價指標的時候就會用到宏平均(Macro-F1)和微平均(Micro-F1)。
舉個簡單例子,如果有四個類別需要我們分類,分類器得出結果如下圖3-5所示:
圖3-5 多分類結果

Micro-F1-measure來衡量分類效果優(yōu)劣:
'micro':通過先計算總體的TP,F(xiàn)N和FP的數(shù)量,再計算F1。根據(jù)圖3-5我們已經(jīng)給出了TP、FN、FP的總數(shù),所以micro的 精確度P 為 TP/(TP+FP)=8/(8+4)=0.666 召回率R TP/(TP+FN)=8/(8+6)=0.571 然后將micro-P,micro-R帶入F1表達式中得:2PR/(P+R) = 20.666*0.571/(0.666+0.571) = 0.615

Macro-F1-measure衡量分類效果:
'macro':分布計算每個類別的F1,然后做平均(各類別F1的權重相同),根據(jù)圖3-5給出的數(shù)據(jù),可以得出
類一的P=3/(3+0)=1 , R=3/(3+2) = 0.6 , F1 =210.6/(1+0.6) = 0.750
類二的P=2/(2+0)=1 , R=2/(2+2) = 0.5 , F1 =210.5/(1+0.5) = 0.667
類三的P=2/(2+3)=0.4 , R=2/(2+1) = 0.667 , F1 =20.40.667/(0.4+0.667) = 0.500
類四的P=1/(1+1)=0.5 , R=1/(1+1) = 0.5 , F1 =20.50.5/(0.5+0.5) = 0.500
最后將類一到類四的所有F1值取數(shù)學平均值得到Macro-F1值,Macro-F1=(0.750+0.667+0.5+0.5)/ 4 = 0.604

由于macro沒有考慮到各個類別的樣本大小情況,所以如果這個數(shù)據(jù)集中各個類的分布不平衡的話,更建議使用mirco-F1。具體使用哪一種評估標準還是要看具體的數(shù)據(jù)分布情況。

  • 理性狀態(tài)是召回率與精準率都高

  • 通常召回率和精準率在大規(guī)模數(shù)據(jù)集合中相互制約,召回率高,精準率低;精準率高,召回率低;我們通常需要找一個平衡點。如果兩者都低,則表示出了問題。

  • 在不同場景,我們會用不同的閾值統(tǒng)計不同閾值下的召回率精準率,如搜索場景,我們會保證召回率,提升精準率。

注:檢測模型的優(yōu)良是根據(jù)應用場景來,檢測方式有很多如剛才介紹的accuracy,precision,recall,F(xiàn)1等,根據(jù)應用的場景來選擇合適的評估方法是我們需要做的,如對預測的出錯有非常嚴格要求的時候,我們需要優(yōu)先考慮選擇召回率高的,比如在病情預測等場景。
3.2 mAP(mean Average Precision)

mAP是為解決P,R,F(xiàn)-measure的單點值局限性的。Average Precision,即平均精確度。mAP即平均AP值。

根據(jù)P-R圖,我們可以直觀表示全局性能的指標。precision,即準確率;recall,即召回率。P-R即以precision 和 recall作為縱、橫軸坐標的二維曲線。 如圖3-6所示

圖3-6 P-R曲線與平衡點示意圖

如何根據(jù)P-R圖評價學習性能:

  1. 第一種方法是比較曲線下面積,但值不太容易估算;

  2. 第二種方法是比較兩條曲線的平衡點,平衡點是“查準率=查全率”時的取值,在圖中表示為曲線和對角線的交點。平衡點在外側的曲線的學習器性能優(yōu)于內(nèi)側。

  3. 第三種方法是F1度量和Fβ度量。F1是基于查準率與查全率的調(diào)和平均定義的,F(xiàn)β則是加權調(diào)和平均。

mAP數(shù)學公式:如圖3-7所示:


圖3-7 mAP數(shù)學公式
3.3 ROC(Receiver Operating Characteristic)

ROC可以用來說明二分類器在識別閾值變化時的性能, 在邏輯回歸中,我們設置一個閾值,大于閾值我們稱為正類,小于閾值為負類。我們降低閾值,會使更多樣本分為正類,同時也會使得一部分負類被錯分為正類。ROC曲線可以形象表示這一變化,評價分類器的好壞。

ROC有兩個重要指標,一個TPR代表正例分對的概率,另一個為FPR,代表負例錯分為正例的概率。

True Positive Rate ( TPR ) = TP / [ TP + FN] ,TPR代表能將正例分對的概率

False Positive Rate( FPR ) = FP / [ FP + TN] ,F(xiàn)PR代表將負例錯分為正例的概率

在 ROC 空間中,每個點的橫坐標是 FPR,縱坐標是 TPR,這也就描繪了分類器在 TP(真正率)和 FP(假正率)間的 trade-off2。如圖3-7所示


圖3-7 ROC示意圖

由于二值分類問題往往是連續(xù)的,通過變化閾值大小,進行分類。根據(jù)分類結果計算得到ROC空間上的點,連接這些點形成的ROC curve。ROC curve經(jīng)過(0,0)(1,1),實際上(0, 0)和(1, 1)連線形成的ROC curve實際上代表的是一個隨機分類器。一般情況下,這個曲線都應該處于(0, 0)和(1, 1)連線的上方。

3.4 AUC(Area Under roc Curve)

通過ROC curve可以直觀的看出分類器的performance,但是我們希望有一個數(shù)值來表示這個分類器具體的好壞,這個就是AUC(Area Under roc Curve) 。

顧名思義AUC就是ROC curve下方與坐標軸圍成的面積。

  • 隨機挑選一個正樣本以及一個負樣本,分類器判定正樣本的值高于負樣本的概率就是 AUC 值。

  • 通常AUC值在0.5~1.0之間,AUC值越大,表示分類器效果越好。

  • ROC曲線有個很好的特性:當測試集中的正負樣本的分布變化的時候,ROC曲線能夠保持不變。在實際的數(shù)據(jù)集中經(jīng)常會出現(xiàn)類不平衡(class imbalance)現(xiàn)象,即負樣本比正樣本多很多(或者相反)。

3.5 方差與偏差

學習器在新樣本上產(chǎn)生的誤差被稱為泛化誤差,泛化誤差又可以分解為偏差(bias), 方差(variance) 和噪聲(noise) 。

  • 偏差(bias):顧名思義,就是偏離了某個“標準”,離真實值距離大小。偏差度量了學習算法的期望預測與真實結果的偏離程度, 即刻畫了學習算法本身的擬合能力。

  • 方差(variance):方差表示的是離散程度,在期望值附近的波動程度。方差度量了同樣大小的訓練集的變動所導致的學習性能的變化, 即刻畫了數(shù)據(jù)擾動所造成的影響 。

  • 噪聲:噪聲表達了在當前任務上任何學習算法所能達到的期望泛化誤差的下界, 即刻畫了學習問題本身的難度。巧婦難為無米之炊, 給一堆很差的食材, 要想做出一頓美味, 肯定是很有難度的.

噪聲屬于不可約減的誤差,所以這里我們只需關注方差和偏差。

我們利用靶心圖來直觀體現(xiàn)偏差與方差,如圖 3-8所示:

圖 3-8 方差與偏差圖例
  • 假設紅色的靶心區(qū)域是學習算法完美的正確預測值, 藍色點為每個數(shù)據(jù)集所訓練出的模型對樣本的預測值, 當我們從靶心逐漸向外移動時, 預測效果逐漸變差.

  • 很容易看出有兩副圖中藍色點比較集中, 另外兩幅中比較分散, 它們描述的是方差的兩種情況. 比較集中的屬于方差小的, 比較分散的屬于方差大的情況.

  • 再從藍色點與紅色靶心區(qū)域的位置關系, 靠近紅色靶心的屬于偏差較小的情況, 遠離靶心的屬于偏差較大的情況

泛化誤差

圖3-9 泛化誤差表達式

方差:

圖3-10 方差表達式

偏差:

圖3-11 偏差表達式

f(x;D):由訓練集D學得的模型f對x的預測輸出

fˉ(x):模型f對x的期望預測輸出

一般來說,我們希望方差和偏差都盡可能小,但實際上方差和偏差有沖突,稱為偏差-方差窘境 (bias-variance dilemma)

  • 給定一個學習任務, 在訓練初期, 由于訓練不足, 學習器的擬合能力不夠強, 訓練集擾動能力不足以使學習器顯著變化,也就是欠擬合的情況,此時偏差影響最大。

  • 隨著訓練程度的加深, 學習器的擬合能力逐漸增強, 訓練數(shù)據(jù)的擾動也能夠漸漸被學習器學到,此時方差逐漸主導了泛化錯誤率。

  • 充分訓練后, 學習器的擬合能力已非常強, 訓練數(shù)據(jù)的輕微擾動都會導致學習器發(fā)生顯著變化, 當訓練數(shù)據(jù)自身的、非全局的特性被學習器學到了, 則將發(fā)生過擬合。

3-6 回歸損失函數(shù)

MSE、MAE、Huber、RMSE常用在回歸預測模型上,預測結果不是0和1這種類別,而是連續(xù)的數(shù)值的時候,我們通常會使用這幾種方式來評估模型的優(yōu)劣。具體可參考文章五個常用損失函數(shù)

(1)均方誤差MSE: Mean Squared Error

均方誤差是指參數(shù)估計值與參數(shù)真值之差平方的期望值; 回歸任務最常用的評估指標,MSE可以評價數(shù)據(jù)的變化程度,MSE的值越小,說明預測模型描述實驗數(shù)據(jù)具有更好的精確度。如圖3-12所示:

圖3-12 均方誤差MSE
我們可以看到MSE對誤差取了平方,也意味著如果預測值與真實值差距大于1,則MSE會進一步增大誤差。也就是說如果檢測的時候出現(xiàn)異常點,會導致誤差增大,MSE相對于MAE來說對異常點會更敏感。
(2)均方根誤差(RMSE)

均方誤差:均方根誤差是均方誤差的算術平方根。如圖3-13所示:


圖3-13 均方根誤差RMSE
RMSE就是MSE的平方根,與MAE處于同一個量級。均方根誤差標準差能反映一個數(shù)據(jù)集的離散程度。平均數(shù)相同的,標準差是未必的,如第一組數(shù)據(jù)為3 、4 、5。第二組數(shù)據(jù)2 、 4、 6。兩組平均值都是4。但是第一組的三個數(shù)值相對更靠近平均值,也就是離散程度小,均方差就是表示這個的。RMSE計算模型的損失會以犧牲了其它樣本的誤差為代價,朝著減小異常點誤差的方向更新,然而這會降低模型的整體性能。
(3)平均絕對誤差(MAE: Mean Absolute Error)

平均絕對誤差是絕對誤差的平均值,平均絕對誤差能更好地反映預測值誤差的實際情況。如圖3-14所示:

圖3-14 平均絕對誤差MAE

fi表示預測值,yi表示真實值

MAE對異常點的魯棒性很好,直觀上來理解,當我們最小化MAE時會發(fā)現(xiàn),其實我們計算的是樣本點目標值的中位數(shù),而最小化MSE是所有目標值的平均數(shù)。對異常值來說,中位數(shù)的魯棒性優(yōu)于平均數(shù)。但是MAE有個嚴重的缺陷,在神經(jīng)網(wǎng)絡中,它的更新梯度始終相同,意味著在損失很小時,梯度也不會減小,我們必須對應調(diào)整學習率,當損失減小時,調(diào)小學習率。
(4)平滑平均絕對誤差(Huber Loss)

Huber損失對數(shù)據(jù)中的異常點沒有平方誤差損失那么敏感。它在0也可微分。本質(zhì)上,Huber損失是絕對誤差,只是在誤差很小時,就變?yōu)槠椒秸`差。誤差降到多小時變?yōu)槎握`差由超參數(shù)δ(delta)來控制。當Huber損失在[0-δ,0+δ]之間時,等價為MSE,而在[-∞,δ]和[δ,+∞]時為MAE。如圖3-15所示:


圖3-15 Huber Loss
使用MAE訓練神經(jīng)網(wǎng)絡最大的一個問題就是不變的大梯度,這可能導致在使用梯度下降快要結束時,錯過了最小點。而對于MSE,梯度會隨著損失的減小而減小,使結果更加精確。在這種情況下,Huber損失就非常有用。它會由于梯度的減小而落在最小值附近。比起MSE,它對異常點更加魯棒。因此,Huber損失結合了MSE和MAE的優(yōu)點。但是,Huber損失的問題是我們可能需要不斷調(diào)整超參數(shù)delta。

四、結語

本篇文章介紹了模型評估常用的方法,評估方式根據(jù)應用場景的不同會做不同的選擇也會做適當?shù)恼{(diào)整,通過這些方法我們就可以合理的評估模型以此來調(diào)整優(yōu)化我們的模型參數(shù)或者選用更合適的模型。歡迎對此感興趣的小伙伴一起學習探討。最近會寫一些機器學習相關的內(nèi)容,都是自己的筆記,如果有什么錯誤,還請大家指出來,非常感謝。

如果您喜歡我的文章,請關注或點擊喜歡,您的支持是我最大的動力 ^ ^~!
歡迎指出問題,一起討論,共同進步
轉(zhuǎn)載請注明作者及其出處

黑羊的皇冠 簡書主頁

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372

推薦閱讀更多精彩內(nèi)容