1. 程式人生 > >不平衡問題——演算法角度

不平衡問題——演算法角度

上一篇介紹了從資料角度出發,如果去處理不平衡問題,主要是通過過取樣和欠取樣以及它們的改進方式。

本篇部落格,介紹不平衡問題可以取樣的演算法。

一、代價敏感學習

在通常的學習任務中,假定所有樣本的權重一般都是相等的,或者說誤分類成本是相同的。但是在大多數實際應用中,這種假設是不正確的。

最簡單的例子就是在醫療中的癌症診斷,產生的誤判導致的過晚的治療將會危及患者生命;另外還有在風控領域,將一個盜刷行為判定為正常行為會比將正常行為判斷為盜刷行為造成的損失要大的多。

因此所謂代價敏感學習主要考慮的是在分類問題中,不同的類別的樣本在分類錯誤時導致不同的誤分類成本時如何去訓練模型。

通常,不同的代價被表示成為一個N×N的矩陣Cost中,其中N 是類別的個數。Cost[i, j]表示將一個i 類的物件錯分到j 類中的代價。代價敏感分類就是為不同型別的錯誤分配不同的代價,使得在分類時,高代價錯誤產生的數量和錯誤分類的代價總和最小。

 

基於以上代價矩陣,代價敏感學習方法主要有以下三種實現方式,分別是:

1.從學習模型出發,主要是對演算法的改進,使之能適應不平衡資料下的學習,如感知機,支援向量機,決策樹,神經網路等分別都有其代價敏感的版本。以代價敏感的決策樹為例,可從三個方面對其進行改進以適應不平衡資料的學習,這三個方面分別是決策閾值的選擇方面、分裂標準的選擇方面、剪枝方面,這三個方面中都可以將代價矩陣引入。

2.從貝葉斯風險理論出發,把代價敏感學習看成是分類結果的一種後處理,按照傳統方法學習到一個模型,以實現損失最小為目標對結果進行調整,優化公式如下。此方法的優點在於它可以不依賴所用具體的分類器,但是缺點也很明顯它要求分類器輸出值為概率。

 

3.從預處理的角度出發,將代價用於權重的調整,使得分類器滿足代價敏感的特性。其代表的演算法是基於代價敏感的AdaCost演算法。

 

下面具體介紹AdaCost演算法,首先回顧一下AdaBoost 演算法。Adaboost演算法通過反覆迭代,每一輪迭代學習到一個分類器,並根據當前分類器的表現更新樣本的權重,其更新策略為正確分類樣本權重降低,錯誤分類樣本權重加大,最終的模型是多次迭代模型的一個加權線性組合,分類越準確的分類器將會獲得越大的權重。具體演算法如下:

而AdaCost演算法修改了Adaboost演算法的權重更新策略,其基本思想是對於代價高的誤分類樣本大大地提高其權重,而對於代價高的正確分類樣本適當地降低其權重,使其權重降低相對較小。總體思想是代價高樣本權重增加得大降低得慢。其樣本權重按照如下公式進行更新。

 

 參考文獻:

不平衡資料下的機器學習方法簡介