信用评分模型中WOE、IV详解

#IV(informaiton Value)

     #IV的概念

     #IV的直观理解

     #IV的计算

#WOE(Weight of Evidence)

     #计算WOE

     #实例介绍IV的计算和使用

        #计算WOE和IV

        #WOE值和IV值的特点

             #WOE值特点

             #IV的特点

       #IV值的比较和变量预测能力的排序

 

  • IV(informaiton Value)

    IV的概念

    IV全程是informaiton Value,中文意思是信息价值,或者信息量。

    在逻辑回归、决策树等模型方法构建分类模型时,经常需要对自变量进行筛选。比如我们有200个候选自变量,通常情况下,不会直接把2000个变量直接放到模型中去进行拟合训练,而是会用一些方法,从这200个自变量中挑选一些出来,放进模型,形成入模变量列表,那么如何挑选入模变呢?

    挑选入模变量要考虑很多的因素,如“变量的预测能力,变量之间的相关性,变量的简单性(容易生成和使用),变量的强壮性(不容易被绕过),变量在业务上的可解释性等”,但其中最主要和直接的衡量标准是变量的预测能力

    IV这一指标就是用来衡量自变量的预测能力(衡量自变量对目标变量影响程度的指标),类似的指标还有信息增益、基尼系数等

 

    IV的直观理解

假设在一个分类问题中,目标变量的类别有两类:Y1,Y2。对于一个待预测的个体A,要判断A属于Y1还是Y2,需要一定的信息,假定信息总量是I,而这些信息蕴含在自变量C1,C2,C3...,Cn中,那么对于其中的一个变量Ci来说,其蕴含的信息越多,那么它对于判断A属于Y1还是Y2的贡献就越大,Ci的信息价值就越大,Ci的IV就越大,它就越应该进入到入模变量

 

    IV的计算

    要继续IV的值,首先需要知道WOE

    WOE的公式

13100151_Ig5e.jpg

同样,对于分组i,也会有一个对应的iv值,计算公式如下

13100151_3CR3.png

有了一个变量各分组的iv值,我们就可以计算整个变量的iv值,方法很简单,就是把各分组的IV相加:

13100151_LTDZ.png

其中,n为变量分组个数(即分箱后有多少组)

 

  • WOE(Weight of Evidence)

    WOE的全称是“Weight of Evidence”,及证据权重,WOE是对原始自变量的一种编码形式    

    要对一个变量进行WOE编码,需要首先对这个变量进行 分组处理(也叫离散化、分箱等)分组后,对于第i组,WOE的计算公式如下

13100151_JYWo.png

其中

13100151_RgKX.png : 这组中响应客户(风险模型中,对应的是违约客户,总之,指的是模型中预测变量取值为“是”或者1的个体)占所有样本中所有响应客户的比例

13100151_DXJb.png这组中未响应客户占样本中所有未响应客户的比例

# 13100151_hCPQ.png这个组中响应客户的数量

# 13100151_nyzf.png这个组中未响应客户的数量

# 13100151_Hfhk.png是样本中所有响应的数量

# 13100151_Bii2.png样本中所有未响应的数量

 

    从上述公式中看出,WOE表示的实际上是“ 当前分组中响应客户占所有响应客户的比例”和“ 当前分组中没有响应的客户占所有没有响应的客户的比例”的差异

将公式进行变换

13100152_82Sf.png

可以看出,WOE可以这么理解,当前 这个组中响应的客户和未响应的比值,和所 有样本中这个比值的差异。将这两个比值在做比值,再取对数来表示。WOE越大,这种差异越大,这个分组里的样本响应的可能性就越大,WOE越小,差异越小

    

  • 实例介绍IV的计算和使用

    假设构建一个预测模型,该模型为了预测公司的每个客户对于某项营销活动能够响应,或者说要预测的是客户对我们这项营销活动响应的可能性有多大,假设已经从公司客户列表中随机抽取了100000个客户进行营销活动测试,收集了这些客户的响应结果,作为我们的建模数据集,其中响应的客户有10000各,提取部分的变量作为模型的候选变量集:

