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. SocketClient

    import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.i ...

  2. casperjs 源码

    1.首当其冲github 地址: https://github.com/casperjs

  3. QQ空间添加背景音乐

    QQ空间背景音乐方式 1.QQ音乐添加背景音乐一种是开通绿砖[有矿的忽略此条]2.QQ空间添加网络音乐的方法步骤:1.首先,需要先下载好想要音乐作为QQ空间背景音乐的歌曲文件(建议为MP3格式)[我这 ...

  4. task_struct源码解读

    task_struct英文源码原文 以下是中文以及解释:(未完待续,慢慢敲) 1. /* Used in tsk->state: */ #define TASK_RUNNING 0x0000// ...

  5. 基础数据类型(int,str,bool)

    一 python 中的基础数据类型 1.int  数字类型(整数类型)  主要用来数学计算 2.str  字符串   可以保存少量数据进行操作 3.bool  布尔值  判断真假   True  Fa ...

  6. ble ic

    ti cc25xxnordic nrf24xx nrf51xx nrf52xx Beken bk34xx

  7. Cubase如何进行音频移调

  8. Linux——grep binary file

    原创声明:本文系博主原创文章,转载或引用请注明出处. grep命令是linux下常用的文本查找命令.当grep检索的文件是二进制文件时,grep命令会提示: $grep pattern filenam ...

  9. nodejs研发环境

    https://blog.csdn.net/angl129/article/details/90696251

  10. java中创建List<>类型的数组-20171028

    遇到了一个问题需要创建List类型的数组,但是在网上查了很多资料,好像发现并不能创建泛型的数组,于是改用Hashmap实现同等的功能. 代码如下: Map<String,List<AddL ...