决策树原理与实战

一、决策树的定义

      分类决策树模型是一种描述对实例进行分类的树形结构。 决策树由结点和有向边组成, 结点有两种类型:内部结点和叶节点,内 部节点表示一个特征或属性, 叶节点表示一个类。决策树(Decision Tree),又称为判定树,是一种以树结构(包括二叉树和多叉树)形式表达的预测分析模型。

二、决策树的结构

  • 根节点(Root Node)
    它表示整个样本集合,并且该节点可以进一步划分成两个或多个子集。
  • 决策结点(Decision Node)
    当一个子结点进一步被拆分成多个子节点时,这个子节点就叫做决策结点。
  • 叶子结点(Leaf/Terminal Node)
    无法再拆分的结点被称为叶子结点,被包含在该叶节点的数据属于该类别。
    在这里插入图片描述

三、决策树的原理

3.1 算法步骤

步骤 1: 将所有的数据看成是一个节点(根节点),进入步骤2;
步骤 2: 根据划分准则(划分准则即决策算法),从所有属性中挑选一个对节点进行分割,进入步骤3;
步骤3 : 生成若干个子节点,对每一个子节点进行判断,如果满足停止分裂的条件,进入步骤4;否则,进入步骤2;
步骤4:设置该节点是叶子节点,其输出的结果为该节点数量占比最大的类别。
注:在决策树基本算法中,有三种情形会导致递归返回:

  1. 当前结点包含的样本全属于同一类别,无需划分;
  2. 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
  3. 当前结点包含的样本集合为空,不能划分。

3.2 划分准则

      一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的"纯度"越来越高。以下是判断西瓜好坏的数据集。

编号色泽根蒂敲声纹理脐部触感好瓜
1-蜷缩浊响清晰凹陷硬滑
2乌黑蜷缩沉闷清晰凹陷-
3乌黑蜷缩-清晰凹陷硬滑
4青绿蜷缩沉闷清晰凹陷硬滑
5-蜷缩浊响清晰凹陷硬滑
6青绿稍蜷浊响清晰稍凹软粘
7乌黑稍蜷浊响清晰稍凹软粘
8乌黑稍蜷浊响-稍凹硬滑
9乌黑-沉闷稍糊稍凹硬滑
10青绿硬挺清脆-平坦软粘
11浅白硬挺清脆模糊平坦-
12浅白蜷缩-模糊平坦软粘
13-稍蜷浊响稍糊平坦硬滑
14浅白稍蜷沉闷稍糊凹陷硬滑
15乌黑稍蜷浊响清晰凹陷软粘
16浅白蜷缩浊响模糊凹陷硬滑
17青绿-沉闷稍糊稍凹硬滑

3.2.1 信息增益

信息熵:用来度量一个属性的信息量。
      假定S为训练集,S的目标属性C(即样本的标签) 具有m个可能的类标号值, C = { C 1 , C 2 , . . . , C m } C=\{C_1,C_2,...,C_m\} C={C1,C2,...,Cm},假定训练集S中, C i C_i Ci在所有样本中出现的频率为 p i p_i pi (i=1,2,…,m),则训练集S所包含的信息熵定义为:
