决策树

决策树

  • 树与二叉树
  • 基本流程
  • 划分选择
  • 剪枝处理
  • 连续值与缺失值处理

树与二叉树

树是有限元素的集合
  • 根结点、内部节点、叶结点
  • 父结点、子结点
  • 层次、深度
    img
二叉树
  • 每个结点最多只能有2个子结点
    img

简单实例

在这里插入图片描述
在这里插入图片描述

基本流程

在这里插入图片描述

决策树的生成是一个递归过程。在决策树基本算法中,有三种情形会导致递归返回

  • 当前结点包含的样本全属于同一类别,无需划分

  • 当前属性为空,或是所有样本在所有属性上取值相同,无需划分

    把当前结点标记为叶结点,并将其类别设定为该结点所含样本最多的类别

  • 当前结点包含的样本集合为空,不能划分

    把当前结点标记为叶结点,将其类别设定为其父结点所含样本最多的类别

划分选择

  • 信息增益 - > ID3

    属性A对训练数据集D的信息增益Gain(D,A)定义为集合D的经验熵Ent(D)与属性A给定条件下D的经验条件熵Ent(D|A)之差

    表示划分前后不确定性减少的程度,应选择信息增益最大的属性对样本进行划分

G a i n ( D , A ) = E n t ( D ) − E n t ( D ∣ A ) Gain(D,A)=Ent(D)-Ent(D|A) Gain(D,A)=Ent(D)Ent(DA)

E n t ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ Ent(D)=-\sum_{k=1}^{K}\frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|} Ent(D)=k=1KDCklog2DCk

E n t ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ E n t ( D i ) Ent(D|A)=\sum_{i=1}^{n}\frac{|D_i|}{|D|}Ent(D_i) Ent(DA)=i=1nDDiEnt(Di)

  • 信息增益比 - > C4.5

    以信息增益为划分指标,存在偏向选择取值较多的属性的问题

    属性A对训练数据集D的信息增益Gain(D,A)定义为其信息增益与训练数据集关于属性A的熵Ent(A)

G a i n _ r a t i o ( D , A ) = G a i n ( D , A ) E n t ( A ) Gain\_ratio(D,A)=\frac{Gain(D,A)}{Ent(A)} Gain_ratio(D,A)=Ent(A)Gain(D,A)

E n t ( A ) = − ∑ i = 1 V ∣ D i ∣ ∣ D ∣ l o g 2 ∣ D i ∣ ∣ D ∣ Ent(A)=-\sum_{i=1}^{V}\frac{|D_i|}{|D|}log_2\frac{|D_i|}{|D|} Ent(A)=i=1VDDilog2DDi

  • 基尼指数 - > CART

    描述数据集D的纯度,表示一个随机选中的样本在子集中被分错的可能性,应选择基尼指数最小的特征进行划分。
    基尼指数的定义为
    G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(p)=\sum_{k=1}^Kp_k(1-p_k)=1-\sum_{k=1}^Kp_k^2 Gini(p)=k=1Kpk(1pk)=1k=1Kpk2
    样本集合D的基尼指数
    G i n i ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 Gini(D)=1-\sum_{k=1}^{K}(\frac{|C_k|}{|D|})^2 Gini(D)=1k=1K(DCk)2
    按照特征A划分以后集合D的不确定性
    G i n i ( D , A ) = ∣ D 1 ∣ ∣ D ∣ G i n i ( D 1 ) + ∣ D 2 ∣ ∣ D ∣ G i n i ( D 2 ) Gini(D,A)=\frac{|D_1|}{|D|}Gini(D_1)+\frac{|D_2|}{|D|}Gini(D_2) Gini(D,A)=DD1Gini(D1)+DD2Gini(D2)
    CART是分类和回归树,这里只介绍分类树。由于CART是二叉树,在分裂时不仅要选择最优的特征,还要选择最优的二值切分点,在计算时要计算特征的全部取值对应的基尼指数。

决策树模型——决策树的生成

  • ID3
  • C4.5
  • CART
实例——以二分类为例

使用ID3算法生成决策树
在这里插入图片描述

首先计算属性“色泽”的信息增益:

E n t ( D ) = − ( 8 17 l o g 2 8 17 + 9 17 l o g 2 9 17 ) = 0.998 Ent(D)=-(\frac{8}{17}log_2\frac{8}{17}+\frac{9}{17}log_2\frac{9}{17})=0.998 Ent(D)=(178log2178+179log2179)=0.998

E n t ( D 1 ) = − ( 3 6 l o g 2 ( 3 6 ) + 3 6 l o g 2 ( 3 6 ) ) = 1.000 Ent(D_1)=-(\frac{3}{6}log_2(\frac{3}{6})+\frac{3}{6}log_2(\frac{3}{6}))=1.000 Ent(D1)=(63log2(63)+63log2(63))=1.000

E n t ( D 2 ) = − ( 4 6 l o g 2 ( 4 6 ) + 2 6 l o g 2 ( 2 6 ) ) = 0.918 Ent(D_2)=-(\frac{4}{6}log_2(\frac{4}{6})+\frac{2}{6}log_2(\frac{2}{6}))=0.918 Ent(D2)=(64log2(64)+62log2(62))=0.918

E n t ( D 3 ) = − ( 1 5 l o g 2 ( 1 5 ) + 4 5 l o g 2 ( 4 5 ) ) = 0.722 Ent(D_3)=-(\frac{1}{5}log_2(\frac{1}{5})+\frac{4}{5}log_2(\frac{4}{5}))=0.722 Ent(D3)=(51log2(51)+54log2(54))=0.722

