WOE&IV編碼&分箱

IV

  • 概念:
    • IV的全稱是Information Value豌拙,中文意思是信息價(jià)值,或者信息量习柠。
  • 作用:
    • 構(gòu)建分類模型時(shí)蒜焊,對(duì)特征進(jìn)行篩選倒信,挑選特征時(shí) 用來衡量自變量(特征)的預(yù)測(cè)能力
    • ”用IV去衡量變量預(yù)測(cè)能力“的理解
      • 我們假設(shè)在一個(gè)分類問題中,目標(biāo)變量的類別有兩類:Y1泳梆,Y2鳖悠。對(duì)于一個(gè)待預(yù)測(cè)的樣本A,要判斷A屬于Y1還是Y2优妙,我們是需要一定的信息乘综,假設(shè)這個(gè)信息總量是I,而這些所需要的信息套硼,就蘊(yùn)含在所有的待預(yù)測(cè)樣本的特征C1卡辰,C2,C3熟菲,……,Cn中朴恳,那么抄罕,對(duì)于其中的一個(gè)特征Ci來說,其蘊(yùn)含的信息越多于颖,那么它對(duì)于判斷A屬于Y1還是Y2的貢獻(xiàn)就越大呆贿,Ci的信息價(jià)值就越大,Ci的IV就越大森渐,它就越應(yīng)該進(jìn)入到入模變量列表中做入。
  • 公式:


    3.vi.png

    計(jì)算整個(gè)特征的IV值 :
    4.png

