2011年12月6日 星期二

正反例極不平衡的資料集的採樣


類不均衡問題是分類型資料採擷(我就直接按照目標變數來定義概念了哈)實際專案中很常見的一類問題,畢竟生活中像UCI上那種正負類樣本點數據基本差不-多的情況是很少見的,至少在我所做過的兩個項目中,所遇到的資料情況都是應該屬於類極不均衡問題(正負類樣本點的比例大致在1:100左右,在這裡我將少類樣本-定義為正類點,多類樣本定義為負類點。由於項目原因,就不介紹具體背景了,反正無非就是在客戶中發現有具有潛在風險的客戶之類的)。
   
在有些演算法中(主要是基於資訊熵或GINI係數進行分類的演算法),這種類極不均衡問題會帶來演算法失效的結果,例如:在使用DT演算法進行分類的時候,類不均衡問題-會使得樹無法繼續生長,當然,通過調整閾值或設定樹的最小層數也可以強制使得樹繼續生長,但對於大量的資料而言,這種做法多少有些拍腦袋的嫌疑。
   
在有些演算法中(主要是基於樣本點距分劃面距離的演算法),類不均衡問題會導致分劃面的位置過於偏向於正類點的位置,例如:SVM方法中,以線性SVM為例,如果對-於正負類樣本點採用同樣的懲罰係數的話,可能最終結果是分化面基本上把幾乎所有的正類點和負類點都劃在分劃面的一側,使得最終的結果都為負類點。
   
在這些演算法中,對於不均衡類問題都無法得到很好的解決。其實從一種比較通俗的角度來想,資料採擷無非就是定義一個規則,這個規則或者是一堆的IF…ELSE-,或者就直接是一個簡單或複雜的函數式,或是兩者的結合。資料採擷的訓練過程就是尋找一個在全域或局部最優的規則來刻畫某種想要的模式(PATTERN-”(在本案例中就是刻畫潛在的風險客戶的特徵)。當類不均衡問題出現的時候,模型在訓練過程中,最終找到的那種刻畫方式往往會傾向於最顯著的那種規則,當負-類點的的數量多到一定程度的時候,便把正類點的那種模式給淹沒掉了。所以我們必須採用抽樣的方式來使得正類點的模式再顯現出來,所以,一種解決方式便是-通過分層抽樣,來使得正負類樣本點的數量比例維持在一個可接受的範圍內,(聽過一種說法是維持在1:10左右,但不知道這個比例也是拍腦袋得來的還是怎麼證明得-到的)。
    我的做法是這樣的——如果正例(有欺詐)與反例(無欺詐)的原始比例是11000——因為決策樹既能分辨正例又能分辨反例,如果反例的某些個分支既大又精確,那就把反例的那些個分支統統砍掉,砍完了(即把欺詐概率極小的人排掉)再用剩下的數據(此時再無抽騙的風險了)做一個決策樹

沒有留言: