非均衡數據處理--如何評價?

什麼是非均衡數據?

這個問題很直觀, 就是樣本中數據的不同類別的樣本的比例相差很大, 一般可以達到 9:1 或者更高。 這種情況其實蠻常見的, 譬如去醫院看病的人,最後當場死亡的比例(大部分人還是能活著走出醫院的, 所以要對醫生好點)。 或者搞大數據的人員中男女比例。再或者, 生長線上的正品和次品。 如下圖就是, 兩種樣本非常不成比例, 就失衡了(Imbalanced/unbalanced) 。

為什麼非均衡是個大問題?

主要的原因就是非均衡影響到了分類演算法的效果。是怎麼影響的呢? 首先我們看一下如何評價一個分類演算法。 一般來說會用到Confusion Matrix。

一般來說,一個分類器要正確率高。 那麼正確率(Accuracy,ACC)是什麼呢?

但是如果是非均衡的情況下, 如果選擇絕對分類器(absolute classifier), 簡單全部判別成主要(Major)的類別, 那麼 (TP+TN)/ (P + N) = P / (P + N) > 90% 。

另外一個原因, 因為目前大部分分類器是按平衡數據的正確率來進行優化的, 那麼很容易忽視較小(Minor)的類別, 使得分類器對Minor失效。

因此兩個問題放在我們面前了:

1): 如何評價非均衡數據分類效果。

2): 如何學習到一個適合分類器。

非均衡數據分類的評價?

有個最早在自信號處理領域發明, 但是生物醫學領域發揚光大的標準叫受試者操作特徵曲線 Receiver operating characteristic (ROC) curve的標準。受試者, 一聽就像藥物測試的對象。 對的,這正是前面提到在生物醫藥領域, 非均衡情況特別普遍, 這也是ROC curve標準廣泛應用的原因吧。

ROC 曲線是坐標繫上的曲線, X軸是FPR (Specificity), Y軸是TPR(Sensitivity / Recall)。

一般情況下, 這個曲線採用描點法(4個點)來確定這個曲線。 而這個曲線下面和X軸的面積,就叫Area Under Curve(AUC)。 AUC是衡量分類器好壞的標準。

為什麼ROC有效呢?因為我們選擇一個隨機分類器(random classifier), 這是比較一個分類器好壞的最好辦法。 因為比隨機分類器稍好的叫弱分類器(weak classifier), 要好很多的叫強分類器(strong classifier)。ROC在隨機分類器情況下,剛好是對角線。

ROC 曲線在absolute classifier把全部數據分到major類別時候, 不存在Accuracy的問題。 因為AUC=0, 是很差的情況。

因此, 把ACC受到非均衡影響的叫imbalance sensitive的標準, 而把AUC這類的叫imbalance non-sensitive標準。 所以要選這non-sensitive的標準來衡量非均衡數據。 和ACC相關的F-Measure, 或者相關係數Correlation Coefficient(CC), 以及決策樹用的Mutual Information(MI)這些都是sensitive的,不推薦使用。 而G-Mean, AUC, 以及基於ROC衍生的PCF-EC圖(Probility Cost Function - Expected Cost)等是non-sensitive的比較推薦。

大致情況,如下圖所示, 更多細節就不在這裡展開了。

根據Chris Chen的提醒, 加入「Cumulative Gains Curve and lift chart」 和 「Area Under Lift, AUL」:

小結, 這樣我們總結了如何評價非均衡數據分類的情況, 該選用non-sensitive的標準。 但是如何學習的問題?後續會繼續介紹, 主要有三種方式:

  1. 通過sampling技術,生成均衡的樣本
  2. 調整演算法,允許演算法改變權重weight變得cost-sensitive。
  3. 採用集成學習思想, 將major類進行橫向劃分,形成小的均衡的樣本集群。

推薦閱讀:

霍金已逝,這些物理學家也慢慢被淡忘了
用python建立房價預測模型|python數據分析建模實例
數據篇(1):數據分析
利用Pandas進行醫院銷售數據分析
選全明星哪家強,機器學習來幫忙

TAG:數據分析 | 數據處理 | 數據預處理 |