首页 > 编程语言 >详解决策树-决策树的生成ID3算法和C4.5算法【十分钟机器学习系列笔记】

详解决策树-决策树的生成ID3算法和C4.5算法【十分钟机器学习系列笔记】

时间:2022-10-23 10:35:08浏览次数:77  
标签:结点 frac 特征 32 ID3 算法 增益 决策树

视频作者:简博士 - 知乎简博士的个人空间_哔哩哔哩_bilibili

链接:【合集】十分钟 机器学习 系列视频 《统计学习方法》_哔哩哔哩_bilibili

原书:《统计学习方法》李航

 

ID3算法

输入:训练数据集$D$,特征集$A$,阈值$\epsilon$

输出:决策树$T$

 

![[附件/Pasted image 20221004110237.png|500]]

 

判断$T$是否需要选择特征生成决策树

  1. 若$D$中所有实例属于同一类$C_{k}$,则$T$为单结点树,并将类$C_{k}$作为该结点的类标记,返回$T$

       例如上图,类别全为是/否

  1. 若$A=\varnothing$,则$T$为单节点树,并将$D$中实例数最大的类$C_{k}$作为该结点的类标记,返回$T$

       例如上图,只有类别列,无其他任何特征

 

若不属于以上两种情况,计算特征$A$中各特征对$D$的信息增益

  1. 选择信息增益最大的特征$A_{g}$

       例如上图,之前算出$g(D,A_{3})$最大,因此我们选择有自己的房子为根节点特征

  1. 如果$A_{g}$的信息增益小于阈值$\epsilon$,则置$T$为单结点树,并将$D$中实例数最大的类$C_{k}$作为该结点的类标记,返回$T$

       例如,我们设$\epsilon =0.5$,由于之前计算$g(D,A_{3})=0.971-0.551=0.420$,因此我们认为该特征的分类效果并不够好,又因为该特征为最大值,因此其他特征分类效果不如该特征,所以返回树仍为单节点树

  1. 否则,对$A_{g}$的每一可能值$a_{i}$,依$A_{g}=a_{i}$将$D$分割为若干非空子集$D_{i}$,将$D_{i}$中是隶属最大的类作为标记,构建子结点,由结点及其子结点构成树$T$,返回$T$

  2. 对第$i$个子结点,以$D_{i}$为训练集,以$A-\left{A_{g}\right}$为特征集,递归的调用上述步骤,得到子树$T_{i}$,返回$T_{i}$

 

例:利用ID3算法建立决策树

前面我们已知知道了$g(D,A_{3})$最大,因此根节点特征为有自己的房子。图将训练数据集$D$划分为两个子集,$D_{31}=6$有自己的房子特征为是,$D_{32}=9$有自己的房子特征为否

按照上面的5. 我们选择$D_{32}$,返回1. ,显然不符合1. 2. 的要求,因此对于$D_{32}$需要从$A_{1}$年龄,$A_{2}$有工作,$A_{4}$信贷情况,通过计算信息增益,选择新特征。

我们设$D_{321}=4$为青年,$D_{322}=2$为中年,$D_{323}=3$为老年

$$

\begin{aligned}

H(D_{32})&=- \frac{6}{9}\log \frac{6}{9}- \frac{3}{9}\log \frac{3}{9}=0.918\

H(D_{32}|A_{1})&= \frac{4}{9}H(D_{321})+ \frac{2}{9}H(D_{322})+ \frac{3}{9}H(D_{323})\

H(D_{321})&= -\frac{1}{4}\log \frac{1}{4}- \frac{3}{4}\log \frac{3}{4}\

H(D_{322})&=0\

H(D_{323})&=- \frac{2}{3}\log \frac{2}{3}- \frac{1}{3}\log \frac{1}{3}\

H(D_{32}|A_{1})&=0.667\

g(D_{32}|A_{1})&=H(D_{32})-H(D_{32}|A_{2})=0.251

\end{aligned}

$$

同理对于$A_{2}$有工作,$A_{4}$信贷情况

$$

\begin{aligned}

g(D_{32},A_{2})&=H(D_{32})-H(D_{32}|A_{2})=0.918\

g(D_{32},A_{2})&=H(D_{32})-H(D_{32}|A_{3})=0.474

\end{aligned}

$$

因此我们选择信息增益最大的$A_{2}$有工作作为结点的特征。

由于$A_{2}$有两个可能的取值:一个对应"是",有3个样本,属于同一类,根据1. 要求,所以这是一个叶结点,类标记为"是";一个对应"否",同理,根据1. ,这也是一个叶结点,类标记为"否"

对于$A_{3}$另一个可能的取值"是",有6个样本,属于同一类,根据1. 要求,所以这是一个叶结点,类标记为"是"

因此生成决策树为,该决策树只用了两个特征,即有两个内部结点

![[附件/Pasted image 20221004153620.png|200]]

 

 

C4.5算法

C4.5算法与ID3算法类似,C4.5在生成的过程中,用信息增益比来选择特征

判断$T$是否需要选择特征生成决策树

  1. 若$D$中所有实例属于同一类$C_{k}$,则$T$为单结点树,并将类$C_{k}$作为该结点的类标记,返回$T$

  2. 若$A=\varnothing$,则$T$为单节点树,并将$D$中实例数最大的类$C_{k}$作为该结点的类标记,返回$T$

 

若不属于以上两种情况,计算特征$A$中各特征对$D$的信息增益比

  1. 选择信息增益比最大的特征$A_{g}$

  2. 如果$A_{g}$的信息增益比小于阈值$\epsilon$,则置$T$为单结点树,并将$D$中实例数最大的类$C_{k}$作为该结点的类标记,返回$T$

  3. 否则,对$A_{g}$的每一可能值$a_{i}$,依$A_{g}=a_{i}$将$D$分割为若干非空子集$D_{i}$,将$D_{i}$中是隶属最大的类作为标记,构建子结点,由结点及其子结点构成树$T$,返回$T$

  4. 对第$i$个子结点,以$D_{i}$为训练集,以$A-\left{A_{g}\right}$为特征集,递归的调用上述步骤,得到子树$T_{i}$,返回$T_{i}$

标签:结点,frac,特征,32,ID3,算法,增益,决策树
From: https://blog.51cto.com/u_15767241/5787185

相关文章