如何對非均衡數(shù)據(jù)進(jìn)行精準(zhǔn)預(yù)測建模?

在分析數(shù)據(jù)時(shí),我們常常需要做一些預(yù)測,例如根據(jù)用戶的商品購買數(shù)據(jù),預(yù)測該用戶是否對某個(gè)產(chǎn)品感興趣;根據(jù)信用卡申請人的消費(fèi)行為數(shù)據(jù),預(yù)測該用戶的還款行為是否可能進(jìn)行逾期等等。
但有時(shí)候我們會(huì)發(fā)現(xiàn),原始的數(shù)據(jù)集中要預(yù)測的Y變量,兩類的數(shù)量差距非常大,比如,對某產(chǎn)品感興趣的用戶數(shù)遠(yuǎn)小于不感興趣的用戶數(shù),有逾期記錄的用戶數(shù)遠(yuǎn)小于沒有逾期記錄的用戶數(shù)。類似這樣的數(shù)據(jù),被稱為非均衡數(shù)據(jù),如果直接用傳統(tǒng)的預(yù)測方法可能造成預(yù)測效果的不理想,那么對于這樣的非均衡數(shù)據(jù)的預(yù)測問題,有什么樣的好辦法呢?
莫慌!JMP可以完美解決此類問題。
今天我們就來探討下非均衡數(shù)據(jù)的精準(zhǔn)預(yù)測。
#01 非均衡數(shù)據(jù)問題有哪些特征?
通常來說,非均衡數(shù)據(jù)往往具備以下一些特征。
響應(yīng)變量Y僅有2個(gè)水平。其中一個(gè)水平的數(shù)量>>另一個(gè)水平的數(shù)量;數(shù)量多的水平成為多數(shù)水平,數(shù)量少的水平稱為少數(shù)水平。
少數(shù)水平通常是們感興趣的水平。例如欺詐、疾病、信用風(fēng)險(xiǎn)的檢測。
我們希望基于自變量來預(yù)測所屬類別。
我們需要建立預(yù)測模型,計(jì)算每一個(gè)樣本屬于少數(shù)水平的概率p.
我們選擇一個(gè)閾值來優(yōu)化各種標(biāo)準(zhǔn),如誤分類率、真陽性率、假陽性率、準(zhǔn)確率、召回率等。
我們將其預(yù)測的概率p(或得分)超過閾值的觀察結(jié)果分類為少數(shù)類。
#02 如何建立分類模型?
通常情況下,一些傳統(tǒng)的分類精度指標(biāo)往往不適用于不平衡數(shù)據(jù)。
例如,考慮少數(shù)水平數(shù)占2%的情況。你可以簡單地將所有的觀測劃分為多數(shù)水平所在的類別,便可以達(dá)到98%的準(zhǔn)確率。
精度-召回率(PR)曲線常用于不平衡數(shù)據(jù)。
PR曲線比ROC曲線對階級不平衡更敏感。因此,PR曲線能夠更好地突出不平衡數(shù)據(jù)模型的差異。
#03 抽樣方法的選擇
運(yùn)用合理的抽樣方法可以幫助對少數(shù)類進(jìn)行建模。
使用抽樣方法的目的是使分布更加平衡,或更好地劃定大多數(shù)和少數(shù)類觀察之間的邊界。
JMP中的不平衡分類插件實(shí)現(xiàn)了7種采樣技術(shù):
無加權(quán)法
不對原始數(shù)據(jù)進(jìn)行更改。
加權(quán)法
對少數(shù)水平類的觀測進(jìn)行加權(quán)(權(quán)重為多數(shù)水平數(shù)/少數(shù)水平數(shù))。
隨機(jī)欠采樣法
隨機(jī)刪去多數(shù)水平類中的觀測,使得兩個(gè)水平的數(shù)量相等。
隨機(jī)過采樣法
隨機(jī)選擇少數(shù)水平類中的觀測,再次添加到總體中,使得兩個(gè)水平的數(shù)量相等。
SMOTE方法
一種更復(fù)雜的過采樣方法,添加更多的少數(shù)水平類案例生成與現(xiàn)有少數(shù)水平觀測相似的新數(shù)據(jù)觀測,而不是簡單地復(fù)制它們,對少數(shù)類觀測結(jié)果執(zhí)行K個(gè)最近鄰生成,填充由近鄰定義的空間。

