WOE与IV值
原文链接:WOE与IV值
微信公众号:机器学习养成记 搜索添加微信公众号:chenchenwings
计算WOE和IV是评分卡模型的一个重要环节,之前没有仔细研究过,但总觉得他们既然可以放在评分卡模型中去解决相应的问题,那应该也可以放在其他模型中解决相似的问题,所以还是很值得研究一下。下文是自己对这两个指标的理解整理。
应用场景
WOE和IV主要用来判断变量的预测强度,比如判断用户收入对用户是否会发生逾期的预测强度。因此,两个值的使用主要是在有监督的分类问题中,具体可以细化到如下方面:
指导变量离散化。在建模过程中,时常需要对连续变量进行离散化处理,如将年龄进行分段。但是变量不同的离散化结果(如:年龄分为[0-20]还是[0-15])会对模型产生不同影响。因此,可以根据指标所反应的预测强度,调整变量离散化结果。(对一些取值很多的分类变量,在需要时也可以对其进行再分组,实现降维。)
变量筛选。我们需要选取比较重要的变量加入模型,预测强度可以作为我们判断变量是否重要的一个依据。
WOE(Weight of Evidence)
我们使用german credit数据来解释WOE及后面的IV值。german credit数据集包括了用户状态,信用历史,是否有工作,财产状况等属性,和是否发生违约标签。
german credit中一共有1000条数据,其中700条为未违约用户,300条为违约样本。我们选取savings这个分类字段进行相应解释,以此省去之前的离散化操作。此字段共有5个取值,具体如下:
每个取值代表一个分组,每个分组中好坏样本数如下,其中1代表未违约,2代表违约:
统计好后,就可以进行WOE值的计算,WOE公式如下:
P(yi)代表第i组中,违约样本占所有违约样本的比例;
P(ni)代表第i组中,未违约样本占所有未违约样本比例;
y:所有违约样本数;
n:所有未违约样本数。
经过变换,上述式子可以变为
根据对数变换曲线,可知,WOE取值为全体实数,且在大于0部分,WOE越大表示分组中存在违约样本可能性越大(正向作用),小于0部分,WOE越小则越表示了一种反向作用。因此,WOE反映了自变量取值对目标变量的影响。经过计算,得到相应的WOE值:
以savings变量取A61时为例,对应的woe=ln((217/300)/(386/700))。WOE没有考虑分组中样本占整体样本的比例,如果一个分组的WOE值很高,但是样本数占整体样本数很低,则对变量整体预测的能力会下降。因此,我们还需要计算IV值。
IV(Information Value)
IV值考虑了分组中样本占整体样本的比例,相当于WOE的加权求和。具体计算公式如下:
根据上面的公式,我们可以得到savings字段各取值IV值及字段总体IV值:
R语言实现
针对此特定数据集,编写了如下函数,计算WOE与IV:
调用后得到相关结果:
推荐文章
扫描二维码,关注我们。
如需转载,请在开篇显著位置注明作者和出处,并在文末放置机器学习养成记二维码和添加原文链接。
快来关注我们吧!