我先解释一下决策树的熵的概念:
熵是一组元素的所谓杂质度量。杂质 - 与纯度相反 - 是指决策类别(或类别标签)在集合内的分布。最初,表格中的每一行都是一个元素,您的元素集是表格的所有行。如果这个集合只包含相同的类标签,则称为纯集合;如果它包含相同比例的所有不同类标签,则称为不纯集合。转换为熵值(记住作为杂质度量,集合在后一种情况下具有最高可能值,在前一种情况下(只是相同的类标签)具有最低值。熵的最低可能值为 0。
因此,让我们选择一个视觉表示来说明什么是真正重要的,什么对熵无关紧要。
1)您从包含以下类标签的初始表开始:

请注意,对于计算熵,其余属性、属性值都不重要,行的顺序也不重要(熵是一组元素的度量)
2)您将不同的类标签转换为不同的颜色

3)因此,您只需为每个类标签(=元素)绘制一个圆圈(“球”),而不是这个带有彩色类标签的表

现在你把所有的球都扔进一个袋子里。给你!集合中的元素表示为袋子中的球。如果您打开袋子并查看它,您可能会看到
- 只是相同颜色的球-> 一种纯色。熵说,它一点也不纯,我给它一个零!熵 = 0
- 相同数量的不同颜色的球 --> 看起来一点也不纯净,很不纯净!熵将最高可能值分配给该集合(袋子)。可能的最高熵值取决于类标签的数量。如果您只有两个,则最大熵为 1。在您的情况下,您有 4 个不同的类别标签,因此最大熵将是例如,如果您有 12 个球和每种颜色的 3 个球。4 类集合的最大熵为 2。
- 以上都不是。那么你的熵在这两个值之间。如果一种颜色占主导地位,那么熵将接近 0,如果颜色非常混合,那么它接近最大值(在您的情况下为 2)。
决策树如何使用熵?
好吧,首先你计算整个集合的熵。那个杂质是你的参考。你的决策树试图实现的是减少整个集合的杂质。因此,给定属性的信息增益是通过获取整个集合的熵并减去通过将整个集合分解为每个属性类别而获得的集合熵来计算的。为了确保只有几个元素的集合不会获得与具有许多元素的集合相同的权重,集合的熵乘以它们的相对频率。
回到这个例子,为了计算增益(S,父母),您需要计算这两个集合的加权熵:设置 1 = 具有类别(父)的所有行 = 是,设置 2 = 具有类别(父)的所有行= 否)。
Set 1 指的是五行,所有的决策类别 = 电影院(只有 5 个橙色球!)所以重量是 10 行中的 5 行 = 5/10 = 0.5。熵为 0(完全纯)或通过应用公式:

你有所有类标签的总和,所以 n = 4。所以你为每个 i 分配一个类标签。例如
因为 i = 1 是电影院: - (5/5 * log(3/3) = - (1 * log(1)) = - (1*0) = 0
因为 i = 2 是网球: - (0/5 * log(0/3) = - (0 * log(0)) = 0
对于 i = 3 留在: - (0/5 * log(0/3) = - (0 * log(0)) = 0
对于 i = 4 正在购物: - (0/5 * log(0/3) = - (0 * log(0)) = 0
所以四项之和为 0。0 乘以权重 0.5 等于 0。
Set 2 也指 5 行,具有决策类别 = 1*cinema, 2*tennis, 1*stay in, 1*shopping 所以权重也是 10 行中的 5 行 = 5/10 = 0.5。应用公式:
对于 i = 1 是电影院: - (1/5 * log(1/5) = - (0.2 * -2,32) = 0.46
对于 i = 2 是网球: - (2/5 * log(2/5) = - (0.4 * -1,32) = 0.53
对于 i = 3 留在: - (1/5 * log(1/5) = - (0.2 * -2,32) = 0.46
对于 i = 4 正在购物: - (1/5 * log(1/5) = - (0.2 * -2,32) = 0.46
所以四个之和是 1.92。1.92 乘以权重 0.5 = 0.96。因此,该属性的增益为:初始熵 - 所有属性类别的加权熵:1.57 - 0 - 0.96 = 0.61。
对于其他属性,您执行相同的计算。