E n t ( S ) = E n t ( p 1 , p 2 , . . . , p m ) = − ∑ i = 1 m p i log ⁡ 2 p i Ent(S)=Ent(p_1,p_2,...,p_m)=-\sum_{i=1}^mp_i\log_2p_i Ent(S)=Ent(p1,p2,...,pm)=i=1mpilog2pi
熵越小表示样本对目标属性的分布越纯,反之熵越大表示样本对目标属性分布越混乱。
实例
令西瓜数据集为S,其中有17个样本,目标属性“好瓜”有2个值{ C 1 C_1 C1=“是”, C 2 C_2 C2=“否”},17个样本的分布为:8个样本类标号为“是”,9个样本类标号取值为“否”。 C 1 C_1 C1=“是” 在所有样本S中出现的概率为 8 17 \frac8{17} 178 C 2 C_2 C2=“否” 在所有样本S中出现的概率为 9 17 \frac9{17} 179,因此数据集S的熵为:
E n t ( S ) = E n t ( 8 17 , 9 17 ) = − 8 17 log ⁡ 2 8 17 − 9 17 log ⁡ 2 9 17 = 0.9975 Ent(S) = Ent(\frac8{17},\frac9{17})=-\frac8{17}\log_2\frac8{17}-\frac9{17}\log_2\frac9{17}=0.9975 Ent(S)=Ent(178,179)=178log2178179log2179=0.9975
信息增益: 信息增益是划分前样本数据集的不纯程度(熵)和划分后样本数据集的不纯程度(熵)的差值。
假设划分前样本数据集为S,并用属性A来划分样本集S,则按属性A划分的信息增益Gain(S,A)为样本集S的熵减去按属性A划分S后的样本子集的熵:
G a i n ( S , A ) = E n t ( S ) − E n t A ( S ) Gain(S,A)=Ent(S)-Ent_A(S) Gain(S,A)=Ent(S)EntA(S)
按属性A划分S后的样本子集的熵定义如下:假定属性A有k个不同的取值,从而将S划分为k个样本子集 { S 1 , S 2 , . . . , S k } \{S_1,S_2,...,S_k\} {S1,S2,...,Sk},则按属性A划分S后的样本子集信息熵为:
E n t A ( S ) = ∑ i = 1 k ∣ S i ∣ ∣ S ∣ E n t ( S i ) Ent_A(S)=\sum_{i=1}^k\frac{|S_i|}{|S|}Ent(S_i) EntA(S)=i=1kSSiEnt(Si)
其中 ∣ S i ∣ |S_i| Si(i=1,2,…,k)为样本子集 S i S_i Si中包含的样本数,|S|为样本集S中包含的样本数。信息增益越大,说明属性A划分后的样本子集越纯,越有利于分类
实例
以西瓜数据集为例,设该数据集为S,假定用属性“脐部”(暂不考虑数据缺失的问题)来划分S,求S对属性“脐部”的信息增益。
(1) 首先由前例计算得到数据集S的熵值为0.9975。
(2)属性“脐部”有3个可能的取值{“凹陷”,“稍凹”,“平坦”},他将S划分为3个子集 { S 1 , S 2 , S 3 } \{S_1,S_2,S_3\} {S1,S2,S3} S 1 S_1 S1为“脐部”属性为“凹陷”的样本子集共有8个样本; S 2 S_2 S2为“脐部”属性为“稍凹”的样本子集共有5个样本; S 3 S_3 S3为“脐部”属性为“平坦”的样本子集共有4个样本。
对样本子集 S 1 S_1 S1,“好瓜”=“是”的样本有5个样本,“好瓜”=“否”的有3个样本,则:
E n t ( S 1 ) = − 5 8 log ⁡ 2 5 8 − 3 8 log ⁡ 2 3 8 = 0.9544 Ent(S_1)=-\frac58\log_2\frac58-\frac38\log_2\frac38=0.9544 Ent(S1)=85log28583log283=0.9544
对样本子集 S 2 S_2 S2,“好瓜”=“是”的样本有3个样本,“好瓜”=“否”的有2个样本,则:
E n t ( S 1 ) = − 3 5 log ⁡ 2 3 5 − 2 5 log ⁡ 2 2 5 = 0.9710 Ent(S_1)=-\frac35\log_2\frac35-\frac25\log_2\frac25=0.9710 Ent(S1)=53log25352log252=0.9710
对样本子集 S 3 S_3 S3,“好瓜”=“是”的样本有0个样本,“好瓜”=“否”的有4个样本,则:
E n t ( S 1 ) = − 0 4 log ⁡ 2 0 4 − 4 4 log ⁡ 2 4 4 = 0.000 Ent(S_1)=-\frac04\log_2\frac04-\frac44\log_2\frac44=0.000 Ent(S1)=40log24044log244=0.000
综上,利用属性“脐部”划分S后的熵为:
E n t 脐 部 ( S ) = ∑ i = 1 k ∣ S i ∣ ∣ S ∣ E n t ( S i ) = ∣ S 1 ∣ ∣ S ∣ E n t ( S 1 ) + ∣ S 2 ∣ ∣ S ∣ E n t ( S 2 ) + ∣ S 3 ∣ ∣ S ∣ E n t ( S 3 ) = 8 17 E n t ( S 1 ) + 5 17 E n t ( S 2 ) + 4 17 E n t ( S 3 ) = 0.4706 ∗ 0.9544 + 0.2941 ∗ 0.9710 + 0.2353 ∗ 0 = 0.7347 Ent_{脐部}(S)=\sum_{i=1}^k\frac{|S_i|}{|S|}Ent(S_i)=\frac{|S_1|}{|S|}Ent(S_1)+\frac{|S_2|}{|S|}Ent(S_2)+\frac{|S_3|}{|S|}Ent(S_3) \\ =\frac{8}{17}Ent(S_1)+\frac{5}{17}Ent(S_2)+\frac{4}{17}Ent(S_3) \qquad \qquad \quad\\ \quad\quad=0.4706*0.9544+0.2941*0.9710+0.2353*0=0.7347 Ent(S)=i=1kSSiEnt(Si)=SS1Ent(S1)+SS2Ent(S2)+SS3Ent(S3)=178Ent(S1)+175Ent(S2)+174Ent(S3)=0.47060.9544+0.29410.9710+0.23530=0.7347
以属性“脐部”划分集合S后的信息增益为:
G a i n ( S , “ 脐 部 ” ) = 0.9975 − 0.7347 = 0.2628 Gain(S,“脐部”)=0.9975-0.7347=0.2628 Gain(S,)=0.99750.7347=0.2628
注:

  • 约定p=0时,plogp=0;
  • 当S只含一类时(纯度最高),此时Ent(S)=0(最小值)。
  • 当S中所有类所占比例相同(纯度最低),此时Ent(S)= log ⁡ 2 k \log_2k log2k(最大值)。