Tomek Links方法
試圖更好地界定少數(shù)和多數(shù)階級之間的界限。從大多數(shù)類中移除與少數(shù)類“接近”的觀察結(jié)果,以更好地定義簇邊界。
Tomek Links是屬于不同類別的一對最近的鄰居。為了減少多數(shù)和少數(shù)實(shí)例的重疊,可以刪除一對中的一個(gè)或兩個(gè)觀測。
MOTE plus Tomek方法
MOTE plus Tomek方法是上面兩種方法的結(jié)合。
首先,采用SMOTE算法生成新的少數(shù)觀測值;
然后,利用新生成的觀測結(jié)果,應(yīng)用Tomek算法找到屬于不同類別的最近鄰對。
下面,我們以一個(gè)案例來進(jìn)行應(yīng)用。
#01 數(shù)據(jù)集說明
這里選用來自某銀行的客戶信用卡逾期數(shù)據(jù),一共7529條觀測,每行觀測代表單個(gè)客戶的信息,列變量分別為:
1) ID-客戶ID
2) Bad-是否逾期超過90天
3) Age-年齡
4) Gender-性別
5) Monthly Income-月收入
6) Dependent-家庭成員數(shù)(不包括本人)
7) Debtratio-每月償還債務(wù),贍養(yǎng)費(fèi),生活費(fèi)除以每月總收入
8) Utilization-信用額度
9) Num_Line-貸款數(shù)額
10)Num Loan-貸款數(shù)量
11)Del_30-逾期30-59天
12)Del_60-逾期60-89天
13)Del_90-逾期90天以上的次數(shù)
從因變量Bad的分布情況看,出現(xiàn)逾期超過90天的觀測數(shù)僅占總體的4%,符合我們上文中提到的非均衡數(shù)據(jù)問題。

#02 下載不平衡分類插件
在JMP全球用戶社區(qū)(JMP Community) 下載不平衡分類插件,然后在JMP軟件中直接打開即可。
插件地址:https://community.jmp.com/t5/JMP-Add-Ins/Imbalanced-Classification-Add-In/ta-p/304836
插件安裝成功后,會(huì)在軟件的Add-Ins中出現(xiàn)“Imbalanced Classification”的選項(xiàng),選擇次級菜單中的“Evaluate Models”.

友情提示:JMP需要在英文界面才可以正常運(yùn)行此插件,中文界面的用戶,請?jiān)凇拔募?“首選項(xiàng)”-“Windows特定”中,將語言由中文切換為英文。
#03 進(jìn)行精準(zhǔn)模型預(yù)測
接下來,如下圖所示,將因變量“Bad”納入“Binary Class Variable”,其他所有的自變量納入“X,Predictors”,在左側(cè)中間的“Models”可以勾選你想要嘗試的預(yù)測模型,可以選擇的模型包括:樸素貝葉斯分類器、神經(jīng)網(wǎng)絡(luò)、隨機(jī)森林、提升樹、支持向量機(jī)、廣義回歸。
在左側(cè)下方的“Sampling Techniques”可以勾選你想要嘗試的抽樣技術(shù),包括上文中提到的幾種采樣方法。為了保證結(jié)果的一致性,可以在“Model Options”中設(shè)定隨機(jī)數(shù)種子。

如果將所有模型和所有采樣技術(shù)均勾選上之后,可以得到6x7=42種模型。
運(yùn)行結(jié)果包括4張數(shù)據(jù)表以及一個(gè)交互式分析界面。四張表分別是訓(xùn)練集的結(jié)果、測試集的結(jié)果、各模型采樣方法和閾值的結(jié)果、各模型的比較結(jié)果。
交互式分析界面如下圖所示。

上圖將42個(gè)模型的ROC曲線匯總在了同一張圖片里,上圖右側(cè)是按照ROC曲線下的AUC排序的模型,可以看到Tomek抽樣方法結(jié)合BootstrapForest的預(yù)測方法有著最優(yōu)的效果,AUC高達(dá)0.812.
也可以選擇Precision-Recall曲線進(jìn)行比較,根據(jù)PR曲線下的AUC,可以看到對應(yīng)的模型效果排序。同時(shí),還可以選擇少數(shù)幾個(gè)模型進(jìn)行比較,得到更加清晰的結(jié)果對比。
你也可以拿你的數(shù)據(jù)試試看。?下載最新的JMP 16免費(fèi)試用:
https://www.jmp.com/zh_cn/download-jmp-free-trial.html?utm_campaign=td7013Z000002sEGsQAM&utm_source=bilibili&utm_medium=social
