python信用评分卡建模(附代码,博主录制)

https://zhuanlan.zhihu.com/p/20603744参考

在机器学习的二分类问题中,WOE(Weight of Evidence)和Information Value的用来对输入变量进行编码及预测能力评估。安利一下自己写的用来计算这两个值的python工具,目前没有发现python有现成的工具,就自己写了一个。

GitHub地址:GitHub - patrick201/information_value

这两个公式的原始出处没有找到,但现在公开资料解释已经很多了,公式偷懒截图公式如下(来自引用的新浪博客),附上的引用链接有一个很好的举例说明。

IV的公式借鉴了信息熵的公式,形式上长的很像但不完全相同。IV本质上市WOE的加权和,而WOE反应的是logistic回归中odds ratio的概念ln(p1 / p0),再看其前面的权重p1 - p0也反应的是这个意思。所以可以理解成IV是对这个变量在概率优势上的能力打分。

特征变量的每个category都对应一个WOE值。比如例子引用中的年龄变量划分了4个变量,对应的有4个WOE值;再将它们加权求和之后就得到这个变量的IV值。IV值可以用来评估该变量预测能力的强弱。引用文章中给出了一个判断的标准,直接贴在下。这个标准作为一个参考吧,具体用的时候得结合手头的数据集具体分析。

Information Value Predictive Power< 0.02useless for prediction0.02 to 0.1Weak predictor0.1 to 0.3Medium predictor0.3 to 0.5Strong predictor >0.5Suspicious or too good to be true

目前就一个工具类information_value.py,里面主要就下面几个方法。需要在传入前将数据集自己做离散化,否则目前只会默认无脑的做“5等分”离散化。:)

woe -- 计算输入数据集每个变量的woe和iv,并返回所有变量对应这两个值的列表,woe是一个字典dictionary的列表,因为不同的变量有不同的category取值。

woe_single_x -- 计算单个变量的woe和iv。

woe_replace -- 将数据集中变量的category取值用其对应的woe值替换,并返回替换后的数据集。有的实验称用woe替换后训练的分类器能会更好,所以提供了这么个函数。

combined_iv -- 计算将一些变量组合后对应的woe及iv值。这个函数主要是想服务于一些需要大量迭代的变量选择技术,比如有的文献提到用GA或PSO算法来选择优化的变量组合。而如果将iv计算来作为迭代时的“fit function”,计算量是非常小的。但是如果组合的变量太多的话,组合起来的category类别会很多,影响使用,所以合适组合的变量数量需要根据手头的数据量及分布情况来试验。

试验了一个scikit learn自带的数据集(当然自带的这个相对容易分类),在“评估变量重要性”这个方向上与随机森林方法进行了比较,结果如下两个图。可以看到前几个“很重要”的变量,以及最后几个“很不重要”的变量,根据IV评估的结果与RF给出的结果是很相近的。但是IV的计算量要比训练一个随机森林模型小多了。当然并不是每个手头的数据都能符合这样的结果,需要具体试验,但至少多了一个选择可以供我们参考。如果IV的结果能近似达到RF的结果,在大规模进行计算的时候也是一个挺吸引人的备选项。

随机森林中队变量重要性计算的思路很有意思,对某个自变量加随机扰动bump,然后看预测误差前后变化有多大。越大的认为这个变量对结果越有影响,也就是越重要。这与以前在银行工作时pricing框架下计算奇异衍生品组合的greeks思路很像,后者也是对影响衍生品的风险因子进行bump看组合的pv(present value)变化多少。实用又神奇的思路。

根据使用的情况我会尽量不断调整修改代码,欢迎大家试用并轻拍。Feature Selection是个巨大的坑,但希望我的小身板也能做些力所能及的。:)

python风控建模实战lendingClub(博主录制,catboost,lightgbm建模,2K超清分辨率)

https://study.163.com/course/courseMain.htm?courseId=1005988013&share=2&shareId=400000000398149

微信扫二维码,免费学习更多python资源

