前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >风控算法最常见的知识WOE讲解!

风控算法最常见的知识WOE讲解!

作者头像
Datawhale
发布2021-04-20 14:09:09
2.9K0
发布2021-04-20 14:09:09
举报
文章被收录于专栏:Datawhale专栏Datawhale专栏

想起刚入门风控时,天天对变量进行WOE变换,很多书籍和文章都讲得很详细,公式和例子都有,但他们很少直接回答:

  • 为啥要用WOE?
  • 不用WOE不行吗?
  • WOE有啥神奇功效? 本文试图根据自己理解回答。

在风控用到的数据里,我们会用到两种变量:

  • Numerical Variable,数值变量。例如逾期金额,天数。
  • Categorical Variable,类别变量。例如客户职业。

在制作评分卡过程中,我们还需要把数值变量变成类别变量,例如客户年龄段,我们可以划分为[20及以下],[21-30],[31-40],[41-50],[51-60],[61-70],[70以上]七个类别,这时候我们就把数值变成了类别。这种把数值变成类别的技巧叫做分箱(binning)。

但是当把所有变量都变成类别后,这时候你也许有这个疑惑:怎么去训练一个模型呢?例如逻辑回归,只能用数值作为特征输入。怎么把类别变成数值呢?

你此刻想到的可能是one-hot encoding,但还是有问题,对于逻辑回归来说,one-hot encoding输出的矩阵太稀疏了,很难让逻辑回归有很好的效果。

这时候,我们可以试试把类别或者分箱转化成响应的数值(怎么又转回数值了?等下解答你)。这个分数必须和必须有这个特性:分数越大,代表这个变量给bad label的贡献度越大,这个贡献度,视运算符号不同,可以是正向,也可以是负向,但我们期望它们之间有个线性关系。

我们需要引入WOE编码。

一、什么是WOE

我相信在看到这篇文章时,你已经看过很多关于WOE的讲解,但为了照顾第一次研究WOE的朋友,我还是详细解释下。

WOE全称是Weight of Evidence,即证据权重,也叫作自变量的一种编码。

WOE的公式定义如下:

WOE_i = ln(\frac{Bad_i}{Bad_T}/\frac{Good_i}{Good_T})=ln(\frac{Bad_i}{Bad_T})-ln(\frac{Good_i}{Good_T})

其中i为某个特征的第i个分箱。Bad_i为在i个分箱的bad label数量,Bad_T为总共的bad label数量。例如下面举个例子,

Bad_1 = 20, Bad_T = 50, Good_1=80, Good_T = 450

计算可以得到

WOE_1 = 0.8109

现在我们观察bad rate 和 WOE的关系,WOE越大,bad rate越高,也就是说,通过WOE变换,特征值不仅仅代表一个分类,还代表了这个分类的权重。这就回答了问题”WOE编码为啥有效“。

二、什么情况下用WOE

当然,你会有疑问:“类别变量我能理解要WOE,但对于连续变量,通过分箱变成类别变量,又通过WOE去“模拟”连续变量,这不是舍近求远吗?那我为啥不直接用原始的数值变量?

哈哈哈很聪明嘛,没被我绕进去。答案是当然可以,而且很多情况下并不会比WOE效果差。但binning+WOE能解决一个问题,就是可以把非线性的特征转化为线性。

例如在风控场景里,我们可能用到客户的年龄做特征。我们知道肯定不是年龄越大风险越高,或者年龄越大风险越低,一定是有个年龄段的风险是比其他年龄段高些。我们拿Give Me Some Credit(https://link.zhihu.com/?target=https%3A//www.kaggle.com/c/GiveMeSomeCredit/data)的数据做个分析,在数据里有个年龄字段,我们来看看年龄(age)和违约率(SeriousDlqin2yrs)的关系

可以看到年龄和违约率并不是线性相关的。我们知道,逻辑回归的方程是:

ln(odds) = w_1x_1+w_2x_2+w_3x_3+.....

逻辑回归拿年龄做变量,例如

x_1

是年龄,训练后

w_1

是固定权重值,如果

w_1

是正值,那么年龄越高,

w_1x_1

的值越大,最后分数

ln(odds)

值也越大,但从上图可以看出实际不是这样的。

为了解决这个非线性的问题,我们用WOE代替年龄段,根据WOE的计算过程,我们可以知道WOE值越高的分类,违约率越高,这样就可以把非线性映射转换成线性映射。下图已经把年龄换成了WOE,可以看到WOE和违约率是线性。

总结:WOE可以把相对于bad rate显现非线性的特征转换为线性的,这对于广义线性模型(Generalized linear model、简称GLM,我们用的线性回归,逻辑回归都算GLM)来说非常有必要。

三、WOE还有什么好处

除了可以把非线性的特征转换成线性的,WOE好处还有:

  1. 对波动不敏感。遇到异常数据亦能平稳表现。例如有个人年龄为20,不小心按键盘时按成了200,也不会产生10倍的波动。
  2. 容易操作。这是对业务人员说的,用模型计算出评分卡后,给任何不懂技术的人都能算出一个客户的风险值。

其他问题:

Q:特征有null值怎么办?

A:两种策略。1.预先fillna。2.null值单独一箱

四、总结

  • WOE越大,bad rate越高,也就是说,通过WOE变换,特征值不仅仅代表一个分类,还代表了这个分类的权重。这就回答了问题”WOE编码为啥有效“。
  • WOE可以把相对于bad rate显现非线性的特征转换为线性的,这对于广义线性模型(Generalized linear model、简称GLM,我们用的线性回归,逻辑回归都算GLM)来说非常有必要。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Datawhale 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是WOE
  • 二、什么情况下用WOE
  • 三、WOE还有什么好处
  • 四、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档