G a i n ( D , 色 泽 ) = E n t ( D ) − [ 6 17 E n t ( D 1 ) + 6 17 E n t ( D 2 ) + 5 17 E n t ( D 3 ) ] = 0.109 Gain(D,色泽)=Ent(D)-[\frac{6}{17}Ent(D_1)+\frac{6}{17}Ent(D_2)+\frac{5}{17}Ent(D_3)]=0.109 Gain(D,)=Ent(D)[176Ent(D1)+176Ent(D2)+175Ent(D3)]=0.109

类似的,可计算其他属性的信息增益

G a i n ( D , 根 蒂 ) = 0.143 ; G a i n ( D , 敲 声 ) = 0.141 ; G a i n ( D , 纹 理 ) = 0.381 ; Gain(D,根蒂)=0.143;Gain(D,敲声)=0.141;Gain(D,纹理)=0.381; Gain(D,)=0.143;Gain(D,)=0.141;Gain(D,)=0.381;

G a i n ( D , 脐 部 ) = 0.381 ; G a i n ( D , 触 感 ) = 0.006 ; Gain(D,脐部)=0.381;Gain(D,触感)=0.006; Gain(D,)=0.381;Gain(D,)=0.006;

显然,属性“纹理”的信息增益最大,于是被选为划分属性。划分结果如下:
在这里插入图片描述

接下来进行进一步划分,最终结果如图
在这里插入图片描述

剪枝处理

  • 预剪枝 训练时间开销小,但有欠拟合的风险

    在决策树生成过程中,对每个结点在划分之前先进行估计,若当前结点的划分不能带来泛化性能提升,则停止划分并将当前结点标记为叶结点

  • 后剪枝 泛化性能更好,但训练时间开销大

    先生成一颗完整的决策树,然后自底向上的对叶结点进行考察,若将该结点对应的子树替换为叶结点带来泛化性能的提升,则将该结点替换为叶结点

举例来说,首先将西瓜数据集分成训练集和验证集
在这里插入图片描述

生成的未剪枝的决策树如下
在这里插入图片描述

预剪枝

在这里插入图片描述

后剪枝

在这里插入图片描述

连续值与缺失值处理

  • 连续值

    取每个区间的中点,找到其中信息增益最大的点,作为划分点。

    对连续属性A,可考察包含n-1个元素的候选划分点集合:
    T a = { a i + a i + 1 2 ∣ 1 ≤ i ≤ n − 1 } T_a=\{\frac{a^i+a^{i+1}}{2} | 1≤i≤n-1\} Ta={2ai+ai+11in1}
    然后选取最优的划分点进行样本集合划分:
    G a i n ( D , A ) = max ⁡ t ∈ T a G a i n ( D , A , t ) = max ⁡ t ∈ T a E n t ( D ) − ∑ λ ∈ { − , + } ∣ D t λ ∣ ∣ D ∣ E n t ( D t λ ) Gain(D,A)=\max_{t \in T_a}Gain(D,A,t)=\max_{t \in T_a}Ent(D)-\sum_{\lambda\in\{-,+\}}\frac{|D_t^\lambda|}{|D|}Ent(D_t^\lambda) Gain(D,A)=tTamaxGain(D,A,t)=tTamaxEnt(D)λ{,+}DDtλEnt(Dtλ)

在这里插入图片描述
需要注意的是,与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性。

  • 缺失值

    如果仅对无缺失值的样本进行学习,显然是对数据信息极大的浪费。

    两个问题:

    • 如何在属性值缺失的情况下进行划分属性选择?
    • 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?

    给定训练集 D D D和属性 a a a,令 D ~ \tilde{D} D~表示在属性 a a a上没有缺失值的样本子集。假定属性 a a a V V V个取值 { a 1 , a 2 , . . . , a V } \{a_1,a_2,...,a_V\} {a1,a2,...,aV},令 D ~ v \tilde{D}_v D~v表示 D ~ \tilde{D} D~中在属性 a a a上取值为 a v a_v av的样本子集, D ~ k \tilde{D}_k D~k表示 D ~ \tilde{D} D~中属于第 k k k类的样本子集。假定我们为每个样本 x x x赋予一个权重 w x w_x wx,并定义
    ρ = ∑ x ∈ D ~ w x ∑ x ∈ D w x \rho=\frac{\sum_{x\in \tilde{D}}w_x}{\sum_{x\in D}w_x} ρ=xDwxxD~wx

    ρ ~ k = ∑ x ∈ D ~ k w x ∑ x ∈ D ~ w x \tilde{\rho}_k=\frac{\sum_{x\in \tilde{D}_k}w_x}{\sum_{x\in \tilde{D}}w_x} ρ~k=xD~wxxD~kwx

    r ~ v = ∑ x ∈ D ~ v w x ∑ x ∈ D ~ w x \tilde{r}_v=\frac{\sum_{x\in \tilde{D}^v}w_x}{\sum_{x\in \tilde{D}}w_x} r~v=xD~wxxD~vwx

    这样就可将信息增益的公式推广为:

    G a i n ( D , a ) = ρ × G a i n ( D ~ , a ) = ρ × ( E n t ( D ~ ) − ∑ k = 1 K r ~ v E n t ( D ~ v ) ) Gain(D,a)=\rho×Gain(\tilde{D},a)=\rho×(Ent(\tilde{D})-\sum_{k=1}^{K}\tilde{r}^vEnt(\tilde{D}_v)) Gain(D,a)=ρ×Gain(D~,a)=ρ×(Ent(D~)k=1Kr~vEnt(D~v))

    其中

    E n t ( D ~ ) = − ∑ k = 1 K p ~ k l o g 2 p ~ k Ent(\tilde{D})=-\sum_{k=1}^{K}\tilde{p}_k log_2\tilde{p}_k Ent(D~=k=1Kp~klog2p~k

实例
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值