用IV和WOE来做特征筛选

什么是变量的离散化

变量的离散化就是只抽取出一个变量,分析变量当中的分组与标签的分布情况。

比如对于某个活动客户有响应和不响应的情况(这里的响应与否就是我们的标签),有多个变量:

  • 最近一个月是否有购买;
  • 最近一次购买金额;
  • 最近一笔购买的商品类别;
  • 是否是公司VIP客户;

那么我们每次取一个变量进行对其下分组的不同标签数目进行统计如下:

用IV和WOE来做特征筛选
变量的离散化实例

数据挖掘当中的IV和WOE详解

IV就是information value,也就是信息量。我们可以这么理解,就是我们在预测A是属于Y1类还是Y2类的时候,需要有一部分的判断信息,这部分信息是来自于变量C_{1}, C_{2}, C_{3}, C_{4}……C_{n},那么其中有一些变量是对预测具有比较大的贡献的,那么我们就说这一部分的自变量的信息量很大。因此我们想找出这部分自变量是哪些?之后我们可以把这些重要的特征传入到模型进行训练。IV就是用来定量衡量这一部分信息量大小的变量。其中IV是以WOE为基础的。

WOE

WOE的全称是“weight of evidence”,也就是证据权重。对某个离散型变量而言,具有不同的值,我们按照这些不同的值对不同标签数量进行分组就是分箱操作。对于某个分组WOE的计算公式如下:

WOE_{i}=ln(\dfrac{p_{y_{i}}}{p_{n_{i}}})=ln(\dfrac{\dfrac{y_{i}}{y_{T}}}{\dfrac{n_{i}}{n_{T}}})

在这里i代表该分组的序号,y代表yes,也就是有响应或者说标签为1的;n代表no,也就是无响应或者说标签为0的。T代表Total。这里的意义就是该分组有响应的客户占总的有响应客户的百分比,除以对应该分组无响应占总的百分比。其数值反映出该分组有响应与无响应情况跟总体的差异情况,比如说年龄段为[60, 80]的买保险的比例有80%,而总体各个年龄段买保险的人数只有50%,那么这个分组下响应情况与总体的响应情况差异就会很大,WOE_{i}这个值也会很大。

WOE_{i}还可以写成

WOE_{I}=ln(\dfrac{\dfrac{y_{i}}{n_{i}}}{\dfrac{y_{T}}{n_{T}}})也就是该分组有响应和无响应的比例,与总体有响应和无响应的比例的比值。

IV的计算

IV的计算是在WOE前面加上p_{y_{i}}-p_{n_{i}},也就是该分组有响应和无响应占总体比例的差值。

IV=(p_{y_{i}}-p_{n_{i}})*WOE_{i}=(p_{y_{i}}-p_{n_{i}})*ln(\dfrac{\dfrac{y_{i}}{n_{i}}}{\dfrac{y_{T}}{n_{T}}})
关于计算的实例可以参考这个链接。这是该分组的IV值,而该变量所有分组的IV值总和加起来就得到了该变量的IV值。

关于为什么用IV而不用WOE

  1. WOE有正有负值,IV的正负与WOE的正负是相同的,乘积保证是正值,否则直接将WOE值加起来会正负抵消掉。
  2. IV值前面的(p_{y_{i}}-p_{n_{i}})其实反映出了该分组的有响应和无响应分别占总体的比例,也就是如果某个分组样本占总体数量比较低,那么对预测其实贡献也是比较低的,所以会给WOE基础上再打个折。

比如

A响应未响应合计响应比例WOEIV
1901010090%4.39444920.0390618
09910899909990010%-0.008937.937E-05
合计100009000010000010%4.40337880.0391411

在这里本身A变量下分组1的响应数就很少,占总的比例很小,取A的1的可能性很低,因此对模型预测的贡献就 很小,因此通过(p_{y_{i}}-p_{n_{i}})可以进行打折

注意

IV里面分组不能只有响应的数量而没有未响应的数量,否则的话一个会得到正无穷,另一个会得到负无穷。

文章链接:https://www.sbkko.com/ganhuo-380.html
文章标题:用IV和WOE来做特征筛选
文章版权:SBKKO 所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!

给TA打赏
共{{data.count}}人
人已打赏
干货分享

上班想刷即刻怎么办?

2018-8-9 19:03:00

干货分享

APP推荐 ▏文艺优雅类(二)

2018-8-9 21:08:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索