python WOE 偏工程的理解

Python woe 0.0.7 源码解析(https://pypi.python.org/pypi/woe/0.0.7) 
数据挖掘模型中的IV和WOE详解 http://blog.csdn.net/kevin7658/article/details/50780391 
概念简述,提取自上链接: 
iv(Information Value,中文意思是信息价值),变量的预测能力。 
WOE的全称是“Weight of Evidence”,即证据权重,是对原始自变量的一种编码形式。要对一个变量进行woe编码需要先把这个变量分组(也叫离散化,分箱)。然后计算,woe表示的实际上是“当前分组中响应客户占所有响应客户的比例”和“当前分组中没有响应的客户占所有没有响应的客户的比例”的差异。由woe各组加权求和,可以计算出iv(如果加权见引用)

根据以上解释,我们发现,先分组,再计算woe值,再计算IV。IV值越大代表这个变量对目标的预测能力越强。不同的分组方式会导致不同的IV值。如何分组才能获取IV的最大值呢? 
针对离散值,本来就是分好组的。比如性别对收入的预测能力。 
针对连续值。一般来说需要根据变量的分布进行人工分组。(比如年龄对是否近视的预测能力。按照经验,近视与遗传和看书多少有关,一般按照1-7岁(学龄前),8-13(小学),14-16(初中),17-19(高中),20-23(大学),24-200(研究生及以上)进行分组)。 
很多连续值场景中,都是按照连续值距离进行分组的。(有特例:比如像年龄对 红腰带(本命年买红腰带)售卖量的预测能力的计算,应该以除12作为分组。)woe代码实现了一种按照连续值距离进行分组的方式。

woe模块实现: 
输入中会指名变量作为离散值还是连续值进行IV计算。

  • 针对离散值,将每个值作为一个分组,计算个分组woe值,再计算IV值
  • 针对连续值: 
    1. 计算将整体数据作为一个分组的IV值(命名为IV0)。
    2. 对所有值排序,根据最大,最小值平均划分100个取值区间(99个区间分割点,每个分割点可以将整体数据分割为左右两部分)
    3. 针对每个分割点,尝试将左右两部分作为两个分组,计算IV值(如果此种分组中,左右有一个分组中数据少于总体数据量的5%,不计算此分组IV)。获取99中分组方式中的最大IV值(IVmax)。
    4. 假如此最大IV值(IVmax)大于不分组IV值的101%(IV0),不进行分割。否则,以此分割点将数据整体分为左右两个组。每个组独立重新进行1步骤,进入下一轮循环。
    5. 根据记录所有分组点进行数据整体分组,计算IV。

woe算法是单机实现,如果要改成分布式(spark计算),思路如下(没有是实现):

总体思路,将实现中的list换成rdd。

  • 针对离散值,每个分组是一个rdd,计算woe,合并计算IV
  • 针对连续值。 
    1. 将整体数据(RDD数据结构)作为一个分组的IV值(命名为IV0)。
    2. 对所有值排序,根据最大,最小值平均划分100个取值区间(99个区间分割点,每个分割点可以将整体数据分割为左右两部分)
    3. 针对每个分割点,尝试将左右两部分作为两个分组(RDD数据结构),计算IV值(如果此种分组中,左右有一个分组中数据少于总体数据量的5%,不计算此分组IV)。获取99中分组方式中的最大IV值(IVmax)。
    4. 假如此最大IV值(IVmax)大于不分组IV值的101%(IV0),不进行分割。否则,以此分割点将数据整体分为左右两个组(RDD)。每个组独立重新进行a步骤,进入下一轮循环。
    5. 根据记录所有分组点进行数据整体分组(每个组一个RDD),计算IV。

暂时未实现原因如下:

  1. 积分卡模型都是数值型数据,最多占用16字节,随便的服务器都有128G内存,单机内存可以存放80亿条数据。臆断一下,没有这么多数据的预测场景。(对业务接触不多)
  2. 只能进行每层数据的并行化,但是每层之间还是串行,效率不会提升太高
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值