机器学习(周志华)- 第2章模型评估与选择笔记
轉自:?https://samanthachen.github.io/2016/08/03/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0_%E5%91%A8%E5%BF%97%E5%8D%8E_%E7%AC%94%E8%AE%B02/
經驗誤差與過擬合
錯誤率: 分類錯誤樣本數占樣本總數
精度: 1 - 錯誤率
誤差:學習器事假預測輸出樣本與樣本真實輸出之間的差異
在訓練集上的誤差————“訓練誤差”(“經驗誤差”) 在新樣本上的誤差————“泛化誤差”我們希望泛化誤差小,但是實際無法預知新樣本只能采用“經驗誤差”最小化。
過擬合:把訓練樣本自身的一些特點當成所有潛在樣本的“普遍規律”,導致泛化性能下降。
欠擬合:對訓練樣本的一般性質尚未學好。
模型選擇問題:理想方案是對候選模型的泛化誤差進行評估,選擇最小的。但是無法直接獲得泛化誤差,而訓練誤差又容易導致過擬合。如何進行模型評估與選擇?看下一節。
評估方法
以測試集來測試學習器對新樣本的判別能力,以測試誤差作為泛化誤差的近似。通常假設測試樣本也是從樣本真實分布的獨立同分布采樣獲得。
需要注意測試集應該盡可能與訓練集互斥,即測試樣本盡量不在訓練集中出現、未在訓練過程中使用過。
于是需要對數據D進行劃分出訓練集S和測試集T。
留出法
直接將數據集D劃分為兩個互斥的集合S和T。在S訓練出模型,用T評估測試誤差。
需要注意,訓練/測試集應該盡可能保持數據的一致性,避免由于數據劃分過程引入產生額外的偏差而對最終結果產生影響。
單次留出法往往結果不夠準確,一般采用若干次隨機劃分、重復實驗評估取平局值。但是S與T的取值一般是2/3~4/5用于S,剩余用于測試.
交叉驗證
將D劃分為k個大小相似的互斥子集(分層采樣)。每次取k-1個子集做訓練集,剩下1個做測試集,進行k次訓練和測試,最終返回均值,也稱作“k折交叉驗證”。交叉驗證的穩定和保真性取決于k,k一般取值為10,其他的有5,20等。
將數據進行劃分通常要隨機使用不同的劃分p次,取p次k折交叉驗證均值,如“10次10折交叉驗證”。
若D包含m個樣本,k=m稱作“留一法”,該方法不收樣本劃分方式的影響。往往認為比較準確,但是數據集交大時候開銷過大。另外NFL表明未必比其他評估算法準確。
自助法(bootstrapping)
減少樣本S和T規模不同造成的影響。
具體步驟如下:
給定包含m個樣本的數據集D,我們對他進行采樣產生數據集D’:每次隨機從D中挑選一個樣本個樣本,將其拷貝放到D’中,然后再將該樣本重新放回初始數據集D,使得該樣本在下次采樣時候仍有可能被采到;這個過程重復m次以后就得到包含m個樣本的D’。顯然D中有一部分樣本會在D‘中重復出現多次,而一些則不會出現,不會出現的概率是:
即原始數據集中有36.8%不會出現在D’中。
于是我們可以用D’做訓練集,D/D’做測試集,這樣實際評估的模型與期望評估的模型都是用m個樣本。而仍有1/3沒在訓練集中的樣本用于測試。這樣的測試結果稱作“包外估計”。
優缺點
優點:
- 數據集較小,難以劃分訓練、測試集時很有用
- 能從原始數據集產生多個不同訓練集,對集成學習等有很大好處
缺點: - 改變了原始數據集分布,會引入估計誤差。
因此,在初始數據量足夠時,留出法和交叉驗證使用更多。
調參與最終模型
由于大多數算法有參數設置,需要根據范圍和步長進行實驗,對模型進行評估。
模型評估中選做評估測試的數據集稱為“驗證集”。
例如,在研究對比不同算法的泛化性能時候,我們用測試集上的判別效果來估計模型在實際使用時的泛化能力,而把訓練數據另外劃分為訓練集和測試集,基于驗證集上的性能來進行模型選擇和調參。(這樣訓練數據不會變少了?)
性能度量
回歸任務中常用的度量是均分誤差。
下面介紹分類任務中常用的性能度量。
錯誤率與精度
查準率、查全率與F1
對于二分類問題,可以根據真實類別與預測列別組合成下表:
| 正例 | 反例 | |
| 正例 | TP(真正例) | FN(假反例) |
| 反例 | FP(假正例) | TN(真反例) |
查全率P(Precision)查準率R(Recall)如下:
P=TPTP+FPP=TPTP+FP?(預測為正例的結果中真正例的比例)(包含反例預測為正例)
R=TPTP+FNR=TPTP+FN?(所有正例中真正例的比例)(包含正例預測為反例)
查準率和查全率是一對矛盾的度量。
例如,希望盡可能多的好瓜被選出來,就加大選瓜數量,將所有西瓜都選上,這樣好瓜數量也能增大,但是查準率就比較低;希望選出來瓜好瓜比率盡可能高,可以只挑選有把握的瓜,這樣查全率就比較低。
我們可以根據學習器的預測結果對樣例進行排序,排在前面的額事學習器認為“最可能是”正例的樣本,排在后面的是“最不可能”是正例的樣本。按此順序逐個把樣本進行預測,每次可以計算出當前的查全率、查準率。以Precision為縱軸,Recall為橫軸可以畫出“PR曲線”。
通常一個學習器PR曲線被另一個包圍,認為后者優于前者。
但交叉的時候就難以斷言。合理判斷是根據PR下面積,但是面積難以判斷
因此設計綜合考慮度量:
平衡點(Break-Even Point, BEP)
查準率=查全率時的取值。
F1度量
$$F1 = \frac{2PR}{P+R} = \frac{2*TP}{樣例總數+TP-TN}$$
更一般的FβFβ
$$F_{\beta} = \frac{(1+\beta^2)PR}{\beta^2 * P+R}$$
多次訓練、測試產生多個混淆矩陣時
宏查全率、宏查準率、宏F1
分別計算Precision和 Recall,然后求平均再計算F1
宏查全率、宏查準率、宏F1
平均對應TP,FP…加起來平均,再計算F1
ROC與AUC
很多學習器是為測試樣本產生一個實值或者概率預測,然后將預測值與分類閾值進行比較,若大于閾值判定為正,否則為反。這個實值決定了學習器泛化能力。
注意ROC與PR的不同
ROC縱軸是真正例率,橫軸是假正例率。
TPR=TPTP+FNTPR=TPTP+FN?(實際正例的結果中真正例的比例)
FPR=FPTN+FPFPR=FPTN+FP?(實際反例中假正例的比例)
| 正例 | 反例 | |
| 正例 | TP(真正例) | FN(假反例) |
| 反例 | FP(假正例) | TN(真反例) |
真正例率是所有真實正例中真正例的比例;
假正例率是所有真實反例中假正例的比例;
查準率是所有預測正例中真正例的比例;
查全率是所有真實正例中真正例的比例;
所以查全率與真正例率相等 , R=TPR
通常一個學習器ROC曲線被另一個包圍,認為后者優于前者。
但交叉的時候就難以斷言。合理判斷是根據ROC下面積–AUC。
形式化的看AUC考慮的是樣本預測的排序質量,與排序誤差有緊密聯系。
排序損失?lranklrank
AUC=1?lrankAUC=1?lrankPR與ROC
ROC與PR區別,分析來源
在ROC空間,ROC曲線越凸向左上方向效果越好。與ROC曲線左上凸不同的是,PR曲線是右上凸效果越好。
ROC和PR曲線都被用于評估機器學習算法對一個給定數據集的分類性能,每個數據集都包含固定數目的正樣本和負樣本。而ROC曲線和PR曲線之間有著很深的關系。
定理1:對于一個給定的包含正負樣本的數據集,ROC空間和PR空間存在一一對應的關系,也就是說,如果recall不等于0,二者包含完全一致的混淆矩陣。我們可以將ROC曲線轉化為PR曲線,反之亦然。定理2:對于一個給定數目的正負樣本數據集,一條曲線在ROC空間中比另一條曲線有優勢,當且僅當第一條曲線在PR空間中也比第二條曲線有優勢。(這里的“一條曲線比其他曲線有優勢”是指其他曲線的所有部分與這條曲線重合或在這條曲線之下。)證明過程見文章《The Relationship Between Precision-Recall and ROC Curves》
當正負樣本差距不大的情況下,ROC和PR的趨勢是差不多的,但是當負樣本很多的時候,兩者就截然不同了,ROC效果依然看似很好,但是PR上反映效果一般。解釋起來也簡單,假設就1個正例,100個負例,那么基本上TPR可能一直維持在100左右,然后突然降到0.如圖,(a)(b)分別為正負樣本1:1時的ROC曲線和PR曲線,二者比較接近。而(c)(d)的正負樣本比例為1:1,這時ROC曲線效果依然很好,但是PR曲線則表現的比較差。這就說明PR曲線在正負樣本比例懸殊較大時更能反映分類的性能。
代價敏感錯誤率與代價曲線
根據任務的領域知識設定代價矩陣。(可以認為前面的度量默認各項代價均等)
對應的ROC曲線叫代價曲線。
比較檢驗
性能比較影響因素:1、泛化性能VS測試集性能 2、測試集選擇 3、算法隨機性。
采用統計假設檢驗推斷學習器A泛化性能是否在統計意義上優于B,并且把握多大。
假設檢驗
下面的是針對單個學習器泛化性能的假設進行檢驗。
二項檢驗
一個測試錯誤率推測泛化錯誤率分布。
t檢驗
多個測試錯誤率。
針對多個學習器采用下文:
交叉驗證t檢驗
McNemar檢驗
Fridman檢驗與Nemenyi檢驗
偏差與方差
“偏差方差分解”是解釋學習算法泛化性能的重要工具,可以對期望泛化誤差率進行拆解。
泛化誤差可以分解為偏差、方差和噪聲之和。
總結
以上是生活随笔為你收集整理的机器学习(周志华)- 第2章模型评估与选择笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 玻尿酸面膜有什么功效(不同功效的面膜有几
- 下一篇: usb分线器对电脑好吗(usb分线器的供