a、最近一个月是否有购买

b、最近一次购买金额

c、最近一笔购买的商品类别

d、是否是公司的VIP客户

假设,对变量进行了离散化(分箱),统计结果如下

(1)最近一个月是否有过购买:

13100152_7sYs.png

(2)最近一次购买金额:

13100153_qXm4.png

(3)最近一笔购买的商品类别:

13100154_QQY7.png

(4)是否是公司VIP客户:

13100155_jKAx.png

 

    计算WOE和IV

以其中一个变量“最近一次购买金额”变量为例

13100156_e0Jr.png

 

    计算WOE

将这个变量离散化为4各阶段 <100元,[100,200],[200,500],>=500元,根据公司计算WOE值

13100158_DP14.png

13100159_rPff.png

 

    计算IV

13100201_FgnZ.png

计算变量总的IV值

13100201_ZkWc.png

 

    WOE值和IV值的特点

 

        WOE值特点

a、当前分组中,响应的比例越大,WOE值越大

b、当前分组WOE的正负,由当前分组响应和未响应的比例,与样本整体响应和未响应的比例的大小关系决定

    当前分组的比例小于样本整体比例时,WOE为负数

    当前分组的比例大于整体比例时,WOE为正

    当前分组的比例和整体比例相等时,WOE为0

c、WOE的取值范围是全体实数

进一步理解下WOE,会发现,WOE其实描述了变量当前这个分组,对判断个体是否影响(或者说属于哪个类)所起到影响方向和大小,当WOE为正时,变量当前取值对判断个体是否会响应起到正向影响,当WOE为负时,起到了负向影响,而WOE值的大小,则是这个影响的大小的体现。

 

        IV的特点

a、对于变量的一个分组,这个分组的响应和未响应比例与样本整体响应和未响应的比例相差越大,IV值越大,否则,IV值越小

b、极端情况下,当前分组的响应变量和未响应的比例和样本整体的响应和未响应的比例相等时,IV值为0

c、IV的取值范围是[0,+  ],当前分组中只包含响应客户或者为响应客户时,IV = + 

 

 

    IV值的比较和变量预测能力的排序

已经计算出其中一个了,其他的也类似,结果如下

a、最近一个月是否有过购买:0.250224725

b、最近一笔购买的商品类别:0.615275563

c、是否是公司VIP客户:1.56550367

d、 最近一次购买金额的IV为0.49270645

 

这四各变量IV排序结果是这样的:是否是公司VIP客户 > 最近一笔购买的商品类别 > 最近一次购买金额 > 最近一个月是否有过购买,所以得出结论:“是否是公司的VIP客户”的预测能力最高的变量,“最近一个月是否有过购买”是预测能力最低的变量。 

 

  • 关于IV和WOE的进一步思考

    为什么用IV而不是直接用WOE

(1)

从公式上看IV和WOE的差别在于IV在WOE基础上乘以的那个,我们暂且用pyn来代表这个值。

第一个原因,当我们衡量一个变量的预测能力时,我们所使用的指标值不应该是负数,否则,说一个变量的预测能力的指标是-2.3,听起来很别扭。从这个角度讲,乘以pyn这个系数,保证了变量每个分组的结果都是非负数,你可以验证一下,当一个分组的WOE是正数时,pyn也是正数,当一个分组的WOE是负数时,pyn也是负数,而当一个分组的WOE=0时,pyn也是0

 

(2)

乘以pyn后,体现出了变量当前分组中个体的数量占整体个体数量的比例,对变量预测能力的影响。怎么理解呢?继续看举例

假设我们上面所说的营销响应模型中,还有一个变量A,其取值只有两个:0,1,数据如下:

13100202_oSgr.png

