(《机器学习》完整版系列)第4章 线性模型——4.2 划分选择与剪枝(此事“信息量好大”,暗指该事件不平常)

在决策树算法的框架下,需要给出选择属性 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=1NP(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 0H(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=D1D2DN,对应的样本个数分解: 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=1NPklog2Pk(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=1NPklog2Pk(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=1VDDkEnt(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=1VDDkEnt(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=aAargmaxGain(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=aAargmaxGain_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(x1x2属于同一类别)=k=1YP(x1yk,x2yk)=k=1YP(x1yk)×P(x2yk)=k=1YPk×Pk其中,Pk由式(4.4)定义=k=1YPk2(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)=1k=1YPk2(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=aAargmaxEnt(D)k=1VDDkEnt(Dk)=argminaAk=1VDDkEnt(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=argminaAk=1VDDkGini(Dk)=argminaAGini_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所示,我们以椭圆表示叶子结点,方框表示非叶子结点。
图4.3 分类器f_1

图4.3 分类器f_1

用验证集测试该分类器 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 所示。
图4.4 分类器f_2

图4.4 分类器f_2

其中,由训练集分裂到结点{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左下角“子树”)。
图4.5 分类器f_3

图4.5 分类器f_3

其中,两个虚线框组成分类器 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 连续值的处理与缺失值的处理(现实很骨感:属性连续和属性缺失)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值