WOE

  • WOE的全稱是“Weight of Evidence”,即證據(jù)權(quán)重同衣。WOE是對(duì)原始特征的一種編碼形式竟块。要對(duì)一個(gè)特征進(jìn)行WOE編碼,需要首先把這個(gè)變量進(jìn)行分組處理(也叫離散化耐齐、分箱等等浪秘,說的都是一個(gè)意思)蒋情。
  • WOE的計(jì)算公式:


    1.woe.png

    公式含義:
    pyi是這個(gè)組中正例樣本占整個(gè)樣本中正例樣本的比例
    pni是這個(gè)組中負(fù)例樣本占整個(gè)樣本中負(fù)例樣本的比例
    (#yi是這個(gè)組中正例樣本的數(shù)量 )
    (#ni是這個(gè)組中負(fù)例樣本的數(shù)量 )
    (#yT是整個(gè)樣本中所有正例樣本的數(shù)量)
    (#nT是整個(gè)樣本中所有負(fù)例樣本的數(shù)量 )
    公式表示: “當(dāng)前分組中正例樣本占所有樣本中所有正例樣本的比例”和“當(dāng)前分組中負(fù)例樣本占所有樣本中所有負(fù)例樣本比例”的差異

  • 公式變換:
    2.png

    公式表示:當(dāng)前這個(gè)組中響應(yīng)的客戶和未響應(yīng)客戶的比值,和所有樣本中這個(gè)比值的差異
    WOE越大耸携,這種差異越大棵癣,這個(gè)分組里的樣本響應(yīng)的可能性就越大(這組數(shù)據(jù)分到正例的概率越大),WOE越小夺衍,差異越小狈谊,這個(gè)分組里的樣本響應(yīng)的可能性就越小
    分母是固定的,如果分子中的yi越大沟沙,則WOE返回的數(shù)值越大

用實(shí)例介紹IV的計(jì)算和使用

  • 例子
    • 假設(shè)現(xiàn)在某個(gè)公司舉行一個(gè)活動(dòng)河劝,在舉行這個(gè)活動(dòng)之前,先在小范圍的客戶中進(jìn)行了一次試點(diǎn)尝胆,收集了一些用戶對(duì)這次活動(dòng)的一些響應(yīng)丧裁,然后希望通過這些數(shù)據(jù),去構(gòu)造一個(gè)模型含衔,預(yù)測(cè)如果舉行這次的活動(dòng)煎娇,是否能夠得到很好的響應(yīng)或者得到客戶的響應(yīng)概率之類。
    • 假設(shè)我們已經(jīng)從公司客戶列表中隨機(jī)抽取了100000個(gè)客戶進(jìn)行了營銷活動(dòng)測(cè)試贪染,收集了這些客戶的響應(yīng)結(jié)果缓呛,作為我們的建模數(shù)據(jù)集,其中響應(yīng)的客戶有10000個(gè)杭隙。另外假設(shè)我們也已經(jīng)提取到了這些客戶的一些變量哟绊,作為我們模型的候選變量集,這些變量包括以下這些:
      • 最近一個(gè)月是否有購買痰憎;
      • 最近一次購買金額票髓;
      • 最近一筆購買的商品類別;
      • 是否是公司VIP客戶铣耘;
    • 假設(shè)洽沟,我們已經(jīng)對(duì)這些變量進(jìn)行了離散化,統(tǒng)計(jì)的結(jié)果如下面幾張表所示
      (1) 最近一個(gè)月是否有過購買:


      5. 最近一個(gè)月是否有過購買:.png

      (2) 最近一次購買金額:


      6.最近一次購買金額:.png

      (3) 最近一筆購買的商品類別:
      7.最近一筆購買的商品類別:.png

      (4) 是否是公司VIP客戶:
      8.是否是公司VIP客戶.png

計(jì)算WOE和IV

  • 以其中的一個(gè)變量“最近一次購買金額”變量為例:


    6.最近一次購買金額:.png
  • 計(jì)算WOE


    9.計(jì)算WOE.png

    10.png

    WOE的基本特點(diǎn):

  • 當(dāng)前分組中蜗细,響應(yīng)的比例越大裆操,WOE值越大;
  • 當(dāng)前分組WOE的正負(fù)炉媒,由當(dāng)前分組響應(yīng)和未響應(yīng)的比例踪区,與樣本整體響應(yīng)和未響應(yīng)的比例的大小關(guān)系決定,當(dāng)前分組的比例小于樣本整體比例時(shí)(分子小于分母)吊骤,WOE為負(fù)缎岗,當(dāng)前分組的比例大于整體比例時(shí)(分子大于分母),WOE為正白粉,當(dāng)前分組的比例和整體比例相等時(shí)(分子等于分母)密强,WOE為0茅郎。
    WOE描述了某一特征的當(dāng)前這個(gè)分組,對(duì)判斷該特征是否會(huì)響應(yīng)(或者說屬于哪個(gè)類)所起到影響方向和大小或渤,當(dāng)WOE為正時(shí)系冗,特征當(dāng)前取值對(duì)判斷個(gè)體是否會(huì)響應(yīng)起到的正向的影響,當(dāng)WOE為負(fù)時(shí)薪鹦,起到了負(fù)向影響掌敬。而WOE值的大小,則是這個(gè)影響的大小的體現(xiàn)池磁。
  • 計(jì)算IV


    11.計(jì)算iv值.png

    IV的特點(diǎn):

  • 對(duì)于特征的一個(gè)分組奔害,這個(gè)分組的響應(yīng)和未響應(yīng)的比例與樣本整體響應(yīng)和未響應(yīng)的比例(WOE)相差越大,IV值越大地熄,否則华临,IV值越小端考;
  • 極端情況下雅潭,當(dāng)前分組的響應(yīng)和未響應(yīng)的比例和樣本整體的響應(yīng)和未響應(yīng)的比例相等時(shí),IV值為0却特;
  • 計(jì)算變量總IV值:


    12.iv和.png

IV值的比較和變量預(yù)測(cè)能力的排序

其他三個(gè)特征的iv和woe計(jì)算同上
最近一次購買金額的IV為0.49270645
最近一個(gè)月是否有過購買的IV為0.250224725
最近一筆購買的商品類別的IV為0.615275563
是否為公司VIP客戶的IV為1.56550367
IV排序: 是否是公司VIP客戶 > 最近一筆購買的商品類別 > 最近一次購買金額 > 最近一個(gè)月是否有過購買
“是否是公司VIP客戶”是預(yù)測(cè)能力最高的特征扶供,“最近一個(gè)月是否有過購買”是預(yù)測(cè)能力最低的特征

關(guān)于IV和WOE的進(jìn)一步思考:為什么用IV而不是直接用WOE

從計(jì)算公式來看,對(duì)于特征的一個(gè)分組裂明,IV是WOE乘以這個(gè)分組響應(yīng)占比和未響應(yīng)占比的差椿浓。而一個(gè)特征的IV等于各分組IV的和。WOE構(gòu)造出一個(gè)和闽晦,只需要把特征各個(gè)分組的WOE和取絕對(duì)值再相加扳碍,(取絕對(duì)值是因?yàn)閃OE可正可負(fù),如果不取絕對(duì)值仙蛉,則會(huì)把特征的區(qū)分度通過正負(fù)抵消的方式抵消掉):

13.woe.png

用IV而不是直接用WOE的原因:

  • 指標(biāo)值不應(yīng)該是負(fù)數(shù) 笋敞,iv中乘以 (py-pn) 這個(gè)系數(shù),保證了特征每個(gè)分組的結(jié)果都是非負(fù)數(shù)
  • 主要原因: 乘以(py-pn)后捅儒,體現(xiàn)出了特征當(dāng)前分組中個(gè)體的數(shù)量占整體個(gè)體數(shù)量的比例


    14.png

    15.png

    從上表可以看到液样,特征取1時(shí)振亮,響應(yīng)比達(dá)到90%巧还,對(duì)應(yīng)的WOE很高,但對(duì)應(yīng)的IV卻很低坊秸,原因就在于IV在WOE的前面乘以了一個(gè)系數(shù)(py-pn)麸祷,而這個(gè)系數(shù)很好的考慮了這個(gè)分組中樣本占整體樣本的比例,比例越低褒搔,這個(gè)分組對(duì)特征整體預(yù)測(cè)能力的貢獻(xiàn)越低阶牍。相反喷面,如果直接用WOE的絕對(duì)值加和,會(huì)得到一個(gè)很高的指標(biāo)走孽,這是不合理的

分箱

  • 數(shù)據(jù)分箱(也稱為離散分箱或分段)是一種數(shù)據(jù)預(yù)處理技術(shù)惧辈,用于減少次要觀察誤差的影響,是一種將多個(gè)連續(xù)值分組為較少數(shù)量的“分箱”的方法磕瓷。簡(jiǎn)單說就是將連續(xù)型特征進(jìn)行離散化盒齿。
    關(guān)于人年齡的數(shù)據(jù)


    對(duì)連續(xù)性特征進(jìn)行離散化
    17.png

  • 注意:

    • 分箱的數(shù)據(jù)不一定必須是數(shù)字,它們可以是任何類型的值困食,如“狗”边翁,“貓”,“倉鼠”等硕盹。 分箱也用于圖像處理符匾,通過將相鄰像素組合成單個(gè)像素,它可用于減少數(shù)據(jù)量瘩例。
  • 分箱的作用&意義

    • 離散特征的增加和減少都很容易啊胶,易于模型的快速迭代,提升計(jì)算速度
    • 特征離散化后仰剿,模型會(huì)更穩(wěn)定创淡,比如如果對(duì)用戶年齡離散化,20-30作為一個(gè)區(qū)間南吮,不會(huì)因?yàn)橐粋€(gè)用戶年齡長(zhǎng)了一歲就變成一個(gè)完全不同的人琳彩。
    • 特征離散化以后,起到了簡(jiǎn)化了模型的作用部凑,可以適當(dāng)降低了模型過擬合的風(fēng)險(xiǎn)露乏。
  • pandas實(shí)現(xiàn)數(shù)據(jù)的分箱:pd.cut()

    import numpy as np
    import pandas as pd
    from pandas import Series, DataFrame
    
    score_list = np.linspace(0,20,num=11)
    print(score_list) #[ 0.  2.  4.  6.  8. 10. 12. 14. 16. 18. 20.]
    
    #設(shè)置分箱:方式1
    bins=[0,4,8,16,20] #指定分箱數(shù)據(jù)的范圍
    score_cat=pd.cut(score_list,bins=bins)
    score_cat.value_counts()
    #輸出結(jié)果:
    (0, 4]      2
    (4, 8]      2
    (8, 16]     4
    (16, 20]    2
     
    #設(shè)置分箱:方式2
    #指定分箱數(shù)據(jù)的個(gè)數(shù)
    pd.cut(score_list,bins=4).value_counts()
    #輸出結(jié)果:
    (-0.02, 5.0]    3
    (5.0, 10.0]     3
    (10.0, 15.0]    2
    (15.0, 20.0]    3
    
    #設(shè)置分箱:方式3
    #label參數(shù)的作用:設(shè)置分箱的每一個(gè)范圍的標(biāo)識(shí)
    #指定分箱數(shù)據(jù)的個(gè)數(shù)
    pd.cut(score_list,bins=4,labels=['a','b','c','d']).value_counts()
    #輸出結(jié)果:
    a    3
    b    3
    c    2
    d    3
     
    pd.cut(score_list,bins=4,labels=range(4)).value_counts()
    #輸出結(jié)果:
    0    3
    1    3
    2    2
    3    3
    
  • pd.qcut() ·qcut根據(jù)值的頻率來選擇箱子的均勻間隔,即每個(gè)箱子含有的數(shù)的數(shù)量相同

factors=np.random.randn(9)
pd.qcut(factors,3).value_counts() #計(jì)算每個(gè)分組中含有數(shù)的數(shù)量
#輸出結(jié)果:
(-1.1289999999999998, -0.124]    3
(-0.124, 0.393]                  3
(0.393, 1.496]                   3
  • cut與qcut的區(qū)別:
    1.cut:按連續(xù)數(shù)據(jù)的大小分到各個(gè)桶里涂邀,每個(gè)桶里樣本量可能不同瘟仿,但每個(gè)桶相當(dāng)于等長(zhǎng)的區(qū)間
    2.qcut:每個(gè)桶的樣本數(shù)量一定(等頻分箱)
    特征是連續(xù)性傾向于使用qcut,離散型傾向于使用cut

  • 注意:分箱后就可以求解出IV和WOE的值了比勉。如果想對(duì)連續(xù)性特征進(jìn)行離散化劳较,需要對(duì)分箱后的每組(箱)數(shù)據(jù)進(jìn)行woe或者iv編碼,然后才能放進(jìn)模型訓(xùn)練浩聋。

import sklearn.datasets as ds
bc = ds.load_breast_cancer() #加載乳腺癌數(shù)據(jù)
feature = bc.data #特征
target = bc.target  #標(biāo)簽
feature.shape #(569, 30)
#查看第1列數(shù)據(jù)范圍观蜗,判定其為連續(xù)性數(shù)據(jù)
feature[:,1].min(),feature[:,1].max()
#(9.71, 39.28)

#對(duì)其進(jìn)行分箱處理,將其離散化
fea_bins = pd.cut(feature[:,1],bins=5)
fea_bins.value_counts()
#輸出結(jié)果:
(9.68, 15.624]      113
(15.624, 21.538]    299
(21.538, 27.452]    129
(27.452, 33.366]     25
(33.366, 39.28]       3

#對(duì)分箱后的特征列進(jìn)行woe編碼 crosstab()交叉表
#每組中正例和反例樣本的數(shù)量
gi = pd.crosstab(fea_bins,target)
gi
#輸出結(jié)果:
 col_0  0   1
row_0       
(9.68, 15.624]  8   105
(15.624, 21.538]    101 198
(21.538, 27.452]    90  39
(27.452, 33.366]    11  14
(33.366, 39.28] 2   1
 
#樣本數(shù)據(jù)中正例樣本和反例樣本的數(shù)量
gb = pd.Series(data=target).value_counts()
gb
#輸出結(jié)果:
1    357
0    212

#規(guī)定0類別為正例樣本衣洁,1為反例樣本
gbi = (gi[0]/gi[1]) / (gb[0]/gb[1])
gbi
#輸出結(jié)果:
row_0
(9.68, 15.624]      0.128302
(15.624, 21.538]    0.858991
(21.538, 27.452]    3.886067
(27.452, 33.366]    1.323113
(33.366, 39.28]     3.367925

#WOE的計(jì)算
woe = np.log(gbi)
woe
#輸出結(jié)果:
(9.68, 15.624]     -2.053369
(15.624, 21.538]   -0.151997
(21.538, 27.452]    1.357398
(27.452, 33.366]    0.279987
(33.366, 39.28]     1.214297

#計(jì)算IV
iv=((gi[0]/gb[0])-(gi[1]/gb[1]))*woe
iv
#輸出結(jié)果:
row_0
(9.68, 15.624]      0.526447
(15.624, 21.538]    0.011887
(21.538, 27.452]    0.427967
(27.452, 33.366]    0.003548
(33.366, 39.28]     0.008054

f_iv=iv.sum()
f_iv #0.977902238264725

#進(jìn)行映射操作
dict = iv.to_dict()
dict
#輸出結(jié)果:
{Interval(9.68, 15.624, closed='right'): 0.5264465134478181,
 Interval(15.624, 21.538, closed='right'): 0.011887192576072856,
 Interval(21.538, 27.452, closed='right'): 0.4279665436826456,
 Interval(27.452, 33.366, closed='right'): 0.0035477507112311505,
 Interval(33.366, 39.28, closed='right'): 0.008054237846957362}
 
ivs_bins = fea_bins.map(dict)
ivs_bins.tolist()

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末墓捻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坊夫,更是在濱河造成了極大的恐慌砖第,老刑警劉巖撤卢,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異梧兼,居然都是意外死亡放吩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門羽杰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屎慢,“玉大人,你說我怎么就攤上這事忽洛∧寤荩” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵欲虚,是天一觀的道長(zhǎng)集灌。 經(jīng)常有香客問我,道長(zhǎng)复哆,這世上最難降的妖魔是什么欣喧? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮梯找,結(jié)果婚禮上唆阿,老公的妹妹穿的比我還像新娘。我一直安慰自己锈锤,他們只是感情好驯鳖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著久免,像睡著了一般浅辙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阎姥,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天记舆,我揣著相機(jī)與錄音,去河邊找鬼呼巴。 笑死泽腮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的衣赶。 我是一名探鬼主播诊赊,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼屑埋!你這毒婦竟也來了豪筝?” 一聲冷哼從身側(cè)響起痰滋,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤摘能,失蹤者是張志新(化名)和其女友劉穎续崖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體团搞,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡严望,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逻恐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片像吻。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖复隆,靈堂內(nèi)的尸體忽然破棺而出拨匆,到底是詐尸還是另有隱情,我是刑警寧澤挽拂,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布惭每,位于F島的核電站,受9級(jí)特大地震影響亏栈,放射性物質(zhì)發(fā)生泄漏台腥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一绒北、第九天 我趴在偏房一處隱蔽的房頂上張望黎侈。 院中可真熱鬧,春花似錦闷游、人聲如沸峻汉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俱济。三九已至,卻和暖如春钙勃,著一層夾襖步出監(jiān)牢的瞬間蛛碌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工辖源, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔚携,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓克饶,卻偏偏與公主長(zhǎng)得像酝蜒,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矾湃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351