决策树——(二)决策树的生成与剪枝ID3,C4.5

决策树算法详解:ID3与C4.5的生成与剪枝
本文详细介绍了决策树的基本概念,包括信息熵、条件熵和信息增益,并通过实例展示了如何计算这些值。接着,文章解释了ID3算法和C4.5算法的决策树生成过程,指出ID3容易过拟合的问题,而C4.5通过使用信息增益比来改善这一问题。最后,讨论了决策树的剪枝方法,以防止过拟合,确保模型的泛化能力。

1.基本概念

在正式介绍决策树的生成算法前,我们先将之前的几个概念梳理一下:

1.1 信息熵

XXX是一个取有限个值的离散型随机变量,其分布概率为
P(X=xi)=pi,i=1,2,...,nP(X=x_i)=p_i,i=1,2,...,nP(X=xi)=pi,i=1,2,...,n

则随机变量XXX的熵定义为
H(X)=−∑i=1npilog⁡pi(1.1)H(X)=-\sum_{i=1}^np_i\log{p_i}\tag{1.1}H(X)=i=1npilogpi(1.1)

其中,若pi=0p_i=0pi=0,则定义0log⁡0=00\log0=00log0=0;且通常log⁡\loglog取2为底和eee为底时,其熵的单位分别称为比特(bit)或纳特(nat).如无特殊说明,默认2为底。

1.2 条件熵

设有随机变量(X,Y)(X,Y)(X,Y),其联合概率分布分
P(X=xi,Y=yi)=pij,i=1,2,...,n;  j=1,2,...,mP(X=x_i,Y=y_i)=p_{ij},i=1,2,...,n;\;j=1,2,...,mP(X=xi,Y=yi)=pij,i=1,2,...,n;j=1,2,...,m

条件熵H(Y∣X)H(Y|X)H(YX)表示在已知随机变量XXX的条件下,随机变量YYY的不确定性。其定义为
H(Y∣X)=∑i=1npiH(Y∣X=xi)(1.2)H(Y|X)=\sum_{i=1}^np_iH(Y|X=x_i)\tag{1.2}H(YX)=i=1npiH(YX=xi)(1.2)

其中,pi=P(X=xi),i=1,2,...,np_i=P(X=x_i),i=1,2,...,npi=P(X=xi),i=1,2,...,n
当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵与条件熵分别称之为经验熵(empirical entropy)和经验条件熵(empirical coditional entropy)。事实上我们在实际处理的时候确实时用的经验熵和经验条件熵,这一点同朴素贝叶斯中的处理一样。

1.3 信息增益

特征AAA对训练数据集DDD的信息增益d(D,A)d(D,A)d(D,A),定义为集合DDD的经验熵H(D)H(D)H(D)与特征AAA给定条件下DDD的经验条件熵H(D∣A)H(D|A)H(DA)之差,即
g(D,A)=H(D)−H(D∣A)(1.3)g(D,A)=H(D)-H(D|A)\tag{1.3}g(D,A)=H(D)H(DA)(1.3)

设训练集为DDD∣D∣|D|D表示其样本容量,即样本个数。设有KKK个类Ck,k=1,2,...,K;  ∣Ck∣C_k,k=1,2,...,K;\;|C_k|Ck,k=1,2,...,K;Ck为属于类CkC_kCk的样本的个数,即∑k=1K∣Ck∣=∣D∣\sum_{k=1}^K|C_k|=|D|k=1KCk=D.设特征AAAnnn个不同的取值a1,a2,...,an{a_1,a_2,...,a_n}a1,a2,...,an,根据特征AAA的取值将DDD划分为nnn个子集D1,D2,...,DnD_1,D_2,...,D_nD1,D2,...,Dn,∣Di∣|D_i|DiDiD_iDi的样本个数,即∑i=1n∣Di∣=∣D∣\sum_{i=1}^n|D_i|=|D|i=1nDi=D.记子集DiD_iDi中,属于类CkC_kCk的样本集合为DikD_{ik}Dik,即Dik=Di⋂CkD_{ik}=D_i\bigcap C_kDik=DiCk∣Dik∣|D_{ik}|DikDikD_{ik}Dik的样本个数. 则有:
(1)数据集DDD的经验熵H(D)H(D)H(D)
H(D)=−∑k=1K∣Ck∣∣D∣log⁡2∣Ck∣∣D∣(1.4)H(D)=-\sum_{k=1}^K\frac{|C_k|}{|D|}\log_2\frac{|C_k|}{|D|}\tag{1.4}H(D)=k=1KDCklog2DCk(1.4)

