正反例極不平衡的數據集的採樣

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

    我的做法是這樣的——如果正例(有欺詐)與反例(無欺詐)的原始比例是1:1000——因爲決策樹既能分辨正例又能分辨反例,如果反例的某些個分支既大又精確,那就把反例的那些個分支統統砍掉,砍完了(即把欺詐概率極小的人排掉)再用剩下的數據(此時再無抽騙的風險了)做一個決策樹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章