3.2.2 增益率

      实际上,信息增益准则对可取值数目较多的属性有所偏好,可以试想,选择一个唯一对应一个样本的属性进行分类,每一类都是最纯的,对应的信息增益也是最大的,然而这样的划分无疑是不具备泛化能力的。基于此,著名的C4.5决策树算法不直接使用信息增益,而是使用“增益率”来选择最优划分属性:
G r a i n _ r a t i o ( S , A ) = G r a i n ( S , A ) I V ( A ) Grain\_ratio(S,A)=\frac{Grain(S,A)}{IV(A)} Grain_ratio(S,A)=IV(A)Grain(S,A)
I V ( A ) = − ∑ v = 1 V ∣ S v ∣ ∣ S ∣ log ⁡ 2 ∣ S v ∣ ∣ S ∣ IV(A)=-\sum_{v=1}^V\frac{|S^v|}{|S|}\log_2\frac{|S^v|}{|S|} IV(A)=v=1VSSvlog2SSv
其中, I V ( A ) IV(A) IV(A)称为A的“固有值”,A的可能取值数目越多, I V ( A ) IV(A) IV(A)的值通常越大。
实例
假设西瓜数据集S,以“脐部”属性A为例,由上例知道 G a i n ( S , A ) = 0.2628 Gain(S,A)=0.2628 Gain(S,A)=0.2628
属性“脐部”有3个可能的取值{“凹陷”,“稍凹”,“平坦”},其中“凹陷”有8个样本,“稍凹”有5个样本,“平坦”有4个样本。则有:
I V ( A ) = − 8 17 log ⁡ 2 8 17 − 5 17 log ⁡ 2 5 17 − 4 17 log ⁡ 2 4 17 = 1.5222 IV(A)=-\frac{8}{17}\log_2\frac{8}{17}-\frac{5}{17}\log_2\frac{5}{17}-\frac{4}{17}\log_2\frac{4}{17}=1.5222 IV(A)=178log2178175log2175174log2174=1.5222
G a i n _ r a t i o ( S , A ) = 0.2628 1.5222 = 0.1726 Gain\_ratio(S,A)=\frac{0.2628}{1.5222}=0.1726 Gain_ratio(S,A)=1.52220.2628=0.1726
      需注意的是,增益率准则对可取值数目较少的属性有所偏好,因此, C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的

