1. 程式人生 > >分類(6):不平衡和多分類問題

分類(6):不平衡和多分類問題

一、不平衡問題

(1)不平衡資料

例如:一個產品生產的不合格產品數量會遠低於合格產品數量。信用卡欺詐的檢測中,合法交易遠遠多於欺詐交易。
這時候,準確率的度量會出現一些問題,因為她把每個類都看得同等重要。
例如,1%的信用卡交易是欺詐行為,則預測每個交易都是合法的模型有99%的準確率,它也可能檢測不到任何欺詐交易。

(2)混淆矩陣

在不平衡資料中,稀有類比較有意義,對於二元分類,稀有類通常記為正類,而多數類被認為是負類。下面顯示了混淆矩陣:

5_37.png

真正(true positive,TP):++
假正(false positive,FP):-+
真負(true negative,TN):–
假負(false negative,FN):+-

真正率(true positive rate,TPR)或靈敏度(sensitivity):

TPR=TPTP+FN=(++)(++)+(+)
真負率(true negative rate,TNR)或特指度(specificity):
TNR=TNTN+FP=()()+(+)
假正率(false positive rate,FPR):
FPR=FPTN+FP=(+)()+(+)
假負率(false negative rate,FNR):
FNR=FNFN+TP=(+)(+)+(++)
精度(precision):
p=TPTP+FP=(++)(++
)+(+)

召回率(recall)即為真正率:
r=(TP)(TP)+(FN)=(++)(++)+(+)
精度和召回率是很重要的度量量,稱為 F1 統計量:
F1=2rpr+p=2×TP2×TP+FP+FN=21r+1p
F1 是召回率和精度的調和平均數,F1 趨近於它們之間的較小值,因此,一個高的 F1 確保精度和召回率都高。
Fb 的公式:
Fb=(b2+1)rpr+b2p=(b2+1)1r+b2p
低的 b 使得 Fb 更加接近精度,高的 b 使得 Fb 更加接近召回率。
(3)接受者操作曲線(ROC)

是真正率和假正率取折中的一種圖形化方法。真正率為 y 軸,假正率為 x 軸。

ROC的幾個關鍵點:

(TPR=0,FPR=0):把所有的都預測為負
(TPR=1,FPR=1):把所有的都預測為正
(TPR=1,FPR=0):理想模型。只要是正的,都預測為正。

一個好的分類器,儘量靠近左上角,隨機猜想為對角線。

5_38.png

產生ROC曲線方法:
5_39.png

(4)代價敏感學習

模型 M 的代價:

Ct(M)=TP×C(+,+)+FP×C(,+)+FN×C(+,1)+FN×C(,)

如下是一個代價矩陣:
5_40.png

它可以把決策邊界擴充套件:
5_41.png

對於代價矩陣,若 C(+,+)=C(-,-)=0 的情況,分類正確不需要代價,則:
5_42.png

求解可以得到決策邊界。

基於抽樣方法

對於樣本進行處理,假設有100個正樣本和1000個負樣本。
不充分抽樣(udersampling):取和正樣本一樣數量的負樣本,取100個負樣本,形成訓練集。
過分抽樣(oversampling):將正樣本複製,或者重複抽樣,使得正樣本的數量和負樣本一樣1000個。

二、多類問題

1、one-vs-rest 方法。將多類問題分解為 K 個二類問題,將屬於yi的歸為正類,而其他類被分為負類,依次進行。
2、one-vs-one 方法。它構建K(K-1)/2 個二分類器,每一個分類器用來區分一對類 (yi,yj) ,當為類 (yi,yj) 建立分類器的時候,將不屬於 (yi,yj) 的樣本忽略掉。

例子:
5_43.png

5_44.png

使用上述兩種方法建模後,可能出現分類平局。另一種方法,將輸出轉變為概率估計,將例項給予高概率的類。

糾錯輸出編碼

糾錯輸出編碼(error-correcting output coding,ECOC):一種處理多分類更加魯棒的方法,給予每個類一個程式碼字,對於每個可能預測錯誤的,選取距離程式碼字最近的那一類。