决策树后剪枝主要通过极小化决策树整体损失函数来实现。决策树学习的目标是最小化公式7-1的损失函数,公式7-1的说明在这篇文章中:决策树的损失函数公式详细说明。公式7-16是公式7-1第一项。公式7-15是7-1第一项中的经验熵。在决策树剪枝部分遇到,对公式7-16和公式7-15做一下解释说明。
公式 7-16 进一步基于公式 7-15 扩展了整个决策树的经验熵(empirical entropy),用于衡量整个树模型中所有节点的不确定性。这是构建和优化决策树的重要指标,帮助算法选择最佳的分裂特征和分裂点。
公式 7-16 回顾
L ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) = − ∑ t = 1 ∣ T ∣ ∑ k = 1 K N t k log N t k N t L(T) = \sum_{t=1}^{|T|} N_t H_t(T) = -\sum_{t=1}^{|T|} \sum_{k=1}^{K} N_{tk} \log \frac{N_{tk}}{N_t} L(T)=t=1∑∣T∣NtHt(T)=−t=1∑∣T∣k=1∑KNtklogNtNtk
符号说明
- L ( T ) L(T) L(T):整个决策树 T T T 的损失函数(或总经验熵),衡量了决策树的整体复杂度或分类的不确定性。
- ∣ T ∣ |T| ∣T∣:决策树中的节点总数。
- N t N_t Nt:第 t t t 个节点中的样本数量。
- H t ( T ) H_t(T) Ht(T):第 t t t 个节点的经验熵,用公式 7-15 表示。
- N t k N_{tk} Ntk:在节点 t t t 中,属于类别 k k k 的样本数量。
- K K K:数据集中的类别数量(例如在二分类问题中, K = 2 K = 2 K=2)。
- log N t k N t \log \frac{N_{tk}}{N_t} logNtNtk:类别 k k k 在节点 t t t 中的相对比例的对数值。
公式的含义
公式 7-16 计算的是整个决策树 T T T 的经验熵(或损失),它通过计算所有节点的不确定性并将其加权求和来衡量决策树的整体分类质量。
公式的两部分解释:
-
第一部分 L ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) L(T) = \sum_{t=1}^{|T|} N_t H_t(T) L(T)=∑t=1∣T∣NtHt(T):
- 这部分表示将决策树中每个节点的经验熵 H t ( T ) H_t(T) Ht(T) 按节点中的样本数量 N t N_t Nt 加权求和。换句话说,节点中样本越多,它对整个树的不确定性的贡献越大。
- 每个节点的经验熵 H t ( T ) H_t(T) Ht(T) 是通过公式 7-15 计算的,它衡量了节点中样本分布的混乱程度。
-
第二部分 − ∑ t = 1 ∣ T ∣ ∑ k = 1 K N t k log N t k N t -\sum_{t=1}^{|T|} \sum_{k=1}^{K} N_{tk} \log \frac{N_{tk}}{N_t} −∑t=1∣T∣∑k=1KNtklogNtNtk:
- 这部分是经验熵 H t ( T ) H_t(T) Ht(T) 的展开式。对于每个节点 t t t,计算它的经验熵,即每个类别的样本比例的对数乘以该类别的样本数量。
- N t k N_{tk} Ntk 是节点 t t t 中属于类别 k k k 的样本数量, log N t k N t \log \frac{N_{tk}}{N_t} logNtNtk 是这个比例的对数。通过对每个类别进行求和,再对所有节点进行求和,得到整个决策树的总经验熵。
公式的直观解释
- 加权经验熵:公式 7-16 通过将每个节点的经验熵按节点中的样本数量加权求和,得到整个决策树的总经验熵。这意味着,包含更多样本的节点对整个树的经验熵贡献更大。
- 减少不确定性:决策树算法的目标是通过分裂减少每个节点的经验熵(不确定性),最终使得所有叶子节点尽可能纯净,即分类更准确。经验熵越小,说明树的分类越纯净。
举例说明
假设我们有一棵简单的决策树,其中有 3 个节点 t 1 t_1 t1、 t 2 t_2 t2、 t 3 t_3 t3。每个节点包含以下样本数和类别分布:
- t 1 t_1 t1:包含 100 个样本,其中 60 个样本属于类别 A,40 个样本属于类别 B。
- t 2 t_2 t2:包含 50 个样本,其中 30 个样本属于类别 A,20 个样本属于类别 B。
- t 3 t_3 t3:包含 30 个样本,其中 10 个样本属于类别 A,20 个样本属于类别 B。
1. 计算每个节点的经验熵 H t ( T ) H_t(T) Ht(T):
对于节点
t
1
t_1
t1:
H
t
1
(
T
)
=
−
(
60
100
log
60
100
+
40
100
log
40
100
)
H_{t_1}(T) = -\left( \frac{60}{100} \log \frac{60}{100} + \frac{40}{100} \log \frac{40}{100} \right)
Ht1(T)=−(10060log10060+10040log10040)
对于节点
t
2
t_2
t2:
H
t
2
(
T
)
=
−
(
30
50
log
30
50
+
20
50
log
20
50
)
H_{t_2}(T) = -\left( \frac{30}{50} \log \frac{30}{50} + \frac{20}{50} \log \frac{20}{50} \right)
Ht2(T)=−(5030log5030+5020log5020)
对于节点
t
3
t_3
t3:
H
t
3
(
T
)
=
−
(
10
30
log
10
30
+
20
30
log
20
30
)
H_{t_3}(T) = -\left( \frac{10}{30} \log \frac{10}{30} + \frac{20}{30} \log \frac{20}{30} \right)
Ht3(T)=−(3010log3010+3020log3020)
2. 计算决策树的总经验熵 L ( T ) L(T) L(T):
根据公式 7-16,整个决策树的总经验熵为:
L
(
T
)
=
N
t
1
H
t
1
(
T
)
+
N
t
2
H
t
2
(
T
)
+
N
t
3
H
t
3
(
T
)
L(T) = N_{t_1} H_{t_1}(T) + N_{t_2} H_{t_2}(T) + N_{t_3} H_{t_3}(T)
L(T)=Nt1Ht1(T)+Nt2Ht2(T)+Nt3Ht3(T)
即将每个节点的经验熵按样本数加权后相加,得到整个决策树的总经验熵。
经验熵在决策树中的作用
-
分裂标准:在构建决策树的过程中,算法会尝试不同的特征和分裂点,并计算分裂前后的经验熵。通过选择能最大化经验熵减少的特征和分裂点,算法可以更好地划分数据,使得叶子节点中的样本更加纯净,分类效果更好。
-
剪枝策略:公式 7-16 还可以用于决策树的剪枝过程中,帮助算法评估剪枝后的经验熵,避免过拟合。通过减少树的复杂度(减少节点数量),可以提高模型的泛化能力。
总结
- 公式 7-16 用于计算整个决策树的经验熵 L ( T ) L(T) L(T),它是决策树算法中用于评估分类效果的重要指标。
- 通过对所有节点的经验熵按样本数量加权求和,公式 7-16 衡量了决策树的整体分类不确定性。
- 决策树算法会通过最小化经验熵来选择最佳分裂点,从而优化树的结构,提升分类准确性。
公式 7-15 描述了决策树模型中的经验熵(empirical entropy),用来衡量数据的不确定性或分布的纯度。在构建决策树的过程中,经验熵是一个非常重要的指标,用于选择最优分裂点。公式 7-15 计算的是一个节点中所有样本的经验熵,具体如下:
公式 7-15 回顾
H t ( T ) = − ∑ k N t k N t log N t k N t H_t(T) = - \sum_{k} \frac{N_{tk}}{N_t} \log \frac{N_{tk}}{N_t} Ht(T)=−k∑NtNtklogNtNtk
符号说明
- H t ( T ) H_t(T) Ht(T):节点 t t t 中的经验熵。它衡量了在该节点中样本的纯度或不确定性。如果节点中的样本属于单一类别,则经验熵为 0;如果样本均匀分布在多个类别中,则经验熵最大。
- N t k N_{tk} Ntk:在节点 t t t 中,属于类别 k k k 的样本数量。
- N t N_t Nt:节点 t t t 中的样本总数量。即节点中所有类别的样本数量总和。
- N t k N t \frac{N_{tk}}{N_t} NtNtk:类别 k k k 在节点 t t t 中的样本占比(即样本数所占的比例)。这个比值表示类别 k k k 在当前节点中出现的频率。
- log N t k N t \log \frac{N_{tk}}{N_t} logNtNtk:类别 k k k 的对数值,用于放大或缩小类别比例对经验熵的贡献。
公式的含义
经验熵 H t ( T ) H_t(T) Ht(T) 衡量了一个节点中的样本分布情况。具体来说,它表示在该节点中,样本分类的混乱程度或不纯度。熵越大,说明样本分布越混乱;熵越小,说明样本分布越纯粹。
公式 7-15 通过以下步骤来计算:
- 对每一个类别
k
k
k:
- 首先计算类别 k k k 在节点 t t t 中的比例 N t k N t \frac{N_{tk}}{N_t} NtNtk,这表示节点中属于类别 k k k 的样本占比。
- 对这个比例取对数 log N t k N t \log \frac{N_{tk}}{N_t} logNtNtk,用来度量类别 k k k 的信息量。
- 将每个类别的比例和信息量相乘,然后对所有类别求和,得到节点 t t t 的经验熵 H t ( T ) H_t(T) Ht(T)。
这个公式反映了信息理论中的经典熵概念,描述了样本分类的不确定性。经验熵越高,说明节点中的样本分类越混乱,越不纯;而经验熵越低,说明节点中的样本分类越纯。
直观解释
- 熵为 0:如果一个节点中的样本都属于同一个类别,那么该节点是完全纯的,经验熵 H t ( T ) H_t(T) Ht(T) 为 0。
- 熵较高:如果节点中的样本均匀分布在多个类别中(即每个类别都有差不多一样多的样本),那么经验熵 H t ( T ) H_t(T) Ht(T) 会比较高,接近最大值,表示这个节点的样本不纯,分布比较混乱。
举例说明
假设我们有一个节点 t t t,其中有 100 个样本,这些样本属于两个类别:类别 A 和类别 B。样本分布如下:
- 类别 A 有 40 个样本。
- 类别 B 有 60 个样本。
那么根据公式 7-15,我们可以计算这个节点的经验熵:
-
计算类别 A 的比例 N t A N t = 40 100 = 0.4 \frac{N_{tA}}{N_t} = \frac{40}{100} = 0.4 NtNtA=10040=0.4。
-
计算类别 B 的比例 N t B N t = 60 100 = 0.6 \frac{N_{tB}}{N_t} = \frac{60}{100} = 0.6 NtNtB=10060=0.6。
-
计算熵:
H t ( T ) = − ( 0.4 log 0.4 + 0.6 log 0.6 ) H_t(T) = - \left( 0.4 \log 0.4 + 0.6 \log 0.6 \right) Ht(T)=−(0.4log0.4+0.6log0.6)
使用对数计算:
H t ( T ) = − ( 0.4 × ( − 0.916 ) + 0.6 × ( − 0.737 ) ) H_t(T) = - \left( 0.4 \times (-0.916) + 0.6 \times (-0.737) \right) Ht(T)=−(0.4×(−0.916)+0.6×(−0.737))H t ( T ) = − ( − 0.366 + ( − 0.442 ) ) = 0.808 H_t(T) = - \left( -0.366 + (-0.442) \right) = 0.808 Ht(T)=−(−0.366+(−0.442))=0.808
因此,这个节点的经验熵 H t ( T ) H_t(T) Ht(T) 为 0.808,表示该节点的样本有一定程度的混乱,分类不是完全纯净。
经验熵在决策树中的作用
在构建决策树时,算法会尝试选择能最大化信息增益(即熵减少)的特征和分裂点。经验熵 H t ( T ) H_t(T) Ht(T) 用来衡量每个节点的样本不确定性,并通过选择能够减少经验熵的分裂点来构建决策树,使得分裂后的子节点越来越纯,最终达到一个较为纯净的分类结果。
通过计算经验熵,决策树算法能够有效地判断数据的分裂效果,从而选择最优的分裂点和特征。