决策树是不是试图最大化信息增益或熵?

Posted

技术标签:

【中文标题】决策树是不是试图最大化信息增益或熵?【英文标题】:Are decision trees trying to maximize information gain or entropy?决策树是否试图最大化信息增益或熵? 【发布时间】:2014-01-07 16:44:03 【问题描述】:

我了解决策树试图将具有高熵的分类器放在决策树上。然而,信息增益是如何参与其中的呢?

信息增益定义为:

InformationGain = EntropyBefore - EntropyAfter

决策树是否尝试将信息增益低的分类器放在树的顶部?那么熵总是最大化而信息增益总是最小化?

对不起,我有点困惑。 谢谢!

【问题讨论】:

【参考方案1】:

恰恰相反。对于使用信息增益的决策树,算法选择提供最大信息增益的属性(这也是导致熵最大减少的属性)。

考虑一个简单的二分类问题,其中您有相同数量的来自 C_1 和 C_2 类的训练观察。在这种情况下,您从 1.0 的熵开始(因为从样本中随机抽取任一类的概率为 0.5)。现在考虑具有值 A_1 和 A_2 的属性 A。还假设 A_1 和 A_2 都对应于两个类的相等概率 (0.5):

P(C_1|A_1) = 0.5
P(C_2|A_1) = 0.5
P(C_1|A_2) = 0.5
P(C_2|A_2) = 0.5

该属性的整体熵没有变化,因此信息增益为 0。现在考虑属性 B,其值为 B_1 和 B_2,并假设 B 将完美地分离类:

P(C_1|B_1) = 0
P(C_2|B_1) = 1
P(C_1|B_2) = 1
P(C_2|B_2) = 0

由于 B 完美地分离了类,因此在 B 上分裂后的熵为 0(即信息增益为 1)。因此,对于本例,您将选择属性 B 作为根节点(无需选择其他属性,因为数据已经被 B 完美分类)。

决策树算法是“贪婪的”,因为它们总是选择能够产生最大信息增益的属性对于正在考虑的当前节点(分支),而不会在后续子分支之后重新考虑该属性被添加。所以回答你的第二个问题:决策树算法试图将具有最大信息增益的属性放在树的底部附近。请注意,由于算法的贪心行为,决策树算法不一定会产生一棵树,它可以提供最大可能的整体熵减少。

【讨论】:

你能举一个简单的例子说明贪心算法不能产生最佳编码吗?【参考方案2】:

不,您总是将具有高信息增益的节点放在树的顶部。但请记住,这是一个递归算法。

如果你有一张表有(比如说)五个属性,那么你必须首先计算这五个属性中每一个的信息,然后选择具有最高信息增益的属性。此时,您应该将正在开发的决策树视为具有最高节点的根,以及从该属性的值获取的具有 子表 的子节点。例如,如果它是二元属性,您将有两个孩子;每个都有剩余的四个属性;一个孩子将拥有对应于选择属性的所有元素为真,另一个所有元素对应于假。

现在,对于这些子节点中的每一个,您再次遍历并选择最高信息增益的属性,递归直到您无法继续。

通过这种方式,您拥有一棵树,它始终告诉您根据一个变量做出决定,该变量预计会为您提供最多信息同时考虑您已经做出的决定。

【讨论】:

以上是关于决策树是不是试图最大化信息增益或熵?的主要内容,如果未能解决你的问题,请参考以下文章

常见机器学习算法原理+实践系列4(决策树)

ID3决策树分析

大白话5分钟带你走进人工智能-第二十五节决策树系列之信息增益和信息增益率

决策树

5-2 决策树 信息增益的算法

Weka 中决策树的信息增益