决策树
作者: l i t t l e − x u little-xu little−xu
时间: 2021 / 1 / 18 2021/1/18 2021/1/18
基本流程
Conception
一般情况,一棵决策树包含一根根节点,若干个内部节点和若干个叶节点;叶节点对应决策结果,其他每个节点对应属性测试。举例,当我们买西瓜,可以从多方面色泽,根蒂,敲声,纹理,脐部,触感等方面来逐次判断他是否是一个好西瓜。而此时这些属性就类比决策树中的节点。
决策树学习的目的是产生一棵泛化能力强(处理未见示例能力强的决策树),分而治之
划分选择
决策树的分支节点所包含样本尽可能属于同一类别,即节点的"纯度"越来越高
信息增益
信息熵定义:
E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k log 2 p k \begin{aligned} Ent(D) = -\sum_{k=1}^{\lvert y \rvert}p_k\log_2p_k \end{aligned} Ent(D)=−k=1∑∣y∣pklog2pk
其中当前样本 D D D中第 k k k类样本所占比例为 p k ( k = 1 , 2 , ⋯ , ∣ y ∣ ) p_k(k=1,2,\cdots,\lvert \mathbf{y} \rvert) pk(k=1,2,⋯,∣y∣), E n t ( D ) Ent(D) Ent(D)的值越小,则 D D D的纯度越小.
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V D v D E n t ( D v ) \begin{aligned} Gain(D,a) = Ent(D)-\sum_{v=1}^{V}\cfrac{D^v}{D}Ent(D^v) \end{aligned} Gain(D,a)=Ent(D)−v=1∑VDDvEnt(Dv)
其中离散属性 a a a有 V V V个可能取值 { a 1 , a 2 , ⋯ , a V } \{a^1,a^2,\cdots,a^V\} {a1,a2,⋯,aV},就是对属性进行 v v v次划分,比如我们可以根据色则进行划分青绿,乌黑,浅白。第 v v v个分支节点包含 D D D所有在属性 a a a在属性 a a a上取值为 a v a^v av的样本,比如我们把 D D D中所有青绿的记为 D 青 绿 D^{青绿} D青绿。分枝结点赋予权重 ∣ D v ∣ ∣ D ∣ \cfrac{\lvert D^v \rvert}{\lvert D \rvert} ∣D∣∣Dv∣,计算出 D 青 绿 D^{青绿} D青绿的信息熵 E n t ( D v ) Ent(D^v) Ent(Dv)。则可以计算划分后信息熵的增加.
编号 | 色泽 | 根蒂 | 敲声 | 纹理 | 脐部 | 触感 | 好瓜 |
1 | 青绿 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
2 | 乌黑 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 是 |
3 | 乌黑 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
4 | 青绿 | 蜷缩 | 沉闷 | 清晰 | 凹陷 | 硬滑 | 是 |
5 | 浅白 | 蜷缩 | 浊响 | 清晰 | 凹陷 | 硬滑 | 是 |
6 | 青绿 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 是 |
7 | 乌黑 | 稍蜷 | 浊响 | 稍糊 | 稍凹 | 软粘 | 是 |
8 | 乌黑 | 稍蜷 | 浊响 | 清晰 | 稍凹 | 硬滑 | 是 |
9 | 乌黑 | 稍蜷 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 否 |
10 | 青绿 | 硬挺 | 清脆 | 清晰 | 平坦 | 软粘 | 否 |
11 | 浅白 | 硬挺 | 清脆 | 模糊, | 平坦 | 硬滑 | 否 |
12 | 浅白 | ,蜷缩 | 浊响 | 模糊 | 平坦 | 软粘 | 否 |
13 | 青绿 | 稍蜷 | 浊响 | 稍糊 | 凹陷 | 硬滑 | 否 |
14 | 浅白 | 稍蜷 | 沉闷 | 稍糊 | ,凹陷 | 硬滑 | 否 |
15 | 乌黑 | ,稍蜷 | 浊响 | 清晰 | 稍凹 | 软粘 | 否 |
16 | 浅白 | 蜷缩 | 浊响 | 模糊 | 平坦 | 硬滑 | 否 |
17 | 青绿 | 蜷缩 | 沉闷 | 稍糊 | 稍凹 | 硬滑 | 否 |
根节点包含 D D D中所有好瓜坏瓜样例,其中正例占 p 1 = 8 17 p_1=\cfrac{8}{17} p1=178,反例占 p 2 = 9 17 p_2=\cfrac{9}{17} p2=179,根节点信息熵为
E n t ( D ) = − ∑ k = 1 2 p k log 2 p k = − ( 8 17 log 2 8 17 + 9 17 log 2 8 17 ) = 0.998 \begin{aligned} Ent(D) = -\sum_{k=1}^{2}p_k\log_2p_k = -(\cfrac{8}{17}\log_2\cfrac{8}{17}+\cfrac{9}{17}\log_2\cfrac{8}{17}) = 0.998 \end{aligned} Ent(D)=−k=1∑2pklog2pk=−(178log2178+179log2178)=0.998
以色泽为属性
D 青 绿 D^{青绿} D青绿包含编号 { 1 , 4 , 6 , 10 , 13 , 17 } \{1,4,6,10,13,17\} {1,4,6,10,13,17},好瓜占 3 6 \cfrac{3}{6} 63,坏瓜占 3 6 \cfrac{3}{6} 63。
D 乌 黑 D^{乌黑} D乌黑包含编号 { 2 , 3 , 7 , 8 , 9 , 15 } \{2,3,7,8,9,15\} {2,3,7,8,9,15},好瓜占 4 6 \cfrac{4}{6} 64,坏瓜占 2 6 \cfrac{2}{6} 62。
D 浅 白 D^{浅白} D浅白包含编号 { 5 , 11 , 12 , 14 , 16 } , \{5,11,12,14,16\}, {5,11,12,14,16},好瓜占 1 5 \cfrac{1}{5} 51,坏瓜占 4 5 \cfrac{4}{5} 54。
则由信息熵的公式可以分别计算出
E n t ( D 青 绿 ) = − ( 3 6 log 2 3 6 + 3 6 log 2 3 6 ) = 1.0000 E n t ( D 乌 黑 ) = − ( 4 6 log 2 4 6 + 2 6 log 2 2 6 ) = 0.918 E n t ( D 青 绿 ) = − ( 1 5 log 2 1 5 + 4 5 log 2 4 5 ) = 0.722 \begin{aligned} Ent(D^{青绿}) & =-(\cfrac{3}{6}\log_2\cfrac{3}{6}+\cfrac{3}{6}\log_2\cfrac{3}{6}) = 1.0000 \\ Ent(D^{乌黑}) & =-(\cfrac{4}{6}\log_2\cfrac{4}{6}+\cfrac{2}{6}\log_2\cfrac{2}{6}) = 0.918 \\ Ent(D^{青绿}) & =-(\cfrac{1}{5}\log_2\cfrac{1}{5}+\cfrac{4}{5}\log_2\cfrac{4}{5}) = 0.722 \end{aligned} Ent(D青绿)Ent(D乌黑)Ent(D青绿)=−(63log263+63log263)=1.0000=−(64log264+62log262)=0.918=−(51log251+54log254)=0.722
则色泽的信息增益为
G a i n ( D , 色 泽 ) = E n t ( D ) − ∑ v = 1 3 D v D E n t ( D v ) = 0.998 − ( 6 17 × 1.000 + 6 17 × 0.918 + 5 17 × 0.722 ) = 0.109 \begin{aligned} Gain(D,色泽) & = Ent(D)-\sum_{v=1}^{3}\cfrac{D^v}{D}Ent(D^v) \\ & = 0.998-(\cfrac{6}{17}\times1.000+\cfrac{6}{17}\times0.918+\cfrac{5}{17}\times0.722) \\ & = 0.109 \end{aligned} Gain(D,色泽)=Ent(D)−v=1∑3DDvEnt(Dv)=0.998−(176×1.000+176×0.918+175×0.722)=0.109
同理可得
G a i n ( D , 根 蒂 ) = 0.143 ; G a i n ( D , 敲 声 ) = 0.141 ; G a i n ( D , 纹 理 ) = 0.381 ; G a i n ( D , 脐 部 ) = 0.289 ; G a i n ( D , 触 感 ) = 0.006 \begin{aligned} Gain(D,根蒂) & = 0.143; \quad Gain(D,敲声) = 0.141; \\ Gain(D,纹理) & = 0.381; \quad Gain(D,脐部) = 0.289; \\ Gain(D,触感) & = 0.006 \end{aligned} Gain(D,根蒂)Gain(D,纹理)Gain(D,触感)=0.143;Gain(D,敲声)=0.141;=0.381;Gain(D,脐部)=0.289;=0.006
注: I D 3 ID3 ID3决策树一般而言,信息增益越大,则意味着属性 a a a来进行的划分"纯度提升越大",所以选择属性 a ∗ = a r g m a x a ∈ A G a i n ( D , a ) a_*=\mathop{argmax}\limits_{a\in A}Gain(D,a) a∗=a∈AargmaxGain(D,a)划分
不难看出纹理的信息增益最大,意味着好瓜是最多的,所以选择纹理为划分属性使用 Typora 画图(类图、流程图、时序图)
以纹理为清晰为例
D 清 晰 D^{清晰} D清晰包含编号 { 1 , 2 , 3 , 4 , 5 , 6 , 8 , 10 , 15 } \{1,2,3,4,5,6,8,10,15\} {1,2,3,4,5,6,8,10,15},剩下属性集合为 { 色 泽 , 根 蒂 , 敲 声 , 脐 部 , 触 感 } \{色泽,根蒂,敲声,脐部,触感\} {色泽,根蒂,敲声,脐部,触感},计算出剩下各属性的信息增益
G a i n ( D 清 晰 , 色 泽 ) = 0.043 ; G a i n ( D 清 晰 , 根 蒂 ) = 0.458 ; G a i n ( D 清 晰 , 敲 声 ) = 0.331 ; G a i n ( D 清 晰 , 脐 部 ) = 0.458 ; G a i n ( D 清 晰 , 触 感 ) = 0.458 \begin{aligned} Gain(D^{清晰},色泽) & = 0.043; \quad Gain(D^{清晰},根蒂) = 0.458; \\ Gain(D^{清晰},敲声) & = 0.331; \quad Gain(D^{清晰},脐部) = 0.458; \\ Gain(D^{清晰},触感) & = 0.458 \end{aligned} Gain(D清晰,色泽)Gain(D清晰,敲声)Gain(D清晰,触感)=0.043;Gain(D清晰,根蒂)=0.458;=0.331;Gain(D清晰,脐部)=0.458;=0.458
因为根蒂,脐部,触感均取得最大信息增益,任选其一作属性划分。得到下图
增益率
顾名思义就是信息熵的增长快慢,若我们把编号也作为一个属性划分,则编号的信息熵是最大的,每个纯度达到最大,然而并不能对新样本进行预测,因此为了避免这种情况,所以我们引出了一个一个信息增益率概念。 C 4.5 C4.5 C4.5决策树算法是使用信息"增益率"来选择最优划分。增益率定义为
G a i n r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) \begin{aligned} Gain_ratio(D,a)=\cfrac{Gain(D,a)}{IV(a)} \end{aligned} Gainratio(D,a)=IV(a)Gain(D,a)
其中
I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log 2 ∣ D v ∣ ∣ D ∣ \begin{aligned} IV(a)=-\sum_{v=1}^{V}\cfrac{\lvert D^v \rvert}{\lvert D \rvert}\log_2{\cfrac{\lvert D^v \rvert}{\lvert D \rvert}} \end{aligned} IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