WOE1-Feature Selection 相关:一个计算WOE和Information Value的python工具的更多相关文章

  1. 机器学习-特征选择 Feature Selection 研究报告

    原文:http://www.cnblogs.com/xbinworld/archive/2012/11/27/2791504.html 机器学习-特征选择 Feature Selection 研究报告 ...

  2. [Feature] Feature selection

    Ref: 1.13. Feature selection Ref: 1.13. 特征选择(Feature selection) 大纲列表 3.1 Filter 3.1.1 方差选择法 3.1.2 相关 ...

  3. 特征选择与稀疏学习(Feature Selection and Sparse Learning)

    本博客是针对周志华教授所著<机器学习>的"第11章 特征选择与稀疏学习"部分内容的学习笔记. 在实际使用机器学习算法的过程中,往往在特征选择这一块是一个比较让人模棱两可 ...

  4. 【转】[特征选择] An Introduction to Feature Selection 翻译

    中文原文链接:http://www.cnblogs.com/AHappyCat/p/5318042.html 英文原文链接: An Introduction to Feature Selection ...

  5. 10-3[RF] feature selection

    main idea: 计算每一个feature的重要性,选取重要性前k的feature: 衡量一个feature重要的方式:如果一个feature重要,则在这个feature上加上noise,会对最后 ...

  6. The Practical Importance of Feature Selection(变量筛选重要性)

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  7. [Feature] Feature selection - Embedded topic

    基于惩罚项的特征选择法 一.直接对特征筛选 Ref: 1.13.4. 使用SelectFromModel选择特征(Feature selection using SelectFromModel) 通过 ...

  8. Feature Engineering and Feature Selection

    首先,弄清楚三个相似但是不同的任务: feature extraction and feature engineering: 将原始数据转换为特征,以适合建模. feature transformat ...

  9. 机器学习-特征工程-Feature generation 和 Feature selection

    概述:上节咱们说了特征工程是机器学习的一个核心内容.然后咱们已经学习了特征工程中的基础内容,分别是missing value handling和categorical data encoding的一些 ...

随机推荐

  1. 简单了解Linux文件目录

    /bin :获得最小的系统可操作性所需要的命令 /boot :内核和加载内核所需的文件 /dev :终端.磁盘.调制解调器等的设备项 /etc :关键的启动文件和配置文件 /home :用户的主目录 ...

  2. 解决GitLab的Forbidden和Nginx启动失败

    通过宝塔安装的GitLab突然出现Forbidden,原因居然是IP并发过大,IP被禁 解决方法: 登录服务器,编辑文件 /etc/gitlab/gitlab.rb  ,将下面的截图内容放开注释(默认 ...

  3. Nginx常见错误及处理方法(转)

    404 bad request 一般原因:请求的Header过大 解决方法:配置nginx.conf相关设置 client_header_buffer_size 16k; large_client_h ...

  4. Linux根文件系统和目录结构及bash特性4

    文件管理工具:cp,mv,rm    cp命令:copy                cp命令主要用于复制文件或目录 语法:        单源复制        cp [OPTION]... [- ...

  5. windows 环境下基于Python 的GDAL 安装

    最近由于需要利用pytho处理地理空间数据,但是python本身并没有访问和处理地理空间数据的包,只能借助于GDAL(Geospatial Data Abstraction Library)来进行访问 ...

  6. 使用google身份验证器实现动态口令验证

    最近有用户反应我们现有的短信+邮件验证,不安全及短信条数限制和邮件收验证码比较慢的问题,希望我们 也能做一个类似银行动态口令的验证方式.经过对可行性的分析及慎重考虑,可以实现一个这样的功能. 怎么实现 ...

  7. 强大的Visual Studio插件CodeRush全新发布v19.2,助力VS开发

    CodeRush是一个强大的Visual Studio .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验.CodeRush能帮助你以极高的效率创建和维护源代码.Consume- ...

  8. web添加学生信息(首发web)

    程序思路,先在JSP上画好页面,然后再创建一Servlet文件用于判断在网页上操作是否正确,还需要与数据库相连接,用DBUtile文件连接数据库,用Dao层来实现数据的增加,用Service来服务于D ...

  9. springboot打包后静态资源webapp文件夹无法打包进去

    1.如下图的目录结构 webapp 文件夹和resources 文件夹同级.使用mvn clean install 打包过后项目启动访问,静态资源页面404. 2.原因,springboot 打包时候 ...

  10. ML paper 导图笔记.md

    <Learning Structured Representation for Text Classification via Reinforcement Learning> <基于 ...