摘要:目前主要的决策树算法有ID3、C4.5和CART,在各种不同的软件选择使用决策数时,也有分裂依据的指标选择,主要包括熵(Entropy)、基尼不纯度(Gini impurity)和分类误差率(Misclassification);除了这些指标,C4.5和ID3在对比不同剪枝方法时还会有信息增益和信息增益比。本文以二分类问题为例,主要介绍不同指标的含义、这些指标可以衡量分枝好坏的原因(数学含义及实际含义)以及使用时的注意事项;除此之外,也会介绍信息增益和信息增益比的区别。

首先,构建一个决策树情景,使用网络上耳熟能详的案例(高尔夫球案例):

Table1. PLAY GOLF DATASET

PLAY GOLF DATASET
ID OUTLOOK TEMPERATURE HUMIDITY

WINDY

PLAY
1 SUNNY 85 85 FALSE NO
2 SUNNY 80 90 TRUE NO
3 OVERCAST 83 78 FALSE YES
4 RAIN 70 96 FALSE YES
5 RAIN 68 80 FALSE YES
6 RAIN 65 70 TRUE NO
7 OVERCAST 64 65 TRUE YES
8 SUNNY 72 95 FALSE NO
9 SUNNY 69 70 FALSE YES
10 RAIN 75 80 FALSE YES
11 SUNNY 75 70 TRUE YES
12 OVERCAST 72 90 TRUE YES
13 OVERCAST 81 75 FALSE YES
14 RAIN 71 80 TRUE NO

目标变量为是否打高尔夫(PLAY);

可用变量有天气(OUTLOOK)、气温(TEMPERATURE)、相对湿度(HUMIDITY)和是否有风(WINDY)。

决策树在做特征选择时,依据限制条件,遍历所有特征及所有特征的分法,计算不同分法带来的信息增益或信息增益比,选择满足阈值条件的使信息增益(比)最大的分法。限制条件的类型包含叶结点的样例个数,分枝的枝数等。一般而言,离散变量直接按照离散值做切分,连续变量按照分割值的中位数进行切分。

以高尔夫的例子对数据进行查看,Fig1显示不同的类别在特征outlook和humidity内是如何分布的:

Fig1.Scatterplot of golf playing

注:图中红色代表class为Yes,蓝色代表class为No; Outlook中值0为sunny,值1为overcast,值2为rainy;rainy中humidity为80的蓝点和两个红点重合,sunny里70处有两个红点重合。

我们以Outlook为例,先进行特征分裂和筛选,第一步建立的树如下,Fig2:

Fig2.Decision tree of golf playing

决策树会在每一个结点给用户做分类(如NodeG里可以认为所有的用户都属于class Play)。简单而言,我们希望分类越集中越好,这样我们预测的最终误差会越少,因为每一个结点最后都会被归到其中一类。衡量一个结点的混乱程度或者分布情况的指标目前有分类误差率、熵和基尼不纯度。我们假设对于每一个node t而言,其属于某一类i的概率为p(i|t),在总node里,一共有c个类别。接下来我们都以二分类问题为例。

分类误差率(Misclassification)

即假设每一个结点的类别和其结点内个数最多的类别相同,那么其错误预估的比例即为分类误差率。分类误差率越高,代表内部分错的比例越高,不确定性越强。

如上例,在未分类之前,我们可以认为父结点所有的用户都属于play,那么我们预测的误差就是

对于二分类问题,分类误差率关于p(i|t) (在node t属于class i的概率) = 0.5对称,且为线性关系,即如果一个子结点将分类误差率从0.5降到0.4和分类误差率从0.2降到0.1的效果完全相同。

子结点的分类误差率期望值为

熵(Entropy)

熵最直接的含义是信息源中的信息的不确定性的度量,也可以理解为发送信息源消息的平均信息量。熵越高,代表内部分类越分散,不确定性越高。