我们从上表可以看出,当变量A取值1时,其响应比例达到了90%,非常的高,但是我们能否说变量A的预测能力非常强呢?不能。为什么呢?原因就在于,A取1时,响应比例虽然很高,但这个分组的客户数太少了,占的比例太低了。虽然,如果一个客户在A这个变量上取1,那他有90%的响应可能性,但是一个客户变量A取1的可能性本身就非常的低。所以,对于样本整体来说,变量的预测能力并没有那么强。我们分别看一下变量各分组和整体的WOE,IV。

13100203_0g22.png

从这个表我们可以看到,变量取1时,响应比达到90%,对应的WOE很高,但对应的IV却很低,原因就在于IV在WOE的前面乘以了一个系数,而这个系数很好的考虑了这个分组中样本占整体样本的比例,比例越低,这个分组对变量整体预测能力的贡献越低。相反,如果直接用WOE的绝对值加和,会得到一个很高的指标,这是不合理的。

 

    IV的极端情况以及处理方式

IV依赖WOE,并且IV是一个很好的衡量自变量对目标变量影响程度的指标。但是,使用过程中应该注意一个问题:变量的任何分组中,不应该出现响应数=0或非响应数=0的情况。

原因很简单,当变量一个分组中,响应数=0时,

13100204_zfWe.png

此时对应的IVi为+∞。

而当变量一个分组中,没有响应的数量 = 0时,

13100204_uTxm.png

此时的IVi为+∞。

IVi无论等于负无穷还是正无穷,都是没有意义的。

由上述问题我们可以看到,使用IV其实有一个缺点,就是不能自动处理变量的分组中出现响应比例为0或100%的情况。那么,遇到响应比例为0或者100%的情况,我们应该怎么做呢?建议如下:

(1)如果可能,直接把这个分组做成一个规则,作为模型的前置条件或补充条件;

 

(2)重新对变量进行离散化或分组,使每个分组的响应比例都不为0且不为100%,尤其是当一个分组个体数很小时(比如小于100个),强烈建议这样做,因为本身把一个分组个体数弄得很小就不是太合理。

 

(3)如果上面两种方法都无法使用,建议人工把该分组的响应数和非响应的数量进行一定的调整。如果响应数原本为0,可以人工调整响应数为1,如果非响应数原本为0,可以人工调整非响应数为1.

 

转载于:https://my.oschina.net/u/1785519/blog/1572569

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WOE信用评分卡是一种基于WOE(Weight of Evidence)转换的信用评分模型,常用于风控领域。在Python,我们可以使用pandas库和sklearn库的一些模块来实现WOE评分模型的构建。 首先,我们需要对数据进行分箱处理,并计算每个分箱好坏样本的数量,从而计算出每个分箱好坏样本的比例和WOE值。然后,我们可以使用LogisticRegression模型进行拟合,得到每个特征的系数,进而计算出每个样本的分数。 下面是一个简单的示例代码: ```python import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.metrics import roc_auc_score # 分箱函数 def binning(col, target, max_bins=10): bins = pd.qcut(col, max_bins, duplicates='drop') grouped = df.groupby(bins)[target].agg(['count', 'sum']) grouped['bad_rate'] = grouped['sum'] / grouped['count'] return grouped # 计算WOE值 def calc_woe(grouped): total_good = grouped['sum'].sum() total_bad = grouped['count'].sum() - total_good woe = pd.Series() for idx, row in grouped.iterrows(): good = row['sum'] bad = row['count'] - good woe[idx] = np.log((good / total_good) / (bad / total_bad)) return woe # 数据导入 df = pd.read_csv('credit.csv') # 分箱处理 binning_result = binning(df['age'], df['target']) woe_age = calc_woe(binning_result) # LogisticRegression模型拟合 X = pd.cut(df['age'], bins=binning_result.index, labels=woe_age) y = df['target'] lr = LogisticRegression() lr.fit(X.to_frame(), y) # 计算AUC值 y_prob = lr.predict_proba(X.to_frame())[:, 1] auc = roc_auc_score(y, y_prob) print('AUC score:', auc) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值