3.2.3 基尼指数

CART决策树使用“基尼指数”来选择划分属性:
G i n i ( S ) = ∑ k = 1 ∣ γ ∣ ∑ k ′ ≠ k p k p k ′ = 1 − ∑ k = 1 ∣ γ ∣ p k 2 Gini(S)=\sum_{k=1}^{|\gamma|}\sum_{k'\neq k}p_kp_k\prime = 1-\sum_{k=1}^{|\gamma|}p_k^2 Gini(S)=k=1γk̸=kpkpk=1k=1γpk2
显然,Gini反映了从数据集S中随机抽取两个样本,其类别标记不一样的概率,因此,Gini越小,则S的纯度越高。
属性A的基尼指数定义为:
G i n i _ i n d e x ( S , A ) = ∑ v = 1 V ∣ S v ∣ ∣ S ∣ G i n i ( S v ) Gini\_index(S,A)=\sum_{v=1}^V\frac{|S^v|}{|S|}Gini(S^v) Gini_index(S,A)=v=1VSSvGini(Sv)
选择使上式最小的属性A作为划分属性。

3.2.4 剪枝处理

剪枝是决策树学习算法对付"过拟合"的主要手段.
过拟合原因:
1)噪声导致的过拟合:拟合了被误标记的样例,导致误分类。
2)缺乏代表性样本导致的过拟合:缺乏代表性样本的少量训练集作出的决策会出现过拟合。
3)多重比较造成的过拟合:复杂模型。

基本策略有"预剪枝" 和"后剪枝";

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

后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶结点进行考察,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。

判断决策树泛化性能是否提升:留出法,即预留一部分数据用作"验证集"以进行性能评估。

例如:在预剪枝中,对于每一个分裂节点,对比分裂前后决策树在验证集上的预测精度,从而决定是否分裂该节点。而在后剪枝中,考察非叶节点,对比剪枝前后决策树在验证集上的预测精度,从而决定是否对其剪枝。

两种方法对比:

1)预剪枝使得决策树的很多分支都没有"展开”,不仅降低过拟合风险,而且显著减少训练/测试时间开销;但,有些分支的当前划分虽不能提升泛化性能,但在其基础上进行的后续划分却有可能导致性能显著提高,即预剪枝基于"贪心"本质禁止这些分支展开,给预剪枝决策树带来了欠拟含的风险。

2)后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树,但后剪枝过程是在生成完全决策树之后进行的,并且要自底向上地对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。

3.2.5 特殊值处理