举例解释,现在有一套发送信息的设备,但是该设备只能发送0和1两种符号,你的信息源包含且仅包含A、B、C、D四个字母(即对方知道你只会发送这四个字母),如果一个人要发送A,一个人要发送AB,这套设备是你的,你会如何收费呢?你又会如何编码呢?此处的收费即是对信息量的衡量,更准确而言是对信息长度的衡量。在一个完全不知道这四个字母的分布概率的情况下,那么最优的编码方式是在第一层AB编为0,CD编为1,第二层A编为0,B编为1;C编为0,D编为1。那么发送A需要两个字节00,发送AB需要4个字节0001。你可以根据字节长度来收费。每个字节的长度这里可以看到是,其中4为4个字母,2为可发送符号的个数。那么平均字节长度也为2。

那么假设你的信息源出现的概率可以提前知道呢,P(A) = 0.5, P(B) = 0.25, P(C) = 0.125, P(D) = 0.125。那么你提问题的方式也会发生变化,你会将A编为0,BCD编为1, 第二层B为0,CD为1,第3层C为0,D为1。那么发送A仅需1个字节0,发送AB需要3个字节010。(注:该编码方式非最佳,仅为举例,最优编码方式为哈夫曼编码)。此处B、C、D的字节长度分别为2,3,3。字节的长度为, 其中为若均为同概率分布信源包含的字母个数。其平均字节长度为1*0.5 + 2*0.25 + 3*0.125*3 = 1.75。(笔者注:因为现实情况非最低概率相加等于次高概率,所以即使为最优编码,平均字节长度也会大于信息熵)。

上述字节长度即为信息熵,上面的两例第一例可以认为P(A) = P(B) = P(C) = P(D) =0.25。很容易理解,如果信息源中的字母分布越集中,那么信息熵会越低,传递信息需要的平均字节长度也会越短。在高尔夫的例子里,我们的信息源就是打高尔夫和不打高尔夫这两种情况,不同的情况发生的概率不同,用熵我们可以衡量出整体分布的不确定性。[1][3][4]

上例父结点的

上例子结点的期望

基尼不纯度(Gini Impurity/ Gini Index)

基尼不纯度(和基尼系数不同,不要搞混)的含义为随机抽取一个样本,归类错误的平均概率。基尼不纯度越高,代表内部分类越分散,不确定性越高。基尼不纯度更像是分类误差率的升级版。分类误差率将整个结点归于一类,且赋予非该类的分类误差权重为1,对于非最多类的其他种类的分布没有衡量,而基尼不纯度对所有的种类都给予比例的衡量,也是对于整体分布的衡量。[5]

上例父结点的

上例子结点的期望

总结

Fig3. 二分类问题中不同指标对比图

分类误差率Misclassification是将结点内整体类别归为一类的错误比例,是单一的比例衡量;熵Entropy和基尼不纯度Gini Impurity均是对结点内整体分布的衡量。对于二分类问题而言,可以从Fig3看到,其实大体趋势基本一致,没有太大区别。不同的区别是,1.分类误差率和基尼不纯度的值域在0~0.5之间,而熵会更大一些是0~1,在设置信息增益阈值处,熵可设置的更高一些。2.分类误差率对于不同区分度的降低的评价是相同的,即其导数为常量,但是熵和基尼不纯度的导数随p(i)的增加而降低。熵比基尼要更高一些。当然实际使用中,没有特别大的区别。类比的话,就像班级里有考60分的同学和考90分的同学,分类误差率这位老师认为从60分考到70分和从90分考到100分的难度是相同的;但是熵和基尼老师分别认为从60分考到70分和从90分考到93分/95分的难度相同。熵和基尼更公平一些。

接下来的需要解释的是信息增益和信息增益比。

信息增益(Information Gain)

信息增益即分类后新的分类将原先分类的不确定性降低的程度。这个概念比较简单,主要是为了不同特征选择可比。而且将熵降低的程度为明确可量化的值,但熵的绝对值和父结点的熵的绝对值有关,无法规定具体的阈值。比如上例的熵的信息增益(虽然信息增益是在熵的情况下提出的,但实操中基尼不纯度和分类误差率也可以求各自的增益)为