(2)特征值A对数据集DDD的经验条件熵H(D∣A)为H(D|A)为H(DA)
H(D∣A)=∑i=1n∣Di∣∣D∣H(Di)=−∑i=1n∣Di∣∣D∣∑k=1K∣Dik∣∣Di∣log⁡2DikDi(1.5)H(D|A)=\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i)=-\sum_{i=1}^n\frac{|D_i|}{|D|}\sum_{k=1}^K\frac{|D_{ik}|}{|D_i|}\log_2{\frac{D_{ik}}{D_i}}\tag{1.5}H(DA)=i=1nDDiH(Di)=i=1nDDik=1KDiDiklog2DiDik(1.5)

(3)信息增益
g(D,A)=H(D)−H(D∣A)(1.6)g(D,A)=H(D)-H(D|A)\tag{1.6}g(D,A)=H(D)H(DA)(1.6)

仅看上面的公式肯定会很模糊,还是举个例子来说明一下(将公式同下面的计算式子对比着看会更容易理解).下表是一个由15个样本组成的贷款申请训练数据集。数据包括4个特征,最后一列表示是否通过申请。
ID年龄有工作有自己的房子贷款情况类别1青年否否一般否2青年否否好否3青年是否好是4青年是是一般是5青年否否一般否6中年否否一般否7中年否否好否8中年是是好是9中年否是非常好是10中年否是非常好是11老年否是非常好是12老年否是好是13老年是否好是14老年是否非常好是15老年否否一般否 \begin{array}{c|cc} \hline ID&\text{年龄}&\text{有工作}&\text{有自己的房子}&\text{贷款情况}&\text{类别}\\ \hline 1&\text{青年}&\text{否}&\text{否}&\text{一般}&\text{否}\\ 2&\text{青年}&\text{否}&\text{否}&\text{好}&\text{否}\\ 3&\text{青年}&\text{是}&\text{否}&\text{好}&\text{是}\\ 4&\text{青年}&\text{是}&\text{是}&\text{一般}&\text{是}\\ 5&\text{青年}&\text{否}&\text{否}&\text{一般}&\text{否}\\ \hline 6&\text{中年}&\text{否}&\text{否}&\text{一般}&\text{否}\\ 7&\text{中年}&\text{否}&\text{否}&\text{好}&\text{否}\\ 8&\text{中年}&\text{是}&\text{是}&\text{好}&\text{是}\\ 9&\text{中年}&\text{否}&\text{是}&\text{非常好}&\text{是}\\ 10&\text{中年}&\text{否}&\text{是}&\text{非常好}&\text{是}\\ \hline 11&\text{老年}&\text{否}&\text{是}&\text{非常好}&\text{是}\\ 12&\text{老年}&\text{否}&\text{是}&\text{好}&\text{是}\\ 13&\text{老年}&\text{是}&\text{否}&\text{好}&\text{是}\\ 14&\text{老年}&\text{是}&\text{否}&\text{非常好}&\text{是}\\ 15&\text{老年}&\text{否}&\text{否}&\text{一般}&\text{否}\\ \hline \end{array} ID123456789101112131415年龄青年青年青年青年青年中年中年中年中年中年老年老年老年老年老年有工作有自己的房子贷款情况一般一般一般一般非常好非常好非常好非常好一般类别
(1)计算H(D)H(D)H(D)
H(D)=−(915log⁡2915+615log⁡2615)=0.971H(D)=-(\frac{9}{15}\log_2\frac{9}{15}+\frac{6}{15}\log_2\frac{6}{15})=0.971

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值