今天来讲一下IV值的计算问题

因本人从事风控建模行业,故不可避免需要明白IV值的整个今生前世,故此次来讲解IV值。

一、IV的定义及必备常见知识

IV是什么?全称是Information Value,中文意思是信息价值,或者信息量。

那它有什么内在含义呢?网上公认的答案:变量的预测能力。且通常来讲,变量的IV值越高,则该变量的预测能力越强

这就对选取哪些x进行建模,起到了关键的作用了,但是IV也有其限制的范围。

首先、模型必须是有监督模型(即有y标签变量),其次、y标签必须是二分类(即y只有两类y1,y2)

常见的IV取值范围代表意思如下:

若IV在(-∞,0.02]区间,视为无预测力变量

若IV在(0.02,0.1]区间,视为较弱预测力变量

若IV在(0.1,+∞)区间,视为预测力可以,而实际应用中,也是保留IV值大于0.1的变量进行筛选。

二、IV计算过程

在了解IV计算过程之前,必须明白另一个概念"WOE"

WOE的全称是“Weight of Evidence”,即证据权重。计算公式为:

简单的理解就是 该分箱 坏样本(即b)占比除以好样本(即g)占比的自然对数。(如果对分箱有疑问的同学,可以先简单理解成如果x=0、1、2、3,那么x=0就是一箱,x=1、2、3也是各为一箱)

而从公式也可以体现出WOE的含义:当前分箱中“坏样本占所有坏样本的比例”和“好样本占所有好样本的比例”的差异。很容易可以看出,当差异越大,则该分箱响应坏样本的的可能性就越大;当差异越小,则该分箱响应坏样本的可能性就越小。

这里坏样本指的是响应样本,其实网上很多文章也是约定俗成一直这么叫,其原因是因为风控建模的y标签往往选取在“客户是不是坏客户”,“客户是否会违约”,“客户是否有欺诈行为”等等命题上,所以响应的样本均指向坏客户,所以见多了、叫多了自然很多人称响应样本为坏样本,未响应样本为好样本,这种概念明白就好,不必过多深究。

WOE计算代码如下

先创建数据集

计算X1的WOE

由此可见X1=1的分箱WOE=1.2大于X1=0的分箱WOE(-1.5),即可得知X1=1更有可能性得到响应,而实际数据也是如此。

明白了WOE计算之后,IV值的计算公式就简单了

代码如下

即可得IV=1.58,证明X1变量具有超强预测力

在实际应用中,极少有这样超强预测力的变量,随着样本量的增加,偶然误差逐渐降低,系统误差趋于平均,通常有IV值大于0.2的变量已经算是极少。

以上就是IV值计算全过程。

三、文献参考+附加代码

https://blog.csdn.net/iModel/article/details/79420437

下次会写k-means聚类算法,有时间再把分箱的问题也详细一下。

# -*- coding:utf-8 -*-
# Author:Bemyid
from numpy import log
from pandas import DataFrame as df
import  pandas as pddef createDateset():dataSet=[[0, 1, 0],[0, 0, 0],[0, 1, 0],[1, 0, 1],[1, 0, 0],[1, 1, 1],[0, 1, 1],[1, 1, 1],[1, 0, 1],[1, 0, 1]]return dataSetdef calcWOE(dataset,col,targe):subdata=df(dataset.groupby(col)[col].count())suby=df(dataset.groupby(col)[targe].sum())data=df(pd.merge(subdata,suby,how="left",left_index=True,right_index=True))b_total=data[targe].sum()total=data[col].sum()g_total=total-b_totaldata["bad"]=data.apply(lambda x:round(x[targe]/b_total,3),axis=1)data["good"]=data.apply(lambda x:round((x[col]-x[targe])/g_total,3),axis=1)data["WOE"]=data.apply(lambda x:log(x.bad/x.good),axis=1)return data.loc[:,["bad","good","WOE"]]def calcIV(dataset):dataset["IV"]=dataset.apply(lambda x:(x.bad-x.good)*x.WOE,axis=1)IV=sum(dataset["IV"])return IVif __name__ == '__main__':data=createDateset()data=df(data,columns=["x1","x2","y"])data_WOE=calcWOE(data,"x1","y")print(data_WOE)data_IV=calcIV(data_WOE)print(data_IV)