决策树在不对分枝做任何约束的情况下,很容易过拟合,尤其是连续变量,如果分得足够细,信息增益就可以比较大。所以信息增益比应运而生。[6]

信息增益比(Information Gain Ratio)

其中Entropy(T1)为子结点分布的熵值。[2] 假设从T到T1,一共分出k个结点。那么,

仍拿上面的决策树举例,从父结点到子结点,一共分了3个子结点,个数分别为5,4,5,那么

信息增益比的分母衡量的是子结点样例个数分布的不确定性。如果子结点的分布越不确定,熵值越大,信息增益比越小。具体而言,由上述熵的定义的解释,一方面如果结点分得更多更细,分布不确定性增加;另一方面,如果信息增益相同,但子结点的个数分布不同,均匀分布比非均匀分布的不确定性要高。信息增益比偏向选择结点个数少,且分布非均匀的特征分类方法。

从另一方面理解,信息增益比为信息增益除以子结点分布的增益(父结点分布的熵值为0),即在当前每一单位分布增加的不确定性下,得到的信息增益是多少。另,信息增益比大部分使用的指标为熵,未见其他指标有应用。虽然从某个角度而言,基尼不纯度也可以计算信息增益比。

总结

信息增益衡量不同分类方法使结点内部分布的不确定性变化的程度。信息增益比为平衡信息增益导致的过度分类,除以分布带来的不确定性的增加。目前无论是R还是Python主流的包里,使用信息增益比的都比较少。可能是因为通过外围限制,包括但不限于叶结点的样本个数,父结点的样本个数,最大树深,最大分枝个数等保证符合大数定律,以及增加了剪枝的操作,修正了仅通过信息增益贪婪算法导致的问题。而且,信息增益无论是从理解上还是计算上,都比信息增益比更易接受。

思考

在风控领域,尤其是信贷模型中,好坏用户的分布本身就是非均匀分布,而且是极度集中的状态。要想在决策树中使熵值增加(仅讨论二叉树),倾向的分类是更高的好用户的占比的类且该结点在整体结点个数的分布占比也要相对较高。也就是说,一开始的分类会偏向将坏用户分出去的分类,而且分出的分类数目越少,坏用户占比越高越容易分出去,之后分出去的子结点坏用户的占比会越来越低,直到不能再分。这样,最终生成的树会更容易形成聚集,适合做排黑,并不适合像逻辑回归一样对所有用户做排序(无法切分);除非一开始就将用户做不同的划分。

参考资料:

[1] 吴军 数学之美

[2] 李航 统计学习方法

[3] 可汗学院 信息论课程 https://www.khanacademy.org/computing/computer-science/informationtheory/moderninfotheory/v/symbol-rate-information-theory

[4] 百度百科 哈夫曼编码  https://baike.baidu.com/item/%E5%93%88%E5%A4%AB%E6%9B%BC%E7%BC%96%E7%A0%81/1719730

[5] victor zhou https://victorzhou.com/blog/gini-impurity/

[6] 夕小瑶 https://www.zhihu.com/question/22928442

还有各种知乎、各种CSDN、看不懂的论文(香农的经典论文A Mathematical Theory of Communication、哈夫曼的A Method for the Construction of Minimum-Redundancy Codes、Laura Elena Raileanu and Kilian Stoffel的Theoretical comparison between the Gini Index and Information Gain criteria)以及样例出处CSDN。

