決策樹分箱、卡方分箱、bestks以及評(píng)價(jià)標(biāo)準(zhǔn)WOE和IV)
特征工程之特征分箱:決策樹分箱、卡方分箱、bestks以及評(píng)價(jià)標(biāo)準(zhǔn)
1.WOE和IV
2.無監(jiān)督分箱
2.1等頻分箱
2.2等距分箱
3.有監(jiān)督分箱
3.1決策樹分箱
3.2best-ks分箱
3.3卡方分箱
前言:在做數(shù)據(jù)挖掘項(xiàng)目的時(shí)候,特征工程通常是其中非常重要的一個(gè)環(huán)節(jié),但是難度也比較高,并且不同項(xiàng)目特征工程會(huì)有所差異,因此在做相關(guān)項(xiàng)目時(shí)可以多總結(jié)一些對(duì)結(jié)果提升比較明顯的操作,近期做了一下天池上面的入門金融風(fēng)控的項(xiàng)目,發(fā)現(xiàn)在對(duì)部分連續(xù)變量和離散變量進(jìn)行分箱之后和woe編碼后效果有一定提升。
廢話不多說進(jìn)入正題:在特征工程我們通??梢詫?duì)連續(xù)值屬性進(jìn)行分箱操作(也就是常說的離散化),并且對(duì)于取值較多的離散變量也可進(jìn)行分箱操作,分箱之后主要有以下好處:
??? 分箱后的特征對(duì)異常數(shù)據(jù)有更好的魯棒性。例如年齡中含有200,300這類的數(shù)據(jù),分箱之后就可能劃到>80這一箱中,但是如果直接傳入模型訓(xùn)練的話會(huì)對(duì)模型造成很大干擾。
??? 可以將變量轉(zhuǎn)換到相似的尺度上。例如收入有1000,10000,百萬,千萬等,可以離散化為0(低收入),1(中等收入),2(高收入)等。
??? 離散后的變量方便我們做特征交叉。例如將離散后的特征與連續(xù)變量進(jìn)行g(shù)roupby,構(gòu)造均值、方差等。
??? 缺失值的處理,可以將缺失值合并為一個(gè)箱。
并且分箱我們通常會(huì)遵循以下原則:
??? 組內(nèi)差異小
??? 組間差異大
??? 每組占比不小于5%
??? 必須有好壞兩種分類(對(duì)于二分類而言)
對(duì)于某個(gè)屬性分箱過后的結(jié)果是好還是壞,我們可以使用WOE和IV進(jìn)行評(píng)估。
1.WOE和IV
(1)WOE(Weight Of Evidence),即證據(jù)權(quán)重,其表達(dá)式如下:


