一篇文章讲清楚:C4.5决策树和CART决策树

通过这篇文章,我们需要理解信息增益率的意义,知道C4.5树的构建方法;理解基尼指数的作用,知道cart构建的特征选择方法,知道分类决策树的特点。

一、C4.5决策树

1.ID3树的不足

偏向于选择种类多的特征作为分裂依据

原因:ID3 用信息增益 做特征选择:选择信息增益最大的特征做分裂。核心:特征的取值类别越多,越容易把数据集切得很碎,子集纯度很高,信息增益就会偏大

2.简单回顾信息增益

  • H(D):原数据集的熵(混乱程度)
  • H(D|A):按特征 A 分裂之后的条件熵

信息增益 = 分裂前混乱度 − 分裂后加权平均混乱度

信息增益越大,代表这个特征分裂之后,整体数据变得越 "干净"。

条件熵公式:

n:特征 A 有多少个不同取值。

3.举个栗子

|-----|-----|-----|
| 特征b | 特征a | 目标值 |
| 1 | α | A |
| 2 | α | A |
| 3 | β | B |
| 4 | α | A |
| 5 | β | B |
| 6 | α | B |

特征a有2个取值

特征b有6个取值

1 特征M作为分裂特征,会构造一棵深度为2的决策树,该树的预测准确率可能非常高

2 但整棵树过于依赖少数的特征(只根据少数特征进行学习),导致过拟合

二、信息增益率

信息增益率 = 信息增益 /特征熵

1.计算方法:

2.信息增益率的本质:

特征的信息增益 ➗ 特征的内在信息

相当于对信息增益进行修正,增加一个惩罚系数

特征取值个数较多时,惩罚系数较小;特征取值个数较少时,惩罚系数较大。

惩罚系数:数据集D以特征a作为随机变量的熵的倒数**。**

3.总结

ID3 基于信息增益,当某个特征取值种类很多时,分裂后会产生大量小的子集,子集容易达到高纯度,条件熵大幅下降,信息增益偏大;算法会优先挑选这类特征,造成偏向取值多的特征。C4.5 使用信息增益比,引入特征自身熵做分母,对高基数特征进行惩罚,缓解该问题。

4.举个例子

已知数据集:

|-----|-----|-----|
| 特征b | 特征a | 目标值 |
| 1 | α | A |
| 2 | α | A |
| 3 | β | B |
| 4 | α | A |
| 5 | β | B |
| 6 | α | B |

需求:求特征a、b的信息增益率

(1).特征a的信息增益率:

(2).特征b的信息增益率:

结论:特征a的信息增益率大于特征b的信息增益率,根据信息增益率,应该选择特征a作为分裂特征

5.关于信息增益率的总结

信息增益率的作用
•信息增益偏向于选择种类多的特征作为分裂依据
•缓解ID3树中存在的不足

信息增益率
•信息增益率 = 信息增益 /特征熵
•相当于对信息增益进行修正,增加一个惩罚系数
二、CART决策树(Classification and Regression Tree)
Cart模型是一种决策树模型,它即可以用于分类,也可以用于回归。

Cart回归树使用平方误差最小化策略,

Cart分类生成树采用的基尼指数最小化策略。

**基尼值GiniD):**从数据集D中随机抽取两个样本,其类别标记不一致的概率。故,GiniD值越小,数据集D****的纯度越高。

**基尼指数Gini_indexD):**选择使划分后基尼系数最小的属性作为最优化分属性。

注意:
1.信息增益(ID3)、信息增益率值越大(C4.5),则说明优先选择该特征。
2.基尼指数值越小(cart),则说明优先选择该特征。

物理含义:

基尼值代表:从数据集随机抽两个样本,它们类别不一样的概率

  • Gini 越大 → 数据集越混乱、纯度越低
  • Gini 越小 → 数据集越纯净

举个例子:

已知:是否拖欠贷款数据。

需求:计算各特征的基尼指数,选择最优分裂点

(1)是否有房

(2)婚姻状况

(3)年收入

(4)CART树原理举例

三、三种分类树的对比

|--------|----------|----------|----------------------------------------------------------------------------------|
| 名称 | 提出时间 | 分支方式 | 特点 |
| ID3 | 1975 | 信息增益 | 1.ID3只能对离散属性的数据集构成决策树 2.倾向于选择取值较多的属性 |
| C4.5 | 1993 | 信息增益率 | 1.缓解了ID3分支过程中总喜欢偏向选择值较多的属性 2.可处理连续数值型属性,也增加了对缺失值的处理方法 3.只适合于能够驻留于内存的数据集,大数据集无能为力 |
| CART | 1984 | 基尼指数 | 1.可以进行分类和回归,可处理离散属性,也可以处理连续属性 2.采用基尼指数,计算量减小 3.一定是二叉树 |

相关推荐
倒头就睡的小比特1 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼1 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
高洁011 天前
未来三年,AI 落地的五个确定性判断一
人工智能·深度学习·机器学习·transformer·知识图谱
旖旎夜光1 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark1 天前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her11 天前
并查集-听课笔记
笔记·算法·并查集
码流子1 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven1 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark1 天前
从算法设计模式看编程思维的抽象能力4
算法