ID3 C4.5 CART决策树原理及sklearn实现

本文详细介绍了决策树中的ID3、C4.5和CART算法,包括信息增益、信息增益比、基尼指数等概念,以及它们在构建和剪枝决策树过程中的应用。此外,还讨论了使用Python的sklearn库实现决策树算法的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


问题描述

假设我们有一组训练数据 D={ (x1,y1),,(xN,yN)} D = { ( x 1 , y 1 ) , ⋯ , ( x N , y N ) } ,这组训练数据代表 N N 个样本, x i ( i = 1 , , N ) 是样本点 i i 的特征向量, y i 是样本点 i i 的类别,样本共分为 K 类的情况下, yi y i 的取值来自于 K K 个类别值 { C 1 , , C K } ,训练数据的特征集合为 A=A1,,AM A = A 1 , ⋯ , A M ,样本在某个特征 Am A m 处可能取到的特征值有 n n 个,分别为 { a 1 m , , a n m }
决策树是一种由结点和有向边构成的树形结构,结点类型分为内部结点和叶结点,每个内部结点代表对象的一个特征,叶结点则代表对象的类别。下图是一个简单的决策树,它通过输入对象的特征自上而下进行判断,并输出对象的类别(通过对象是否常熬夜,是否常运动判断其分类是健康或亚健康)。在下图中,椭圆框代表内部结点,长方形框代表叶结点。

对于一个未知类别的输入对象,决策树自上而下的测试该对象在每个内部结点的特征取值,从而将其分配到相应的子结点或叶结点,当对象被分配到某个叶结点时,便可确定其类别。


ID3

ID3算法的基本流程为:如果某一个特征能比其他特征更好的将训练数据集进行区分,那么将这个特征放在初始结点,依此类推,初始特征确定之后,对于初始特征每个可能的取值建立一个子结点,选择每个子结点所对应的特征,若某个子结点包含的所有样本属于同一类或所有特征对其包含的训练数据的区分能力均小于给定阈值,则该子结点为一个叶结点,其类别与该叶结点的训练数据类别最多的一致。重复上述过程直到特征用完或者所有特征的区分能力均小于给定阈值。
如何衡量某个特征对训练数据集的区分能力呢,ID3算法通过信息增益来解决这个问题。

信息增益

一个离散型随机变量 x x 的概率分布为: P ( x = x i ) = p i , ( i = 1 , , n ) ,那么 x x 的熵定义如下:

H ( x ) = i = 1 n p i l o g 2 p i

熵的单位为比特(bit),定义 0log0=0 0 l o g 0 = 0 。对于两个随机变量 x,y x , y ,他们有如下形式的联合概率分布:

P(x=xi,y=yj)=pij,(i=1,,n;j=1,,K) P ( x = x i , y = y j ) = p i j , ( i = 1 , ⋯ , n ; j = 1 , ⋯ , K )

那么在 x x 确定的条件下 y 的条件熵定义如下:
H(y|x)=i=1npiH(y|x=xi) H ( y | x ) = ∑ i = 1 n p i H ( y | x = x i )

数据集的熵表征着其类别的不确定程度,而数据集关于某个特征的条件熵则表征着给定某个特征后,其类别的不确定程度。可以想见,数据集的熵与其关于某个特征的条件熵之差表征着这个特征的确定使数据集不确定性减少的程度,数据集的熵与条件熵的差值叫做信息增益,很容易理解,某个特征的信息增益可以反映这个特征对数据集的分类能力,信息增益越大,证明该特征能更好的对数据集进行分类。

信息增益:数据集 D D 的熵为 H ( D ) ,其关于其某个特征 Am A m 的条件熵为 H(D|Am) H ( D | A m ) ,则信息增益为 g(D,Am) g ( D , A m ) g(D,Am)=H(D)H(D|Am) g ( D , A m ) = H ( D ) − H ( D | A m )

对于训练样本集来说,其概率是由数据估计得到的,因此其熵与条件熵分别称为经验熵和经验条件熵。经验熵和经验条件熵的计算方式如下:

H(D)=k=1K|Ck||D|log2|Ck||D|g(D,Am)=H(D)H(D|Am)=H(D)i=1n|Di||D|H(Di)g(D,Am)=k=1K|Ck||D|log2|Ck||D|+i=1n|Di||D|k=1K|Dik||Di|log2|Dik||Di| H ( D ) = − ∑ k = 1 K | C k | | D | l o g 2 | C k | | D | g ( D , A m ) = H ( D ) − H ( D | A m ) = H ( D ) − ∑ i = 1 n | D i | | D | H ( D i ) g ( D , A m ) = − ∑ k = 1 K | C k | | D | l o g 2 | C k | | D | + ∑ i = 1 n | D i | | D | ∑ k = 1 K | D i k | | D i | l o g 2 | D i k | | D i |

其中 |D| | D | 表示数据集
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值