数据挖掘模型中的IV和WOE详解.docx
- 文档编号:15501553
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:11
- 大小:61.25KB
数据挖掘模型中的IV和WOE详解.docx
《数据挖掘模型中的IV和WOE详解.docx》由会员分享,可在线阅读,更多相关《数据挖掘模型中的IV和WOE详解.docx(11页珍藏版)》请在冰点文库上搜索。
数据挖掘模型中的IV和WOE详解
数据挖掘模型中的IV和WOE详解
标签:
IVWOE信息价值证据权重数据挖掘模型
2016-03-0215:
3628747人阅读评论(8)收藏举报
分类:
数据挖掘模型(7)
版权声明:
本文为博主原创文章,未经博主允许不得转载。
目录(?
)[+]
1.IV的用途
IV的全称是Information?
Value,中文意思是信息价值,或者信息量。
我们在用逻辑回归、决策树等模型方法构建分类模型时,经常需要对自变量进行筛选。
比如我们有200个候选自变量,通常情况下,不会直接把200个变量直接放到模型中去进行拟合训练,而是会用一些方法,从这200个自变量中挑选一些出来,放进模型,形成入模变量列表。
那么我们怎么去挑选入模变量呢?
挑选入模变量过程是个比较复杂的过程,需要考虑的因素很多,比如:
变量的预测能力,变量之间的相关性,变量的简单性(容易生成和使用),变量的强壮性(不容易被绕过),变量在业务上的可解释性(被挑战时可以解释的通)等等。
但是,其中最主要和最直接的衡量标准是变量的预测能力。
“变量的预测能力”这个说法很笼统,很主观,非量化,在筛选变量的时候我们总不能说:
“我觉得这个变量预测能力很强,所以他要进入模型”吧?
我们需要一些具体的量化指标来衡量每自变量的预测能力,并根据这些量化指标的大小,来确定哪些变量进入模型。
IV就是这样一种指标,他可以用来衡量自变量的预测能力。
类似的指标还有信息增益、基尼系数等等。
2.对IV的直观理解
从直观逻辑上大体可以这样理解“用IV去衡量变量预测能力”这件事情:
我们假设在一个分类问题中,目标变量的类别有两类:
Y1,Y2。
对于一个待预测的个体A,要判断A属于Y1还是Y2,我们是需要一定的信息的,假设这个信息总量是I,而这些所需要的信息,就蕴含在所有的自变量C1,C2,C3,……,Cn中,那么,对于其中的一个变量Ci来说,其蕴含的信息越多,那么它对于判断A属于Y1还是Y2的贡献就越大,Ci的信息价值就越大,Ci的IV就越大,它就越应该进入到入模变量列表中。
3.IV的计算
前面我们从感性角度和逻辑层面对IV进行了解释和描述,那么回到数学层面,对于一个待评估变量,他的IV值究竟如何计算呢?
为了介绍IV的计算方法,我们首先需要认识和理解另一个概念——WOE,因为IV的计算是以WOE为基础的。
3.1WOE
WOE的全称是“Weight?
of?
Evidence”,即证据权重。
WOE是对原始自变量的一种编码形式。
要对一个变量进行WOE编码,需要首先把这个变量进行分组处理(也叫离散化、分箱等等,说的都是一个意思)。
分组后,对于第i组,WOE的计算公式如下:
其中,pyi是这个组中响应客户(风险模型中,对应的是违约客户,总之,指的是模型中预测变量取值为“是”或者说1的个体)占所有样本中所有响应客户的比例,pni是这个组中未响应客户占样本中所有未响应客户的比例,#yi是这个组中响应客户的数量,#ni是这个组中未响应客户的数量,#yT是样本中所有响应客户的数量,#nT是样本中所有未响应客户的数量。
从这个公式中我们可以体会到,WOE表示的实际上是“当前分组中响应客户占所有响应客户的比例”和“当前分组中没有响应的客户占所有没有响应的客户的比例”的差异。
对这个公式做一个简单变换,可以得到:
变换以后我们可以看出,WOE也可以这么理解,他表示的是当前这个组中响应的客户和未响应客户的比值,和所有样本中这个比值的差异。
这个差异是用这两个比值的比值,再取对数来表示的。
WOE越大,这种差异越大,这个分组里的样本响应的可能性就越大,WOE越小,差异越小,这个分组里的样本响应的可能性就越小。
关于WOE编码所表示的意义,大家可以自己再好好体会一下。
3.2IV的计算公式
有了前面的介绍,我们可以正式给出IV的计算公式。
对于一个分组后的变量,第i?
组的WOE前面已经介绍过,是这样计算的:
同样,对于分组i,也会有一个对应的IV值,计算公式如下:
有了一个变量各分组的IV值,我们就可以计算整个变量的IV值,方法很简单,就是把各分组的IV相加:
其中,n为变量分组个数。
3.3用实例介绍IV的计算和使用
下面我们通过一个实例来讲解一下IV的使用方式。
3.3.1实例
假设我们需要构建一个预测模型,这个模型是为了预测公司的客户集合中的每个客户对于我们的某项营销活动是否能够响应,或者说我们要预测的是客户对我们的这项营销活动响应的可能性有多大。
假设我们已经从公司客户列表中随机抽取了100000个客户进行了营销活动测试,收集了这些客户的响应结果,作为我们的建模数据集,其中响应的客户有10000个。
另外假设我们也已经提取到了这些客户的一些变量,作为我们模型的候选变量集,这些变量包括以下这些(实际情况中,我们拥有的变量可能比这些多得多,这里列出的变量仅仅是为了说明我们的问题):
最近一个月是否有购买;
最近一次购买金额;
最近一笔购买的商品类别;
是否是公司VIP客户;
假设,我们已经对这些变量进行了离散化,统计的结果如下面几张表所示。
(1)最近一个月是否有过购买:
(2)最近一次购买金额:
(3)最近一笔购买的商品类别:
(4)是否是公司VIP客户:
3.3.2计算WOE和IV
我们以其中的一个变量“最近一次购买金额”变量为例:
我们把这个变量离散化为了4个分段:
<100元,[100,200),[200,500),>=500元。
首先,根据WOE计算公式,这四个分段的WOE分别为:
插播一段,从上面的计算结果中我们可以看一下WOE的基本特点:
当前分组中,响应的比例越大,WOE值越大;
当前分组WOE的正负,由当前分组响应和未响应的比例,与样本整体响应和未响应的比例的大小关系决定,当前分组的比例小于样本整体比例时,WOE为负,当前分组的比例大于整体比例时,WOE为正,当前分组的比例和整体比例相等时,WOE为0。
WOE的取值范围是全体实数。
我们进一步理解一下WOE,会发现,WOE其实描述了变量当前这个分组,对判断个体是否会响应(或者说属于哪个类)所起到影响方向和大小,当WOE为正时,变量当前取值对判断个体是否会响应起到的正向的影响,当WOE为负时,起到了负向影响。
而WOE值的大小,则是这个影响的大小的体现。
好,回到正题,计算完WOE,我们分别计算四个分组的IV值:
再插播一段,从上面IV的计算结果我们可以看出IV的以下特点:
对于变量的一个分组,这个分组的响应和未响应的比例与样本整体响应和未响应的比例相差越大,IV值越大,否则,IV值越小;
极端情况下,当前分组的响应和未响应的比例和样本整体的响应和未响应的比例相等时,IV值为0;
IV值的取值范围是[0,+∞),且,当当前分组中只包含响应客户或者未响应客户时,IV?
=?
+∞。
OK,再次回到正题。
最后,我们计算变量总IV值:
3.3.3IV值的比较和变量预测能力的排序
我们已经计算了四个变量中其中一个的WOE和IV值。
另外三个的计算过程我们不再详细的说明,直接给出IV结果。
这四个变量IV排序结果是这样的:
是否是公司VIP客户?
>?
最近一笔购买的商品类别?
>?
最近一次购买金额?
>?
最近一个月是否有过购买。
我们发现“是否是公司VIP客户”是预测能力最高的变量,“最近一个月是否有过购买”是预测能力最低的变量。
如果我们需要在这四个变量中去挑选变量,就可以根据IV从高到低去挑选了。
4.关于IV和WOE的进一步思考
4.1为什么用IV而不是直接用WOE
从上面的内容来看,变量各分组的WOE和IV都隐含着这个分组对目标变量的预测能力这样的意义。
那我们为什么不直接用WOE相加或者绝对值相加作为衡量一个变量整体预测能力的指标呢?
并且,从计算公式来看,对于变量的一个分组,IV是WOE乘以这个分组响应占比和未响应占比的差。
而一个变量的IV等于各分组IV的和。
如果愿意,我们同样也能用WOE构造出一个这样的一个和出来,我们只需要把变量各个分组的WOE和取绝对值再相加,即(取绝对值是因为WOE可正可负,如果不取绝对值,则会把变量的区分度通过正负抵消的方式抵消掉):
那么我们为什么不直接用这个WOE绝对值的加和来衡量一个变量整体预测能力的好坏,而是要用WOE处理后的IV呢。
我们这里给出两个原因。
IV和WOE的差别在于IV在WOE基础上乘以的那个
,我们暂且用pyn来代表这个值。
第一个原因,当我们衡量一个变量的预测能力时,我们所使用的指标值不应该是负数,否则,说一个变量的预测能力的指标是-2.3,听起来很别扭。
从这个角度讲,乘以pyn这个系数,保证了变量每个分组的结果都是非负数,你可以验证一下,当一个分组的WOE是正数时,pyn也是正数,当一个分组的WOE是负数时,pyn也是负数,而当一个分组的WOE=0时,pyn也是0。
当然,上面的原因不是最主要的,因为其实我们上面提到的
这个指标也可以完全避免负数的出现。
更主要的原因,也就是第二个原因是,乘以pyn后,体现出了变量当前分组中个体的数量占整体个体数量的比例,对变量预测能力的影响。
怎么理解这句话呢?
我们还是举个例子。
假设我们上面所说的营销响应模型中,还有一个变量A,其取值只有两个:
0,1,数据如下:
我们从上表可以看出,当变量A取值1时,其响应比例达到了90%,非常的高,但是我们能否说变量A的预测能力非常强呢?
不能。
为什么呢?
原因就在于,A取1时,响应比例虽然很高,但这个分组的客户数太少了,占的比例太低了。
虽然,如果一个客户在A这个变量上取1,那他有90%的响应可能性,但是一个客户变量A取1的可能性本身就非常的低。
所以,对于样本整体来说,变量的预测能力并没有那么强。
我们分别看一下变量各分组和整体的WOE,IV。
从这个表我们可以看到,变量取1时,响应比达到90%,对应的WOE很高,但对应的IV却很低,原因就在于IV在WOE的前面乘以了一个系数
,而这个系数很好的考虑了这个分组中样本占整体样本的比例,比例越低,这个分组对变量整体预测能力的贡献越低。
相反,如果直接用WOE的绝对值加和,会得到一个很高的指标,这是不合理的。
4.2IV的极端情况以及处理方式
IV依赖WOE,并且IV是一个很好的衡量自变量对目标变量影响程度的指标。
但是,使用过程中应该注意一个问题:
变量的任何分组中,不应该出现响应数=0或非响应数=0的情况。
原因很简单,当变量一个分组中,响应数=0时,
此时对应的IVi为+∞。
而当变量一个分组中,没有响应的数量?
=?
0时,
此时的IVi为+∞。
IVi无论等于负无穷还是正无穷,都是没有意义的。
由上述问题我们可以看到,使用IV其实有一个缺点,就是不能自动处理变量的分组中出现响应比例为0或100%的情况。
那么,遇到响应比例为0或者100%的情况,我们应该怎么做呢?
建议如下:
(1)如果可能,直接把这个分组做成一个规则,作为模型的前置条件或补充条件;
(2)重新对变量进行离散化或分组,使每个分组的响应比例都不为0且不为100%,尤其是当一个分组个体数很小时(比如小于100个),强烈建议这样做,因为本身把一个分组个体数弄得很小就不是太合理。
(3)如果上面两种方法都无法使用,建议人工把该分组的响应数和非响应的数量进行一定的调整。
如果响应数原本为0,可以人工调整响应数为1,如果非响应数原本为0,可以人工调整非响应数为1.
评分卡模型剖析之一(woe、IV、ROC、信息熵)
算法python3m12个月前(09-26)1287℃
信用评分卡模型在国外是一种成熟的预测方法,尤其在信用风险评估以及金融风险控制领域更是得到了比较广泛的使用,其原理是将模型变量WOE编码方式离散化之后运用logistic回归模型进行的一种二分类变量的广义线性模型。
本文重点介绍模型变量WOE以及IV原理,为表述方便,本文将模型目标标量为1记为违约用户,对于目标变量为0记为正常用户;则WOE(weightofEvidence)其实就是自变量取某个值的时候对违约比例的一种影响,怎么理解这句话呢?
我下面通过一个图标来进行说明。
Woe公式如下:
Age
#bad
#good
Woe
0-10
50
200
=ln((50/100)/(200/1000))=ln((50/200)/(100/1000))
10-18
20
200
=ln((20/100)/(200/1000))=ln((20/200)/(100/1000))
18-35
5
200
=ln((5/100)/(200/1000))=ln((5/200)/(100/1000))
35-50
15
200
=ln((15/100)/(200/1000))=ln((15/200)/(100/1000))
50以上
10
200
=ln((10/100)/(200/1000))=ln((10/200)/(100/1000))
汇总
100
1000
表中以age年龄为某个自变量,由于年龄是连续型自变量,需要对其进行离散化处理,假设离散化分为5组(至于如何分组,会在以后专题中解释),#bad和#good表示在这五组中违约用户和正常用户的数量分布,最后一列是woe值的计算,通过后面变化之后的公式可以看出,woe反映的是在自变量每个分组下违约用户对正常用户占比和总体中违约用户对正常用户占比之间的差异;从而可以直观的认为woe蕴含了自变量取值对于目标变量(违约概率)的影响。
再加上woe计算形式与logistic回归中目标变量的logistic转换(logist_p=ln(p/1-p))如此相似,因而可以将自变量woe值替代原先的自变量值;
讲完WOE下面来说一下IV:
IV公式如下:
其实IV衡量的是某一个变量的信息量,从公式来看的话,相当于是自变量woe值的一个加权求和,其值的大小决定了自变量对于目标变量的影响程度;从另一个角度来看的话,IV公式与信息熵的公式极其相似。
事实上,为了理解WOE的意义,需要考虑对评分模型效果的评价。
因为我们在建模时对模型自变量的所有处理工作,本质上都是为了提升模型的效果。
在之前的一些学习中,我也总结了这种二分类模型效果的评价方法,尤其是其中的ROC曲线。
为了描述WOE的意义,还真的需要从ROC说起。
仍旧是先画个表格。
数据来自于着名的Germancreditdataset,取了其中一个自变量来说明问题。
第一列是自变量的取值,N表示对应每个取值的样本数,n1和n0分别表示了违约样本数与正常样本数,p1和p0分别表示了违约样本与正常样本占各自总体的比例,cump1和cump0分别表示了p1和p0的累计和,woe是对应自变量每个取值的WOE(ln(p1/p0)),iv是woe*(p1-p0)。
对iv求和(可以看成是对WOE的加权求和),就得到IV(informationvalue信息值),是衡量自变量对目标变量影响的指标之一(类似于gini,entropy那些),此处是0.666,貌似有点太大了,囧。
上述过程研究了一个自变量对目标变量的影响,事实上也可以看成是单个自变量的评分模型,更进一步地,可以直接将自变量的取值当做是某种信用评分的得分,此时需要假设自变量是某种有序变量,也就是仅仅根据这个有序的自变量直接对目标变量进行预测。
正是基于这种视角,我们可以将“模型效果的评价”与“自变量筛选及编码”这两个过程统一起来。
筛选合适的自变量,并进行适当的编码,事实上就是挑选并构造出对目标变量有较高预测力(predictivepower)的自变量,同时也可以认为,由这些自变量分别建立的单变量评分模型,其模型效果也是比较好的。
就以上面这个表格为例,其中的cump1和cump0,从某种角度看就是我们做ROC曲线时候的TPR与FPR。
例如,此时的评分排序为A12,A11,A14,A13,若以A14为cutoff,则此时的TPR=cumsum(p1)[3]/(sum(p1)),FPR=cumsum(p0)[3]/(sum(p0)),就是cump1[3]和cump0[3]。
于是我们可以画出相应的ROC曲线。
可以看得出来这个ROC不怎么好看。
之前也学习过了,ROC曲线有可以量化的指标AUC,指的就是曲线下方的面积。
这种面积其实衡量了TPR与FPR之间的距离。
根据上面的描述,从另一个角度看TPR与FPR,可以理解为这个自变量(也就是某种评分规则的得分)关于0/1目标变量的条件分布,例如TPR,即cump1,也就是当目标变量取1时,自变量(评分得分)的一个累积分布。
当这两个条件分布距离较远时,说明这个自变量对目标变量有较好的辨识度。
既然条件分布函数能够描述这种辨识能力,那么条件密度函数行不行呢?
这就引出了IV和WOE的概念。
事实上,我们同样可以衡量两个条件密度函数的距离,这就是IV。
这从IV的计算公式里面可以看出来,IV=sum((p1-p0)*log(p1/p0)),其中的p1和p0就是相应的密度值。
IV这个定义是从相对熵演化过来的,里面仍然可以看到x*lnx的影子。
至此应该已经可以总结到:
评价评分模型的效果可以从“条件分布函数距离”与“条件密度函数距离”这两个角度出发进行考虑,从而分别得到AUC和IV这两个指标。
这两个指标当然也可以用来作为筛选自变量的指标,IV似乎更加常用一些。
而WOE就是IV的一个主要成分。
那么,到底为什么要用WOE来对自变量做编码呢?
主要的两个考虑是:
提升模型的预测效果,提高模型的可理解性。
首先,对已经存在的一个评分规则,例如上述的A12,A11,A14,A13,对其做各种函数变化,可以得到不同的ROC结果。
但是,如果这种函数变化是单调的,那么ROC曲线事实上是不发生变化的。
因此,想要提高ROC,必须寄希望于对评分规则做非单调的变换。
传说中的NP引理证明了,使得ROC达到最优的变换就是计算现有评分的一个WOE,这似乎叫做“条件似然比”变换。
用上述例子,我们根据计算出的WOE值,对评分规则(也就是第一列的value)做排序,得到新的一个评分规则。
此处按照WOE做了逆序排列(因为WOE越大则违约概率越大),照例可以画出ROC线。
可以看出来,经过WOE的变化之后,模型的效果好多了。
事实上,WOE也可以用违约概率来代替,两者没有本质的区别。
用WOE来对自变量做编码的一大目的就是实现这种“条件似然比”变换,极大化辨识度。
同时,WOE与违约概率具有某种线性关系,从而通过这种WOE编码可以发现自变量与目标变量之间的非线性关系(例如U型或者倒U型关系)。
在此基础上,我们可以预料到模型拟合出来的自变量系数应该都是正数,如果结果中出现了负数,应当考虑是否是来自自变量多重共线性的影响。
另外,WOE编码之后,自变量其实具备了某种标准化的性质,也就是说,自变量内部的各个取值之间都可以直接进行比较(WOE之间的比较),而不同自变量之间的各种取值也可以通过WOE进行直接的比较。
进一步地,可以研究自变量内部WOE值的变异(波动)情况,结合模型拟合出的系数,构造出各个自变量的贡献率及相对重要性。
一般地,系数越大,woe的方差越大,则自变量的贡献率越大(类似于某种方差贡献率),这也能够很直观地理解。
总结起来就是,做信用评分模型时,自变量的处理过程(包括编码与筛选)很大程度上是基于对单变量模型效果的评价。
而在这个评价过程中,ROC与IV是从不同角度考察自变量对目标变量的影响力,基于这种考察,我们用WOE值对分类自变量进行编码,从而能够更直观地理解自变量对目标变量的作用效果及方向,同时提升预测效果。
这么一总结,似乎信用评分的建模过程更多地是分析的过程(而不是模型拟合的过程),也正因此,我们对模型参数的估计等等内容似乎并不做太多的学习,而把主要的精力集中于研究各个自变量与目标变量的关系,在此基础上对自变量做筛选和编码,最终再次评估模型的预测效果,并且对模型的各个自变量的效用作出相应的评价。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 挖掘 模型 中的 IV WOE 详解