1、连续值
以上都是基于离散属性进行讨论,而连续属性的可取值数目不再有限, 因此,不能直接根据连续属性的可取值来对结点进行划分。此时需要进行连续属性离散化,最简单的策略是采用二分法对连续属性进行处理(C4 . 5)。
给定样本集S和连续属性a,假设a在S上出现了n个不同的取值,升序排列后记为: { a 1 , a 2 , . . . , a n } \{a^1,a^2,...,a^n\} {a1,a2,...,an}基于划分点t可将S分为S-(不大于t)和S+(大于t)两个子集,而对于相邻的属性取值 a i 和 a i + 1 {a^i}和{a^{i+1}} aiai+1,t在 [ a i , a i + 1 ) [a^i,a^{i+1}) [ai,ai+1)之间取任何值对分类结果(S-和S+)都是一样的,可直接取其中位点进行考虑,即 t = a i + a i + 1 2 t=\frac{a^i+a^{i+1}}2 t=2ai+ai+1。故,对连续属性a,可考察包含n-1个元素的候选划分点t集合:
T a = { a i + a i + 1 2 ∣ 1 ≤ i ≤ n − 1 } T_a=\{\frac{a^i+a^{i+1}}2| \quad 1\leq i \leq n-1\} Ta={2ai+ai+11in1}
于是,我们就可像离散属性值一样来考察这些划分点,选取最优的划分点进行样本集合的划分,例如,使用信息增益:
G a i n ( S , a ) = max ⁡ t ∈ T a G a i n ( S , a , t ) = max ⁡ t ∈ T a E n t ( S ) − ∑ λ ∈ { − , + } ∣ S t λ ∣ ∣ S ∣ E n t ( S t λ ) Gain(S,a)=\max \limits_{t \in T^a} Gain(S,a,t)=\max \limits_{t \in T^a}Ent(S)-\sum_{\lambda \in \{-,+\}}\frac{|S_t^{\lambda}|}{|S|}Ent(S_t^{\lambda}) Gain(S,a)=tTamaxGain(S,a,t)=tTamaxEnt(S)λ{,+}SStλEnt(Stλ)
即选择使信息增益最大的划分点进行划分。
注:
1)可将划分点设为该属性在训练集中出现的不大于中位点的最大值,从而使得最终决策树使用的划分点都在训练集中出现过。

2)与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性。
2、缺失值
缺失问题:即样本的某些属性值缺失。

面临问题:

1)如何在属性值缺失的情况下进行划分属性的选择?(比如“色泽”这个属性有的样本在该属性上的值是缺失的,那么该如何计算“色泽”的信息增益?)
2)给定划分属性,若样本在该属性上的值是缺失的,那么该如何对这个样本进行划分?(即到底把这个样本划分到哪个结点里?)

解决方法:(C4.5)
给定训练集S和属性a,仅对S中在属性a上没有缺失值的样本子集 S ~ \tilde{S} S~,来判断属性a的优劣。假定我们为每个样本x赋予一个权重w(x)(初始化为1),定义:

  • ρ \rho ρ:表示无缺失值样本所占的比例。
  • ρ ~ k \tilde{\rho}_k ρ~k:表示无缺失值样本中第K类所占的比例。
  • r ~ k \tilde r_k r~k:表示无缺失值样本中在a上取值为 a v a^v av的样本所占的比例。

由以上定义,将信息增益推广为:
G a i n ( S , a ) = ρ × G a i n ( S ~ , a ) = ρ × ( E n t ( S ~ ) − ∑ v = 1 V r ~ v E n t ( S ~ v ) ) Gain(S,a)=\rho \times Gain(\tilde{S},a) =\rho \times\left(Ent(\tilde{S})-\sum_{v=1}^V\tilde{r}_vEnt(\tilde{S}^v)\right) Gain(S,a)=ρ×Gain(S~,a)=ρ×(Ent(S~)v=1Vr~vEnt(S~v))
其中,
E n t ( S ~ ) = − ∑ k = 1 ∣ γ ∣ p ~ k log ⁡ 2 p ~ k Ent(\tilde{S})=-\sum_{k=1}^{|\gamma|}\tilde{p}_k\log_2\tilde{p}_k Ent(S~)=k=1γp~klog2p~k
对于问题2),若样本x在a上的取值缺失,则将x同时划入所有子节点,且样本权值对应于属性值 a v a^v av调整为 r ~ v ⋅ w ( x ) \tilde{r}_v\cdot w(x) r~vw(x),即让同一个样本以不同概率划入不同的子节点中去。
以西瓜数据集为例:

编号色泽根蒂敲声纹理脐部触感好瓜
1-蜷缩浊响清晰凹陷硬滑
2乌黑蜷缩沉闷清晰凹陷-
3乌黑蜷缩-清晰凹陷硬滑
4青绿蜷缩沉闷清晰凹陷硬滑
5-蜷缩浊响清晰凹陷硬滑
6青绿稍蜷浊响清晰稍凹软粘
7乌黑稍蜷浊响清晰稍凹软粘
8乌黑稍蜷浊响-稍凹硬滑
9乌黑-沉闷稍糊稍凹硬滑
10青绿硬挺清脆-平坦软粘
11浅白硬挺清脆模糊平坦-
12浅白蜷缩-模糊平坦软粘
13-稍蜷浊响稍糊平坦硬滑
14浅白稍蜷沉闷稍糊凹陷硬滑
15乌黑稍蜷浊响清晰凹陷软粘
16浅白蜷缩浊响模糊凹陷硬滑
17青绿-沉闷稍糊稍凹硬滑

以属性“色泽”为例,根节点包含全部17个样例,各样本初始权重为1,该属性上无缺失的样例子集包含编号为{2 ,3 ,4, 6 , 7, 8, 9 , 10, 11 , 12 , 14, 15, 16, 17}的14个样例,其信息熵为:
E n t ( S ~ ) = − ∑ k = 1 2 p ~ k log ⁡ 2 p ~ k = − ( 6 14 log ⁡ 2 6 14 + 8 14 log ⁡ 2 8 14 ) = 0.985 Ent(\tilde{S})=-\sum_{k=1}^2\tilde{p}_k\log_2\tilde{p}_k \\ \qquad\qquad\qquad\qquad\qquad\qquad \quad = -\left(\frac6{14}\log_2\frac6{14}+\frac8{14}\log_2\frac8{14}\right) =0.985 Ent(S~)=k=12p~klog2p~k=(146log2146+148log2148)=0.985
对应的属性取值为“青绿”,“乌黑”,“浅白”的样本子集的信息熵分别为:
E n t ( S ~ 1 ) = − ( 2 4 log ⁡ 2 2 4 + 2 4 log ⁡ 2 2 4 ) = 1.000 Ent(\tilde{S}^1)= -\left(\frac24\log_2\frac24+\frac24\log_2\frac24\right)=1.000 Ent(S~1)=(42log242+42log242)=1.000
E n t ( S ~ 2 ) = − ( 4 6 log ⁡ 2 4 6 + 2 6 log ⁡ 2 2 6 ) = 0.918 Ent(\tilde{S}^2)= -\left(\frac46\log_2\frac46+\frac26\log_2\frac26\right)=0.918 Ent(S~2)=(64log264+62log262)=0.918
E n t ( S ~ 3 ) = − ( 0 4 log ⁡ 2 0 4 + 4 4 log ⁡ 2 4 4 ) = 0.000 Ent(\tilde{S}^3)= -\left(\frac04\log_2\frac04+\frac44\log_2\frac44\right)=0.000 Ent(S~3)=(40log240+44log244)=0.000
因此,非缺失样本子集的信息增益为:
G a i n ( S ~ , 色 泽 ) = E n t ( S ~ ) − ∑ v = 1 3 r ~ v E n t ( S ~ v ) = 0.985 − ( 4 14 × 1.000 + 6 14 × 0.918 + 4 14 × 0.000 ) = 0.306 Gain(\tilde{S},色泽)=Ent(\tilde{S})-\sum_{v=1}^3\tilde{r}_vEnt(\tilde{S}^v) \\ \qquad\qquad\qquad\qquad\qquad\qquad \quad=0.985-\left(\frac4{14}\times 1.000+\frac6{14}\times 0.918+\frac4{14}\times 0.000\right) =0.306 Gain(S~,)=Ent(S~)v=13r~vEnt(S~v)=0.985(144×1.000+146×0.918+144×0.000)=0.306
从而,计算得所有样本集的信息增益为:
G a i n ( S , 色 泽 ) = ρ × G a i n ( S ~ , 色 泽 ) = 14 17 × 0.036 = 0.252 Gain(S,色泽)=\rho \times Gain(\tilde{S},色泽)=\frac{14}{17} \times 0.036=0.252 Gain(S,)=ρ×Gain(S~,)=1714×0.036=0.252
类似地可计算出其他所有属性在S上的信息增益:
G a i n ( S , 色 泽 ) = 0.252 G a i n ( S , 根 蒂 ) = 0.171 G a i n ( S , 敲 声 ) = 0.145 G a i n ( S , 纹 理 ) = 0.424 G a i n ( S , 脐 部 ) = 0.289 G a i n ( S , 触 感 ) = 0.006 Gain(S,色泽)= 0.252 \qquad Gain(S,根蒂)= 0.171 \\ Gain(S,敲声)= 0.145 \qquad Gain(S,纹理)= 0.424\\Gain(S,脐部)= 0.289 \qquad Gain(S,触感)= 0.006 Gain(S,)=0.252Gain(S,)=0.171Gain(S,)=0.145Gain(S,)=0.424Gain(S,)=0.289Gain(S,)=0.006
选择信息增益最大对应的属性“纹理”进行划分,划分结果为:
“清晰”分支:编号为{1 ,2 ,3 ,4, 5 ,6 ,15}的样本
“稍糊”分支:编号为{7 ,9, 13, 14, 17}的样本
“模糊”分支:编号为{11 ,12, 16}的样本
缺失样本:{8},同时进入三个分支中,权重分别调整为7/15,5/15和3/15;编号{10}类似。

