决策树算法(ID3,CART,C4.5)

本文介绍了决策树的基本流程和思想,通过实例解释了信息熵和信息增益的概念,并详细阐述了ID3、C4.5以及CART算法在划分属性选择上的差异,包括信息增益、信息增益率和基尼指数的计算与应用。

一 基本流程

1. 决策树思想

在生活中,我们如何判别一个学生是否优秀?我们可能先会判断其成绩如何、再判断其能力如何、再判断其形象如何,判断等等属性,最后得出结论他优秀或不优秀。而且判别流程因人而异,不唯一。

决策树思想也是如此: 根据当前结点的数据集和属性集,选择一个最佳的属性将数据集划分出几个子集作为当前结点的孩子结点,孩子结点数据集和属性集是父结点的子集且再重复上述过程,直到产生叶节点,此时叶结点的数据尽可能地属于同一类。如下图是一个决策树的例子:
在这里插入图片描述
可以观察到,判断一个学生是否优秀有多条路径,这与我们生活中做判别是同样的。决策树的增长是不断选取不同的属性值进行数据划分的过程,而这个过程中子集的纯度(集合中同类所占的比例)越来越高,从而达到分类的效果,从根到叶子结点的一条路径就是一条判别序列。 决策树算法就是要从已知分类的数据集中学得一颗判别树,属于监督学习算法。

2. 基本算法

在这里插入图片描述

这是决策树最基本的算法,是个递归模型。该算法中最重要的一步就是13:选择最佳的划分属性,根据选择规则的不同决策树算法有ID3、CART和C4.5。另外,注意递归结束的条件:

(2行) D中样本属于同一类,这时已经找到一个判别类型了,无须再划分子集了。

(8行) A为空集,这时表明已经使用了所有属性来划分子集依然不能将类别完全分开,那么采用投票法,即样本数最多的分类为判别结果,不再继续划分;D中样本在A上的取值相同,这表明再按A中的属性来划分结果依然是D或空集,没有必要再划分下去了,此时D中存在多个类别,那么采用投票法。

(16行)DvD_vDv为空,这表明D没有属性a∗a_*a值为a∗va_*^vav的数据,那么判别到这儿如何分类呢?生成子节点,子节点的分类标记为父节点数据集D的投票结果。

二 划分属性选择

1.ID3的选择

ID3是最基本的决策树算法,其采用信息增益准则来选择最佳的划分属性。

信息熵(Information Entroyp):是度量样本集合纯度的一种量化标准。有Y是样本集D上的随机变量,令PkP_kPk为随机变量Y=k(k=1,2,…,|Y|) 时的概率,样本集D的信息熵为:
Ent(D)=−∑k=1∣Y∣Pklog⁡2Pk \begin{aligned} Ent(D) = - \sum_{k=1}^{|Y|} P_k \log_2 P_k \end{aligned} Ent(D)=k=1YPklog2Pk
举个例子来理解信息熵,假设随机变量Y={ 0,10,10,1},假设有如下三种情况:

若两类在集合D上分布均匀,即P0=P1=12P_0=P_1=\frac{1}{2}P0=P1=21,则信息熵为:−(P0log⁡2P0+P1log⁡2P1)=−log⁡212=1-(P_0\log_2P_0+P_1\log_2P_1)=-\log_2\frac{1}{2}=1(P0log2

### 决策树算法 ID3、C4.5CART 的区别 #### 1. 特征选择标准 ID3 使用信息增益(Information Gain)作为特征选择的标准,倾向于选择具有更多取值的特征[^1]。然而,这种倾向可能导致过拟合问题。 C4.5 改进了这一缺陷,采用信息增益比(Gain Ratio),通过引入分裂信息熵(Split Information Entropy)来平衡不同特征的选择偏差[^2]。这种方法使得 C4.5 更适合处理多值离散特征的数据集。 CART 则使用基尼系数(Gini Index)来进行节点划分,在分类问题中追求更高的纯度。对于回归问题,CART 基于均方误差最小化原则进行分割。 --- #### 2. 数据类型支持 ID3 主要适用于离散型数据,无法直接处理连续型特征或缺失值[^3]。 C4.5 扩展了对连续型特征的支持能力,并提供了处理缺失值的方法。它会自动将连续型特征划分为若干区间并计算最佳分割点。 相比之下,CART 对连续型特征的支持更为高效,可以直接对其进行二分操作以找到最优切分点。此外,CART 同样具备强大的缺失值处理功能。 --- #### 3. 应用场景 ID3 只能应用于分类任务,不支持回归分析。 C4.5 能够很好地应对分类问题中的复杂情况,但由于其设计初衷并未考虑回归需求,因此仅限于分类用途。 CART 是唯一一种既可用于分类又可完成回归建模的决策树方法。这使其成为实际应用中最灵活的一种模型形式之一。 --- #### 4. 树结构特点 由 ID3 构造出来的树往往较为庞大且分支繁杂,容易造成过度拟合现象。 C4.5 引入了后剪枝技术,有效减少了不必要的叶子结点数量,提高了泛化性能。 CART 自然生成的是完全二叉树形态,通常较其他两种算法产生的树形更加紧凑简单,有助于提升预测速度与存储空间利用率。 --- #### Python 实现示例 以下是三种经典决策树算法的一个简化版实现: ```python from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier, export_text import numpy as np # 加载样本数据 data = load_iris() X, y = data.data, data.target # 创建不同的决策树实例 id3_tree = DecisionTreeClassifier(criterion="entropy", splitter="best") # 类似ID3 c45_tree = DecisionTreeClassifier(criterion="gini", min_samples_split=20) # 类似C4.5 cart_tree = DecisionTreeClassifier() # 默认即为CART # 训练模型 for tree in [id3_tree, c45_tree, cart_tree]: tree.fit(X[:100], y[:100]) # 这里只用了部分训练数据方便演示 # 输出每棵树的规则描述 print("ID3-like Tree Rules:\n", export_text(id3_tree)) print("\nC4.5-like Tree Rules:\n", export_text(c45_tree)) print("\nCART Tree Rules:\n", export_text(cart_tree)) ``` 上述代码片段展示了如何利用 `sklearn` 中的 `DecisionTreeClassifier` 来模拟这些传统决策树的行为差异。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值