风控基础指标之决策树的特征选择相关推荐

  1. python利用决策树进行特征选择

    python利用决策树进行特征选择(注释部分为绘图功能),最后输出特征排序: import numpy as np import tflearn from tflearn.layers.core im ...

  2. 【采用】信贷业务风控逾期指标及风控模型评估指标

    一.互联网金融中需要关注的风控逾期指标 1.逾期天数 DPD (Days Past Due) 自应还日次日起到实还日期间的日期数 举例:DPDN+表示逾期天数 >=N天,如DPD30+表逾期天数 ...

  3. 前端性能的几个基础指标

    2018.3.1更: 有赞·微商城(base杭州)部门招前端啦,最近的前端hc有十多个,跪求大佬扔简历,我直接进行内推实时反馈进度,有兴趣的邮件 lvdada#youzan.com,或直接微信勾搭我 ...

  4. 解读:信贷业务风控逾期指标及风控模型评估指标

    <解读>信贷业务风控逾期指标及风控模型评估指标 一.互联网金融中需要关注的风控逾期指标 1.逾期天数 DPD (Days Past Due) 自应还日次日起到实还日期间的日期数 举例:DP ...

  5. 金融风控实战——风控数据挖掘方法(决策树规则挖掘)

    风控数据挖掘方法(决策树规则挖掘) import pandas as pd import numpy as np data = pd.read_excel("/Users/zhucan/De ...

  6. 一文了解消费金融风控核心指标——资产质量篇

    ©作者 | 洪一潇 01 什么是消费金融? 简单而言,消费金融是资金供给方(即消费金融公司)直接或间接向各阶层的消费者提供现金借贷.商品分期.消费信贷的现代金融服务方式. 与银行提供的传统信用贷款业务 ...

  7. 基础指标(原子指标)、复合指标、派生(衍生)指标的含义

    1.基础指标:指表达业务实体原子量化属性的且不可再分的概念集合,如交易笔数.交易金额.交易用户数等. 2.复合指标:指建立在基础指标之上,通过一定运算规则形成的计算指标集合,如平均用户交易额.资产负债 ...

  8. 15读《算法基础》有感——决策树

    15读<算法基础>有感--决策树 学完本学期的<算法设计与分析基础>,想对"决策树"做进一步的了解,于是读了Rod Stephens<算法基础> ...

  9. 量化风控全方位指标解读|文末有彩蛋

    无论是授信跟定价,其中最重要的一点就是给客户打分,做风险分层.对公业务如此,个人信贷亦然,在量化风控上都有一些方法通用.还记得我们在较早前文章中介绍的量化风险的内容吗? 请看:<瞅瞅银行的LGD ...

最新文章

  1. python储存数据的容器_Python基础四容器类数据
  2. Alpha多样性稀释曲线rarefraction curve还不会画吗?快看此文
  3. Log4j2又爆雷!2.16.0存在DOS攻击风险,升级到2.17.0可解决!
  4. python数字类型怎么学,python的数字类型学习之数据类型
  5. 阿里开发者们的第5个感悟:听话,出活 1
  6. go 根据输入类型执行对应的方法_安全很重要:Go项目的安全评估技术
  7. python所有实验_python列表的小实验
  8. 多少像素才合适 网页设计标准尺寸大讲解
  9. JMETER 第一个实践例子
  10. 饮食与癌细胞代谢的分子联系
  11. 阿里云IoT规则引擎SQL参考
  12. 江西省萍乡市谷歌高清卫星地图下载
  13. 非负矩阵分解 NMF 总结
  14. dsolve函数的功能_MATLAB求解常微分方程:ode45函数与dsolve函数
  15. 服务器白屏维修,液晶屏故障汇总及检修方法之一(白屏)
  16. Mozilla 宣布 Firefox OS 应用原生支持 Android
  17. python算法入门书籍推荐书目_10本算法入门书籍推荐
  18. Cuba studio6.9 图文安装
  19. 【Delphi】微信支付控件(二)(半小时让您系统拥有支付功能)源代码、帮助文件、演示程序
  20. javascript与css的交互

热门文章

  1. 猿创征文 | 2023年必须掌握的DevOps工具推荐(一)
  2. 【C++】计算一个正整数的阶乘
  3. 微型torch去马赛克setup.py运行笔记
  4. Docker启动MySql容器Exited (1) 7 seconds ago问题解决
  5. 如何禁用计算机防病毒程序,win10系统怎么关闭Windows Defender防病毒程序
  6. gradle-6.3-all 快速下载
  7. 无胁科技-TVD每日漏洞情报-2022-9-29
  8. mysql常用函数笔记
  9. linux权限s的作用,lqc|_高级权限控制之su、sudo、特殊权限s及t位、facl
  10. Jmeter模拟上传图片