書名:《機器學習》
作者: 周志華
第二章 模型評估與選擇
2.1 經驗誤差與過擬合
錯誤率, 精度,誤差,誤差期望, 訓練誤差(經驗誤差), 泛化誤差, 測試誤差
過擬合: 學習器把訓練樣本學得“太好了”的時候, 很可能已經把訓練樣本自身的特點當作了所有潛在樣本都會具有的一般性質, 這樣就會導致泛化能力性能下降。 這種現象在機器學習中稱為“過擬合”, 也稱為“過配”。
原因:最常見的情況是由於學習能力過於強大,以至於把訓練樣本所包含的不太一般的特性都學到了。 過擬合比較麻煩, 過擬合是機器學習面臨的關鍵障礙,無法徹底避免的, 所能做的只是“緩解”。
欠擬合: 對訓練樣本的一般性質尚未學好, 欠擬合也稱為“欠配”。
原因: 通常是由於學習能力低下而造成的。 欠擬合比較容易克服, 例如神經網絡中增加訓練輪數。
說明: 學習能力是否“過於強大”, 是由學習算法和數據內涵共同決定的。
2.2 評估方法
選擇合適的學習算法和適當的參數配置的問題在機器學習中叫做“模型選擇”問題。理想的解決方案是對候選模型的泛化誤差進行評估,然后選擇泛化誤差最小的那個模型。然后無法直接獲得泛化誤差,而訓練誤差又由於過擬合現象的存在而不適合作為標准, 所以需要一些評估方法。
一般要求測試集和訓練集應該是互斥的。然而如何將一個數據集分為訓練集和測試集呢?
2.2.1 留出法
"留出法"(hold-out)直接將數據集D划分為兩個互斥的集和。
訓練/測試集的划分要盡可能保持數據分布的一致性, 避免因數據划分過程引入額外的偏差而對最終結果產生影響。 如果從采樣的角度來看待數據集的划分過程, 則保留類別比列的采樣方式通常稱為“分層采樣”。
通常的做法是將大約2/3~4/5的樣本用於訓練, 剩余樣本用於測試。
2.2.2 交叉驗證法
“交叉驗證法”(cross validation)先將數據集D划分為k個大小相似的互斥子集, 每個子集都盡可能保持數據分布的一致性, 也就是從D中通過分層采樣得到。 然后每次選k-1個子集的並集作為訓練集, 剩余的那個子集作為測試集, 這樣就可以得到k組訓練/測試集。然后進行k次訓練和測試, 最終返回的是k個測試結果的均值。
顯然, 交叉驗證法評估結果的穩定性和保真性在很大程度上取決於k的取值。通常交叉驗證法又稱為“k折(倍)交叉驗證”(k-fold cross validation)。k通常的取值是10、5、20。
對數據集D划分為k個子集有多種不同的划分。 為減少因樣本划分不同而引入的誤差, k折交叉驗證通常要隨機使用不同的划分重復p次, 最終的評估結果是p次k折交叉驗證結果的均值。 例如常見的有“10次10折交叉驗證”。
留一法(Leave-One-Out, 簡稱LOO), 每一個樣本作為一個子集。 也就是訓練集比數據集少了一個樣本,結果一般認為比較准備。 但是數據量大的時候缺陷比較明顯。
2.2.3 自助法
"自助法"就是有放回的進行采樣得到一個包含m個樣本的訓練集D`。 樣本在m次采樣始終不被采到的概率是(1 - 1 / m) ^m, 取極限就等於 1/e=0.368, 也就是數據集D中有大約36.8%的樣本未出現在采樣數據集D`中的。 於是我們將D`用作訓練集, D - D`用作測試集; 這樣, 實際評估的模型與期望評估的模型都使用m個訓練樣本, 而我們仍有數據總量約1/3的、沒有在訓練集中出現的樣本用於測試。 這樣的測試結果, 也稱為“包外估計”(out-of-bag estimate)。
自助法在數據量小、難以有效划分訓練/測試集時很有用。此外, 自助法能從初識數據中產生多個不同的訓練集, 這對集成學習等方法有很大的好處。 然而, 自助產生的數據改變了初識數據集的分布, 這會引入估值偏差。 因此, 數據量足夠時, 留出法和交叉驗證更為常用一些。
2.2.4 調參與最終模型
在進行模型評估與選擇時, 除了要對適用學習算法進行選擇, 還需要對算法參數進行設定, 這就是通常所說的“參數調節”或者簡稱“調參”(parameter tuning)。
注: 機器學習中通常涉及兩種參數調節:一類是算法的參數, 亦稱“超參數”, 數目常在10以內; 另一類是模型的參數, 數據可能很多, 例如深度學習模型。 兩者調參方式相似, 均是產生多個模型之后基於某種評估方法進行選擇;不同之處在於前者通常是由人工設定多個參數后選值產生模型, 后者則是通過學習來產生多個候選模型(例如神經網絡在不同輪數停止訓練后得到的模型)。
2.3 性能度量
性能度量: 衡量模型泛化能力的評價標准。
回歸任務最常用的性能度量是“均方誤差”(mean squared error)
2.3.1 錯誤率與精度
錯誤率: 分類錯誤的樣本數占樣本總數的比例。
精度: 分類正確的樣本占樣本總數的比例。
2.3.2 查准率(准確率)、查全率(召回率)與F1值
信息檢索中, 查准率(precision)用於衡量“檢索出的信息中有多少比例是用戶感興趣的”, 查全率(recall)是用來衡量“用戶感興趣的信息中有多少被檢索出來了”。
在二分類問題中, 真實結果與預測結果有四種可能性, true positive, false positive, true negative, false negative. TP + FP + TN + FN = 樣例總數。 組成的矩陣稱為“混淆矩陣”(confusion matrix)。
查准率P, P = TP / (TP + FP)
查全率, R = TP / (TP + FN)
查准率和查全率是一對矛盾的度量。
查准率與查全率組成的曲線叫做P-R曲線, 如果曲線A完全包圍曲線C,那么就認為學習器A優於學習器C, 如果有交叉則不一定, 但是人們總是比較比一個高低,那么一般都用圍成的面積進行衡量, 它在一定程度上表征了學習器在查准率和查全率上取得相對“雙高”的比例。 但是這個又不太容易估算, 所以人們又設計了一些綜合考慮查准率、查全率的性能度量。
"平衡點"(Break-Even Point, 簡稱BEF), 它是“查准率=查全率”時的取值。
但是BEF過於簡化了, 更常用的是F1度量:
F1 = 2 * P * R / (P + R) = 2 * TP / (樣例總數 + TP - TN)
在一些應用中對這兩個的重視程度有所不同。F1度量的一般形式——Fβ, 能讓我們表達出對查准率,查全率的不同偏好, 定義為:
Fβ = (1 + β^2) * P * R / ((β^2 * P) + R)
其中β>0度量了查全率對查准率的相對重要性。 β=1時退化為標准的F1; β > 1時查全率有更大的影響; β < 1時查准率有更大的影響。
F1是基於查准率與查全率的調和平均(harmonic mean)定義的:
1 / F1 = 1 / 2(1 / P + 1 / R)
Fβ則是加權調和平均:
1 / Fβ = 1 / (1 + β^2) * (1 / P + β^2 / R)
與算術平均(P + R) / 2)和幾何平均(sqrt(P * R))相比, 調和平均更重視較小值。
在多個二分類混淆矩陣上綜合考慮查准率和查全率。
-
先計算機算出(P1, R1), (P2, R2), (P3, R3)...., 在計算平均值, 這樣得到“宏查准率”(macro-P)、 “宏查全率”(macro-R), 以及相應的"宏F1"(macro-F1)
-
對TP、 FP、 TN、 FN進行求平均值,然后計算出"微查准率"(micro-P)、"微查全率"(micro-R)和“微F1”(micro-F1)
2.3.3 ROC 與 AUC
ROC全稱是“受試者工作特征”(Receiver Operating Characteristic)曲線。 它與P-R曲線類似,但是P-R曲線使用的是查准率、查全率。而ROC曲線使用的縱軸是“真正例率”(True Positive Rate, 簡稱TPR), 橫軸是“假正例率”(False Positive Rate, 簡稱FPR)。
TPR = TP / (TP + FN)
FPR = FP / (FP + TN)
ROC曲線之間的比較和P-R曲線的比較類似,面積用AUC(Area Under ROC Curve)表示。
2.3.4 代價敏感錯誤率與代價曲線
“代價敏感錯誤率”: 就是在計算錯誤率的時候不是簡單的統計錯誤次數,而是為不同的錯誤乘以相應的代價,也就是權重。
2.4 比較檢驗
2.4.1 假設檢驗
置信度(confidence)
2.4.2 交叉驗證t檢驗
2.4.3 McNemar檢驗
2.4.4 Friedman檢驗與Nemenyi后續檢驗
2.5 偏差與方差
“偏差-方差分解”(bias-variance decomposition)是解釋學習算法泛化能力的一種重要工具。
泛化誤差可以分解為偏差、方差與噪聲之和。
偏差度量了學習算法的期望預測與真實結果的偏離程度,即刻畫了學習算法本身的擬合能力;
方差度量了同樣大小的訓練集的變動所導致的學習性能的變化,即刻畫了數據擾動所造成的影響;
噪聲則表達了在當前任務上任何學習算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度。
偏差-方差分解說明,泛化性能是由學習能力、數據的充分性以及學習任務本身的難度所共同決定的。給定學習任務,為了取得好的泛化能力,則需使偏差較小,即能夠充分擬合數據,並且使方差較小,即使得數據擾動產生的影響小。
一般來說,偏差與方差是有沖突的,這稱為偏差-方差窘境(bias-variance dilemma)。