图示代码,轻松解决IV值计算问题(python)相关推荐

  1. 电脑开机卡住了怎么办_苹果电脑忘记开机密码怎么办?一段代码轻松解决

    长时间不用Mac电脑忘记开机密码怎么办呢?不要着急,这里macw小编解决妙招,照着这个办法重设密码就可以轻松重置密码开机. 苹果电脑忘记开机密码解决方法 在关机状态下,按一下开机键,再按住 comma ...

  2. 自动化测试框架:几行代码轻松解决Appium环境问题

    移动UI自动化测试中,很多人用appium这个开源框架. 发现很多人在安装时,安装过程中出现各种问题,花费很多时间.特别是团队开始用时.每个人都在这上面踩坑,得不偿失. 我写了一个脚本来自动实现这个安 ...

  3. python100行代码-怎样写贪吃蛇小游戏?用100行python代码轻松解决!

    大家小时候都玩过贪吃蛇吧?小编小时候可喜欢拿爸妈的手机玩了,厉害着呢!今天,小编就来用100行代码实现一个简易版的贪吃蛇.在网上,贪吃蛇教程蛮多的,但要安装蛮多库的,而且也不够清晰,今天的代码比较短, ...

  4. Hurst exponent(赫斯特指数)代码与R/S值计算——python

    文章目录 Hurst不同值对应的图 代码 基于重标极差(R/S)分析方法基础上的赫斯特指数,是作为判断时间序列数据遵从随机游走还是有偏的随机游走过程的指标,简单来讲:就是判断"大势所趋&qu ...

  5. 前端实现网站悼念【灰色效果】几行代码轻松解决

    博主介绍

  6. 一行代码搞定信用评分模型(python)

    欢迎大家,上一篇博客[信用卡评分模型(R语言)]详细的讲解了如何开发评分卡,这片博客就不再详细介绍,为方便开发评分卡,本人根据自己经验写了一个python包,导入此包后仅需一行代码即可成功制作评分卡, ...

  7. delphi7aes加密解密与java互转_惊呆了!不改一行Java代码竟然就能轻松解决敏感信息加解密|原创

    前言 出于安全考虑,现需要将数据库的中敏感信息加密存储到数据库中,但是正常业务交互还是需要使用明文数据,所以查询返回我们还需要经过相应的解密才能返回给调用方. ❝ ps:日常开发中,我们要有一定的安全 ...

  8. 解决 IDEA 调用其他类的时候自动加上包路径和类名的情况_惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密...

    前言 出于安全考虑,现需要将数据库的中敏感信息加密存储到数据库中,但是正常业务交互还是需要使用明文数据,所以查询返回我们还需要经过相应的解密才能返回给调用方. ❝ ps:日常开发中,我们要有一定的安全 ...

  9. 语义分割准确率、精确率、召回率、F1值计算代码

    语义分割准确率.精确率.召回率.F1值计算 使用提示: 需要opencv库 只需将预测结果文件路径与标签路径改一下 只针对二分类哦 (多分类可稍作修改) 代码里正类的像素值为255,可做修改! 1.精 ...

  10. 惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密

    前言 出于安全考虑,现需要将数据库的中敏感信息加密存储到数据库中,但是正常业务交互还是需要使用明文数据,所以查询返回我们还需要经过相应的解密才能返回给调用方. ❝ ps:日常开发中,我们要有一定的安全 ...

最新文章

  1. 静默安装oracle
  2. 第四范式AI转型合伙人招聘进行时
  3. nginx的限流配置
  4. 《南溪的目标检测学习笔记》——验证模式下出现“Process finished with exit code 137 (interrupted by signal 9: SIGKILL)“的问题
  5. BZOJ2767:[JLOI2010]足彩投注
  6. 关于系统响应函数OnSysCommand
  7. 每日算法系列【LeetCode 926】将字符串翻转到单调递增
  8. h5跳转小程序页面url_小程序和h5跳转
  9. 英语语法总结--动词的时态
  10. 电脑qq浏览器怎么滚动截长图_QQ浏览器怎样实现长截图
  11. MOS管防倒灌电路设计及其过程分析
  12. SpringBoot上传文件到服务器
  13. threejs第十三用 简单堆积木
  14. Pycharm导入已有的本地安装包
  15. Convex functions
  16. 摆扫式(whisk broom)和推扫式(push broom)卫星传感器
  17. c语言禁用键盘,C/C++ 禁用鼠标键盘
  18. 程序员该如何把 Windows 系统打造的跟 Mac 一样牛逼?
  19. java设计模式有哪些(java设计模式刘伟课后答案)
  20. 平面UI设计学起来容易吗?就业率如何?

热门文章

  1. 技术是如何创造价值的
  2. 2019,一年一度的高考季来临,作文又成热门话题
  3. 计算机卡和c盘东西多有关吗,电脑c盘东西装太多会卡吗
  4. git基本命令、提交pr
  5. 常吃西红柿治疗十种病以及食用的一些禁忌
  6. 创翼软件linux版本,电信创翼客户端下载
  7. C语言自学完备手册(02)——变量的声明与定义
  8. 四种用电脑给手机发短信方法
  9. Dovecot 邮件假删除、回收站功能 (使用lazy-expunge插件)
  10. 数学分析高等代数考研试题不断更新中