在决策树算法的框架下,需要给出选择属性
a
∗
a_*
a∗的准则(划分选择),不同的准则会得到不同的决策树。
信息熵:此事“信息量好大”,暗指该事件不平常
信息增益:调整分类后,纯度变化(增量)
划分选择
1.随机变量 x x x的信息熵
信息论认为:
(1)随机事件的发生会产生信息,且事件发生的概率越小,则事件发生产生的信息量越大,即二者具有反比关系(如,网络语言:此事“信息量好大”,暗指该事件不平常,就是这种观点的体现)。
(2)两个不相关的事件同时发生,信息量等于各自发生时的信息之和,即 h ( x , y ) = h ( x ) + h ( y ) h(x,y)=h(x)+h(y) h(x,y)=h(x)+h(y),对比独立事件的概率公式 P ( x , y ) = P ( x ) P ( y ) P(x,y)=P(x)P(y) P(x,y)=P(x)P(y),“由乘变加”可由取对数实现。
综合(1)(2),可由概率来定义信息量:
h
(
x
)
=
−
log
2
P
(
x
)
(4.1)
h(x)=-{\log} _2P(x) \tag{4.1}
h(x)=−log2P(x)(4.1)
其中,对数前取负号是使其值为正数(即
h
(
x
)
>
0
h(x)>0
h(x)>0),对数的单调性及前面的负号使其实现(1)所要求的反比关系,又对数使其实现了(2)所要求的“由乘变加”。
将式(4.1)的数学期望称为信息熵:
H
(
x
)
=
E
h
(
x
)
(4.2)
H(x)=\mathbb{E}\ h(x) \tag{4.2}
H(x)=E h(x)(4.2)
当
x
x
x有限个时,有
H
(
x
)
=
−
∑
i
=
1
N
P
(
x
i
)
log
2
P
(
x
i
)
(4.3)
H(x)=-\sum_{i=1}^NP(x_i){\log} _2P(x_i) \tag{4.3}
H(x)=−i=1∑NP(xi)log2P(xi)(4.3)
其中,
∑
i
=
1
N
P
(
x
i
)
=
1
\sum_{i=1}^NP(x_i)=1
∑i=1NP(xi)=1。 数学上可以证明
0
⩽
H
(
x
)
⩽
log
2
N
0\leqslant H(x)\leqslant {\log} _2^N
0⩽H(x)⩽log2N(当
P
(
x
i
)
=
1
N
,
i
=
1
,
2
,
⋯
,
N
P(x_i)=\frac{1}{N},i=1,2,\cdots,N
P(xi)=N1,i=1,2,⋯,N时取最大值
log
2
N
{\log} _2^N
log2N)。
2.样本集 D D D的信息熵
将样本集按类别分解:
D
=
D
1
⋃
D
2
⋃
⋯
⋃
D
N
D=D_1\bigcup D_2\bigcup\cdots\bigcup D_N
D=D1⋃D2⋃⋯⋃DN,对应的样本个数分解:
m
=
m
1
+
m
2
+
⋯
+
m
N
m=m_1+m_2+\cdots+m_N
m=m1+m2+⋯+mN,对应的样本占比为:
1
=
m
1
m
+
m
2
m
+
⋯
+
m
N
m
1=\frac{m_1}{m}+\frac{m_2}{m}+\cdots+\frac{m_N}{m}
1=mm1+mm2+⋯+mmN,记
P
k
=
m
k
m
,
(
k
=
1
,
2
,
⋯
,
N
)
(4.4)
P_k=\frac{m_k}{m},(k=1,2,\cdots,N) \tag{4.4}
Pk=mmk,(k=1,2,⋯,N)(4.4)
以样本标记作为随机变量
y
y
y,则
P
k
=
m
k
m
,
(
k
=
1
,
2
,
⋯
,
N
)
P_k=\frac{m_k}{m},(k=1,2,\cdots,N)
Pk=mmk,(k=1,2,⋯,N)可视为其概率分布的近似值,由此可得其信息熵为
H
(
y
)
=
−
∑
k
=
1
N
P
k
log
2
P
k
(4.5)
H(y)=-\sum_{k=1}^NP_k{\log} _2P_k \tag{4.5}
H(y)=−k=1∑NPklog2Pk(4.5)
而
y
y
y又反映
D
D
D中样本的类别占比情况,故可将此信息熵定义为
D
D
D的信息熵,记为
E
n
t
(
D
)
=
−
∑
k
=
1
N
P
k
log
2
P
k
(4.6)
\mathrm{Ent}(D)=-\sum_{k=1}^NP_k{\log} _2P_k \tag{4.6}
Ent(D)=−k=1∑NPklog2Pk(4.6)
其中,
N
=
∣
Y
∣
N=|\mathcal{Y} |
N=∣Y∣(类别数),
P
k
P_k
Pk由式(4.4)估计。
考察 D D D只有两类的情形:
(1)当 P 1 = 1 , P 2 = 0 P_1=1,P_2=0 P1=1,P2=0时, E n t ( D ) = 0 \mathrm{Ent}(D)=0 Ent(D)=0达到最小值;
(2)当 P 1 = P 2 = 1 2 P_1=P_2=\frac{1}{2} P1=P2=21时, E n t ( D ) = 1 \mathrm{Ent}(D)=1 Ent(D)=1达到最大值。
情形(1)只有一类样本,反映 D D D最纯,在此基础上对 D D D“掺沙子”(加入另一类样本),逐步使 E n t ( D ) \mathrm{Ent}(D) Ent(D)变大,当两类样本达到平衡(最不纯)时,即(2), E n t ( D ) \mathrm{Ent}(D) Ent(D)达到最大值。
故此 E n t ( D ) \mathrm{Ent}(D) Ent(D)可用于度量 D D D的纯度: E n t ( D ) \mathrm{Ent}(D) Ent(D)越小,纯度越高。
3.信息增益准则(提升纯度)
回到上篇博客的图4.1中属性 a ∗ a_* a∗的选择,我们希望选择 a ∗ a_* a∗分叉能最大地提升纯度。
依式(4.6)知,未分叉前的纯度为
E
n
t
(
D
)
\mathrm{Ent}(D)
Ent(D),分叉后各分支上子集的纯度为
E
n
t
(
D
k
)
,
k
=
1
,
2
,
⋯
,
V
\mathrm{Ent}(D^k),k=1,2,\cdots,V
Ent(Dk),k=1,2,⋯,V,我们用加权平均作为分叉后整体纯度:
∑
k
=
1
V
∣
D
k
∣
∣
D
∣
E
n
t
(
D
k
)
\begin{equation*} \sum_{k=1}^V\frac{|D^k|}{|D|}\mathrm{Ent}(D^k) \end{equation*}
k=1∑V∣D∣∣Dk∣Ent(Dk)
其中,
∣
D
k
∣
,
∣
D
∣
|D^k|,|D|
∣Dk∣,∣D∣分别为
D
k
,
D
D^k,D
Dk,D中的样本数。
分叉前后的纯度变化(增量)称为信息增益,记为
G
a
i
n
(
D
,
a
)
=
E
n
t
(
D
)
−
∑
k
=
1
V
∣
D
k
∣
∣
D
∣
E
n
t
(
D
k
)
(4.7)
\mathrm{Gain}(D,a)=\mathrm{Ent}(D)- \sum_{k=1}^V\frac{|D^k|}{|D|}\mathrm{Ent}(D^k) \tag{4.7}
Gain(D,a)=Ent(D)−k=1∑V∣D∣∣Dk∣Ent(Dk)(4.7)
当
a
a
a变化时,式(4.7)右边的第一项是固定的,第二项随
a
a
a的选择而变化,根据前述讨论,提高纯度就应选取
a
∗
a_*
a∗使第二项尽可能小,也即整个式子值尽可能大,即最佳选择为
a
∗
=
arg
max
a
∈
A
G
a
i
n
(
D
,
a
)
(4.8)
a_*=\mathop{\arg\max}\limits_{a \in A} \mathrm{Gain}(D,a) \tag{4.8}
a∗=a∈AargmaxGain(D,a)(4.8)
这就是选择
a
∗
a_*
a∗时的信息增益准则。
4.增益率准则
由【西瓜书式(4.3)(4.4)】定义的增益率,可以得到选择
a
∗
a_*
a∗的增益率准则。
a
∗
=
arg
max
a
∈
A
G
a
i
n
_
r
a
t
i
o
(
D
,
a
)
(4.8a)
a_*=\mathop{\arg\max}\limits_{a \in A} \mathrm{Gain\_ratio}(D,a) \tag{4.8a}
a∗=a∈AargmaxGain_ratio(D,a)(4.8a)
信息增益准则与增益率准则具有不同的偏好
为中和这两种偏好,可以将二者结合起来:
(1) 通过Gain找出高于平均水平的属性(集合);
(2) 再在这些候选属性中取Gain_ratio最高的。
5.基尼指数准则
下面我们换个思路来定义纯度。
(1)两样本属于同一类别的概率
P
(
x
1
与
x
2
属于同一类别
)
=
∑
k
=
1
∣
Y
∣
P
(
x
1
∈
y
k
,
x
2
∈
y
k
)
=
∑
k
=
1
∣
Y
∣
P
(
x
1
∈
y
k
)
×
P
(
x
2
∈
y
k
)
=
∑
k
=
1
∣
Y
∣
P
k
×
P
k
其中,
P
k
由式(4.4)定义
=
∑
k
=
1
∣
Y
∣
P
k
2
\begin{align} P(\text{$x_1$与$x_2$属于同一类别}) & =\sum_{k=1}^{|\mathcal{Y} |}P({x_1 \in y_k},{x_2 \in y_k})\notag \\ & =\sum_{k=1}^{|\mathcal{Y} |}P({x_1 \in y_k})\times P({x_2 \in y_k})\notag \\ & =\sum_{k=1}^{|\mathcal{Y} |}P_k\times P_k\qquad\text{其中,$P_k$由式(4.4)定义} \notag \\ & =\sum_{k=1}^{|\mathcal{Y} |}P_k^2 \tag{4.9} \end{align}
P(x1与x2属于同一类别)=k=1∑∣Y∣P(x1∈yk,x2∈yk)=k=1∑∣Y∣P(x1∈yk)×P(x2∈yk)=k=1∑∣Y∣Pk×Pk其中,Pk由式(4.4)定义=k=1∑∣Y∣Pk2(4.9)
(2)基尼值
在数据集 D D D中任取两个样本,它俩属于同一类别的概率越大,则 D D D的纯度越高。
将
D
D
D中任意两样本不属于同一类别的概率定义为基尼值
G
i
n
i
(
D
)
\mathrm{Gini}(D)
Gini(D),由式(4.9)有
G
i
n
i
(
D
)
=
1
−
∑
k
=
1
∣
Y
∣
P
k
2
\begin{align} \mathrm{Gini}(D)=1-\sum_{k=1}^{|\mathcal{Y} |}P_k^2 \tag{4.10} \end{align}
Gini(D)=1−k=1∑∣Y∣Pk2(4.10)
则基尼值
G
i
n
i
(
D
)
\mathrm{Gini}(D)
Gini(D)越小
D
D
D的纯度越高。
(3)基尼指数准则
将信息增益准则式(4.8)及式(4.7),变换一下形式:
a
∗
=
arg
max
a
∈
A
E
n
t
(
D
)
−
∑
k
=
1
V
∣
D
k
∣
∣
D
∣
E
n
t
(
D
k
)
=
arg
min
a
∈
A
∑
k
=
1
V
∣
D
k
∣
∣
D
∣
E
n
t
(
D
k
)
(
E
n
t
(
D
)
对变量
a
而言是常数,故弃掉了)
\begin{align} a_* & =\mathop{\arg\max}\limits_{a \in A} \mathrm{Ent}(D)- \sum_{k=1}^V\frac{|D^k|}{|D|}\mathrm{Ent}(D^k)\notag \\ & =\mathop{\arg\min}_{a \in A} \sum_{k=1}^V\frac{|D^k|}{|D|}\mathrm{Ent}(D^k) \tag{4.11} \\ & \quad \text{($\mathrm{Ent}(D)$对变量$a$而言是常数,故弃掉了)}\notag \end{align}
a∗=a∈AargmaxEnt(D)−k=1∑V∣D∣∣Dk∣Ent(Dk)=argmina∈Ak=1∑V∣D∣∣Dk∣Ent(Dk)(Ent(D)对变量a而言是常数,故弃掉了)(4.11)
因
E
n
t
(
D
)
\mathrm{Ent}(D)
Ent(D)与
G
i
n
i
(
D
)
\mathrm{Gini}(D)
Gini(D)都具有“值越小,
D
D
D越纯”的特点,故上式可类比地得到
a
∗
=
arg
min
a
∈
A
∑
k
=
1
V
∣
D
k
∣
∣
D
∣
G
i
n
i
(
D
k
)
=
arg
min
a
∈
A
G
i
n
i
_
i
n
d
e
x
(
D
,
a
)
\begin{align} a_* & =\mathop{\arg\min}_{a \in A} \sum_{k=1}^V\frac{|D^k|}{|D|}\mathrm{Gini}(D^k) \tag{4.12-} \\ & =\mathop{\arg\min}_{a \in A} \mathrm{Gini\_index}(D,a) \tag{4.12} \end{align}
a∗=argmina∈Ak=1∑V∣D∣∣Dk∣Gini(Dk)=argmina∈AGini_index(D,a)(4.12-)(4.12)
式(4.12)中定义了基尼指数
G
i
n
i
_
i
n
d
e
x
(
D
,
a
)
\mathrm{Gini\_index}(D,a)
Gini_index(D,a),依此式的划分即为基于基尼指数的最优属性选择。
剪枝
剪枝是对付“过拟合”的手段。
1.预剪枝:在决策树的生成过程中,不生成某一分枝,则视为对该分枝进行了“预剪枝”(实际上是“不长出”分枝,即作为叶子)。 在决策树算法【西瓜书图4.2】的第5行,“if语句”中加上“OR 不进行划分”,当然,要有对应的“不进行划分”的准则,【西瓜书图4.6】所示。
2.后剪枝:先生成完整树后,自底向上进行判断是否剪枝,【西瓜书图4.7】所示。
下面我们重点理解预剪枝原理【西瓜书图4.6】。
训练集【西瓜书表4.2上半部分】共有10个样本:
D
=
{
1
+
,
2
+
,
3
+
,
6
+
,
7
+
,
1
0
−
,
1
4
−
,
1
5
−
,
1
6
−
,
1
7
−
}
D=\{1^+,2^+,3^+,6^+,7^+,10^-,14^-,15^-,16^-,17^-\}
D={1+,2+,3+,6+,7+,10−,14−,15−,16−,17−}
其中,
1
+
1^+
1+表示编号为1的西瓜为好瓜,其余类推。 验证集【西瓜书表4.2下半部分】共有7个样本:
S
=
{
4
+
,
5
+
,
8
+
,
9
−
,
1
1
−
,
1
2
−
,
1
3
−
}
S=\{4^+,5^+,8^+,9^-,11^-,12^-,13^-\}
S={4+,5+,8+,9−,11−,12−,13−}。
初始属性集有6个属性:
A
=
{
色泽,根蒂,敲声,纹理,脐部,触感
}
A=\{\text{色泽,根蒂,敲声,纹理,脐部,触感}\}
A={色泽,根蒂,敲声,纹理,脐部,触感}
由前述局部图4.1(上一篇博)知,任一待分裂结点有 ( D , A ) (D,A) (D,A),我们仅需讨论根结点是否要生长,对于非根结点方法一样:因为我们可以把它视为“子树”的根,转化为对该子树的讨论。
(1)剪枝:若不进行划分,则作为叶结点。
这时决策树只有一个结点,因这10个样本中的好瓜与坏瓜各占一半,故需要使用偏好确定该叶结点的类别,如,将该叶结点标记为好瓜,学得的分类器为
f
1
f_1
f1,如图4.3所示,我们以椭圆表示叶子结点,方框表示非叶子结点。
用验证集测试该分类器 f 1 f_1 f1,预测结论:全是好瓜。 实际情况:3个好瓜,4个坏瓜;其精度为 3 7 = 42.9 % \frac{3}{7}=42.9\% 73=42.9%。
(2)不剪枝:若进行划分,由信息增益准则,应选
a
∗
=
脐部
a_*=\text{脐部}
a∗=脐部,则{2}划分为{2}{3}{4},为比较划分前后的情况,我们将划分后的{2}{3}{4}都视为叶子,主要是看看精度的变化。 如图4.4 所示。
其中,由训练集分裂到结点{2}上的子集为 { 1 + , 2 + , 3 + , 1 4 − } \{1^+,2^+,3^+,14^-\} {1+,2+,3+,14−},以样例多的类别作为该叶子结点的类别,即{2}为“好瓜”,同样方法得:{3}为“好瓜”、{4}为“坏瓜”({4}的训练子集为 { 1 0 − , 1 5 − } \{10^-,15^-\} {10−,15−}已是单一类别“坏瓜”,即真为叶子结点)。 由此得到的分类器为 f 2 f_2 f2(图中的虚线框)。
我们用验证集看看
f
2
f_2
f2的精度。
由表4.2最后一行即得
f
2
f_2
f2的精度为
5
7
=
71.4
%
\frac{5}{7}=71.4\%
75=71.4%。
(3)决策:比较剪枝后的精度 42.9 % 42.9\% 42.9%(如图4.3所示)和不剪枝的精度 71.4 % 71.4\% 71.4%(如图4.4所示),我们在结点{1}处的预剪枝决策为划分(不剪枝)。
(4)继续:对{2}、{3}再用上述方法进行决策(而{4}已是叶子结点,不用决策),直至树中无决策结点。
在此过程中,待决策结点(子树)的训练集 D D D、属性集 A A A和验证集 S S S是划分到该结点的相应部分(它是父结点各集划分出的子集)。 例如,结点{2}处各子集为 D = { 1 + , 2 + , 3 + , 1 4 − } , A = { 色泽,根蒂,敲声,纹理,触感 } , S = { 4 + , 5 + , 1 3 − } D=\{1^+,2^+,3^+,14^-\},A=\{\text{色泽,根蒂,敲声,纹理,触感}\},S=\{4^+,5^+,13^-\} D={1+,2+,3+,14−},A={色泽,根蒂,敲声,纹理,触感},S={4+,5+,13−}。
结点{2}视为子树的根结点,依前述(2)选择属性进行划分后得“局部图”(即图4.5左下角“子树”)。
其中,两个虚线框组成分类器 f 3 f_3 f3(分类器由树的所有叶子结点组成,而整体训练集要被这些叶子结点所覆盖)。
根据{3}的划分条件(脐部=凹陷),验证集【西瓜书表4.2下半部分】落入该子树的子验证集为 S = { 4 + , 5 + , 1 3 − } S=\{4^+,5^+,13^-\} S={4+,5+,13−},在该子树上的验证情况(只需要对落入子树上的子验证集验证即可,这就可以减少算计量,当然,也可以对整个验证集进行验证,【西瓜书图4.6右下角】的数据即是对整个验证集进行验证的数据):
(a)不划分:即图4.3左下角的{2},它为叶子结点,则预测 S = { 4 + , 5 + , 1 3 − } S=\{4^+,5^+,13^-\} S={4+,5+,13−}全为好瓜,而实际情况是 1 3 − 13^- 13−为坏瓜。 精确度为 2 3 \frac{2}{3} 32。
(b)划分:即图图4.5左下角“子树”,我们编制验证表:
由表4.3最后一行即得 f 3 f_3 f3的精度为 1 3 \frac{1}{3} 31。
比较划分和不划分的精度知,此处应决策(预剪枝决策)为“不划分”。
上述我们可以看到决策树上有两种决策:一是每个生长点的分叉属性的选择,二是每个非叶结点是否要生长的决策,后者即是预剪枝决策。
本文为原创,您可以:
- 点赞(支持博主)
- 收藏(待以后看)
- 转发(他考研或学习,正需要)
- 评论(或讨论)
- 引用(支持原创)
- 不侵权
上一篇:4.1 决策树算法(不是规划论中的决策树)
下一篇:4.3 连续值的处理与缺失值的处理(现实很骨感:属性连续和属性缺失)