3.2.6 泛化误差估计

1、再代入估计

再代入估计方法假设训练数据集可以很好地代表整体数据,因此,可以使用训练误差(再代入误差)提供对泛化误差的乐观估计。此情形下,决策树算法将简单地选择产生最低训练误差的模型作为最终的模型,尽管,使用训练误差通常是泛化误差的一种很差的估计。

2、结合模型复杂度

根据奥卡姆剃刀原则:“给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取”,复杂模型中的附加成分很大程度上是基于对偶然的拟合。

以下是把模型复杂度与模型评估结合在一起的方法:

悲观误差评估

使用训练误差与模型复杂度罚项的和来计算泛化误差,如:

设n(t)是结点t分类的训练记录数,e(t)是被误分类的记录数,则决策树T的悲观误差可表示为:
e g ( T ) = ∑ i = 1 k [ e ( t i ) + Ω ( t i ) ] ∑ i = 1 k n ( t i ) = e ( T ) + Ω ( T ) N t e_g(T)=\frac{\sum_{i=1}^k[e(t_i)+\Omega(t_i)]}{\sum_{i=1}^kn(t_i)}=\frac{e(T)+\Omega(T)}{N_t} eg(T)=i=1kn(ti)i=1k[e(ti)+Ω(ti)]=Nte(T)+Ω(T)
其中,k是决策树的叶结点数,e(T)是决策树的总训练误差, Ω ( T i ) \Omega(T_i) Ω(Ti)是每个叶结点对应的罚项。例:假设有如下决策树,已知其误分类率为6/24,每个结点的惩罚项设为0.5,则其悲观误差为:
在这里插入图片描述
注: 关于惩罚项的理解:对于二叉树来说,0.5的惩罚项意味着只要至少能够改善一个训练记录的分类,结点就应该分裂,因为分裂一个结点等价于总误差增加0.5,代价比犯一个训练错误小。而如果令惩罚项为1,说明除非能减少一个以上训练记录的误分类,否则结点不应当分裂。
3、使用验证集

此方法中,不使用训练集来估计泛化误差,而是把原始数据集分为训练集和验证集,验证集用于估计泛化误差。通常是通过对算法进行调参,直到算法产生的模型在验证集上达到最低的错误率。

四、决策树实战战

实现代码参考:决策树实战

五、参考

【1】CSDN-markdown语法之如何使用LaTeX语法编写数学公式
【2】文刀煮月-决策树
【3】决策树(decision tree)(四)——缺失值处理
【4】https://github.com/apachecn/AiLearning/tree/master/docs/ml
【5】《机器学习》作者:周志华

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值