评分卡

【介绍】一篇入门之-评分卡-IV值是什么

作者 : 老饼 发表日期 : 2022-11-21 02:09:12 更新日期 : 2024-12-30 10:10:19
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com



在评分卡中,经常用IV值来判断一个变量是否有价值,或作为入模的筛选条件

本文讲解IV值的计算公式,并展示一个具体的计算例子,以及IV值在评分卡中的常见应用

通过本文,可以了解IV值如何计算,IV值多少才有效,以及如何使用代码计算IV值





   01. 评分卡-IV值是什么   





本节讲解IV值是什么,并展示IV值的计算公式与计算例子





      IV值的计算公式      


IV值是什么
IV全称为信息价值(Information Value),它常在评分卡中用于筛选变量
IV的原理是通过评估好、坏样本在变量分布上的差异,从而评估变量对y的信息价值
 IV值是什么
 如图所示,已知好、坏样本在枚举变量上的分布,然后用IV来评估两者的差异
如果IV值较大,则说明该变量有用,对y的预测有价值,反之,如果IV值较小,则说明没有太大价值
IV的计算公式
 IV的计算公式如下:
 
 往往也简记为如下形式:
 
 其中,
     :坏样本总个数                   
   :坏样本且X为第i组的个数  
 :好样本且X为第i组的个数  
    :好样本总个数                  
 备注:IV公式里的  即  








     02. IV值-计算例子与应用     





本节讲解IV值的具体计算例子,以及在评分卡中的用途





       IV值的计算实例        


以性别变量为例,性别变量共有三个级别:男、女、其它,如下:
 性别变量数据 
以上述数据为例,通过下表的计算,就可得到性别变量的IV值:
 IV值计算过程
如表,IV的计算共三个步骤:

一、统计各个分组里好坏样本的个数,并算得好坏样本的总数              
二、计算各个分组里好、坏样本在"好、坏总样本"的占比
三、根据公式算出每组的IV
四、将每组的IV进行求和,就得到变量的IV值                                      





       IV值在评分卡中的应用       


IV值在评分卡中的应用场景 
在评分卡中,IV值一般有如下的应用
1. 将IV作为变量价值的参考值                                              
 即在变量分析时,把IV值计算出来,作为参考          
2. 使用IV值来筛掉无效变量                                                  
 当评分卡的变量很多时,往往会用IV值对变量进行初筛  
一般把IV值大于0.1的变量都保留下来,进行下一步分析
在变量很多的时候,这样可以大大减少需要分析的变量 

3. 使用IV值来选择入模变量                                                  
                      在自动化建模时,要求无人工参与,此时可以使用IV值来选择入模变量
      例如选择IV值大于0.2的变量进行建模,这样可以使建模自动化
IV值多少才有效
IV值越高,变量的价值越高,
一般来说,IV值与变量对好坏客户的区分度的关系如下:
IV < 0.02 :几乎没有区分度,        
0.02 <= IV < 0.1   :有微弱的区分度;                      
0.1 <= IV < 0.3   :有明显的区分度;                   
0.3 <= IV             :较强的区分度                          
 备注:IV值小并不说明变量完全无效,它仅作为参考值,并不是变量有效性的绝对评估







     03. IV值-代码实现     




本节展示IV值计算的具体代码实现





     IV值计算-代码实现    


IV值的计算只需将样本的好、坏占比统计出来,再用公式计算就可以了‘
具体代码实现如下:
"""
 本代码用于展示如何计算变量的IV值
 本代码来自《老饼讲解-机器学习》www.bbbdata.com
"""
import numpy as np 
import pandas as pd

# 函数:用于计算变量的IV  
def cal_iv(data):                                                                                                      
    bad_tt  = data['y'].sum()                                                          # 坏客户个数
    good_tt = data.shape[0] -bad_tt                                                    # 好客户个数
    df      = data.groupby('x')['y'].agg([('bad_cn','sum'),('cn','count')])            # 按组别统计坏客户个数与总客户个数
    df['good_cn']=df['cn'] -df['bad_cn']                                               # 各组的好客户个数
    df.loc[df['bad_cn'] ==0,'bad_cn' ] = 1                                             # 如果坏客户个数为0,则设为1.这样计算iv才不报错
    df.loc[df['good_cn']==0,'good_cn'] = 1                                             # 如果好客户个数为0,则设为1.这样计算iv才不报错
    df['bad_rate']  = df['bad_cn']/bad_tt                                              # 坏客户占比
    df['good_rate'] = df['good_cn']/good_tt                                            # 好客户占比
    df['iv'] =(df['bad_rate']-df['good_rate'])* np.log(df['bad_rate']/df['good_rate']) # 按公式计算IV值
    iv =  df['iv'].sum()                                                               # 计算总的IV值 
    return iv                                                                          # 返回IV值
																					   
# iv计算的应用示例                                                                      
data = pd.DataFrame({                                                                  
    'x': ['男','男', '男','男','女','女','女','女','其它','其它','其它'],              # 用于计算IV的数据
    'y': [1,1,0,0,0,0,0,1,1,1,0]                                                       
})                                                                                     
iv =  cal_iv(data)                                                                     # 计算IV值
print('\n数据:\n',data)                                                                # 打印变量的数据
print('\niv值:',iv)                                                                    # 打印变量的IV值
代码运行结果如下:
 评分卡IV计算的代码运行结果 
从结果可以看到,IV值为0.49,
它大于0.3,说明变量在好、坏客户的分布上具有较大的区别,即变量对y有很明显的贡献







好了,以上就是评分卡中IV值的计算公式以及计算例子了~








 End 



联系老饼