woe和iv的python實(shí)現(xiàn):
知道了特征分箱后的評(píng)估方法之后就可以考慮如何進(jìn)行分箱。而分箱的方法主要分為兩大類:無監(jiān)督分箱(等頻分箱、等距分箱),有監(jiān)督分箱(best-ks分箱、決策樹分箱、卡方分箱)。
2.無監(jiān)督分箱
2.1等頻分箱
等頻分箱的意思就是分箱之后,每個(gè)箱內(nèi)的數(shù)據(jù)量相等??梢杂胮andas提供的qcut方法進(jìn)行處理。
2.2等距分箱
等距分箱就是每個(gè)箱的區(qū)間的大小是相等的,每個(gè)箱內(nèi)的數(shù)據(jù)量不一定相等。
例子:
輸出結(jié)果:通過結(jié)果我們也能很明顯看出兩種分箱的差異
3.有監(jiān)督分箱
3.1決策樹分箱
決策樹分箱的原理就是用想要離散化的變量單變量用樹模型擬合目標(biāo)變量,例如直接使用sklearn提供的決策樹(是用cart決策樹實(shí)現(xiàn)的),然后將內(nèi)部節(jié)點(diǎn)的閾值作為分箱的切點(diǎn)。
??? 補(bǔ)充,cart決策樹和ID3、C4.5決策樹不同,cart決策樹對(duì)于離散變量的處理其實(shí)和連續(xù)變量一樣,都是將特征的所有取值從小到大排序,然后取兩兩之間的均值,然后遍歷所有這些均值,然后取gini系數(shù)最大的點(diǎn)作為閾值進(jìn)行劃分?jǐn)?shù)據(jù)集。并且該特征后續(xù)還可參與劃分。
python實(shí)現(xiàn):
3.2best-ks分箱
KS(Kolmogorov Smirnov)用于模型風(fēng)險(xiǎn)區(qū)分能力進(jìn)行評(píng)估,指標(biāo)衡量的是好壞樣本累計(jì)部分之間的差距 。KS值越大,表示該變量越能將正,負(fù)客戶的區(qū)分程度越大。通常來說,KS>0.2即表示特征有較好的準(zhǔn)確率。
KS的計(jì)算方式:計(jì)算分箱后每組的好賬戶占比和壞帳戶占比的差值的絕對(duì)值: ∣ g o o d 占 比 ? b a d 占 比 ∣ |good占比-bad占比| ∣good占比?bad占比∣,然后取所有組中最大的KS值作為變量的KS值。
best-ks分箱的原理:
??? 將變量的所有取值從小到大排序
??? 計(jì)算每一點(diǎn)的KS值
??? 選取最大的KS值對(duì)應(yīng)的特征值 x m x_m xm,將特征x分為 x i ≤ x m {x_i\leq x_m} xi≤xm和 x i > x m {x_i>x_m} xi>xm兩部分。然后對(duì)于每部分重復(fù)2-3步。
python代碼實(shí)現(xiàn):
————————————————
3.3卡方分箱
卡方檢驗(yàn)的原理:卡方分箱是依賴于卡方檢驗(yàn)的分箱方法,在統(tǒng)計(jì)指標(biāo)上選擇卡方統(tǒng)計(jì)量(chi-Square)進(jìn)行判別,分箱的基本思想是判斷相鄰的兩個(gè)區(qū)間是否有分布差異,基于卡方統(tǒng)計(jì)量的結(jié)果進(jìn)行自下而上的合并,直到滿足分箱的限制條件為止。
基本步驟:
??? 預(yù)先設(shè)定一個(gè)卡方的閾值
??? 對(duì)需要進(jìn)行離散的屬性進(jìn)行排序,每個(gè)取值屬于一個(gè)區(qū)間
??? 合并區(qū)間:(1)計(jì)算每一對(duì)相鄰區(qū)間的卡方值: X 2 = ∑ i = 1 2 ∑ j = 1 2 ( A i j ? E i j ) 2 E i j X^2=\sum_{i=1}^2\sum_{j=1}^{2}\frac{(A_{ij}-E_{ij})^2}{E_{ij}} X2=∑i=12∑j=12Eij(Aij?Eij)2;(2)然后將卡方值最小的一對(duì)區(qū)間合并。
??? 其中 A i j A_{ij} Aij是第i區(qū)間第j類的樣本數(shù)量, E i j E_{ij} Eij是 A i j A_{ij} Aij的期望數(shù)量 = N i ? C j N =N_i*\frac{C_j}{N} =Ni?NCj,N是總樣本數(shù),N_i是第i組的樣本數(shù),C_j是第j類樣本數(shù)量。
上述步驟的終止條件:
??? 分箱個(gè)數(shù):每次將樣本中具有最小卡方值的區(qū)間與相鄰的最小卡方區(qū)間進(jìn)行合并,直到分箱個(gè)數(shù)達(dá)到限制條件為止。
??? 卡方閾值:根據(jù)自由度和顯著性水平得到對(duì)應(yīng)的卡方閾值,如果分箱的各區(qū)間最小卡方值小于卡方閾值,則繼續(xù)合并,直到最小卡方值超過設(shè)定閾值為止。
python代碼實(shí)現(xiàn):
————————————————
