【发布时间】:2016-07-08 20:08:08
【问题描述】:
为什么我们要选择“最佳”属性?如果我们从任何其他属性中进行选择,会有什么不同吗?
【问题讨论】:
标签: machine-learning decision-tree
为什么我们要选择“最佳”属性?如果我们从任何其他属性中进行选择,会有什么不同吗?
【问题讨论】:
标签: machine-learning decision-tree
首先,让我们明确“最佳”属性在决策树中的含义 - 这是“最佳”对可用训练示例进行分类的属性。为了定义“最佳”,需要熟悉两个术语 - 熵和信息增益。熵是信息论中的一个术语——它是一个数字,表示一组示例基于其目标类的异构程度。熵的另一个观点 - 它是从一组示例中对随机示例的类别进行编码所需的位数。另一方面,信息增益显示了如果选择特定属性,一组示例的熵将减少多少。另一种观点 - 它显示如果选择特定属性,表示随机示例的类所需的位数减少。
那么,为什么我们要根据训练样本选择“最佳”属性呢?简单的答案是因为这就是构建决策树的算法的工作原理——它搜索所有可能的决策树,并选择第一个正确分类训练示例的决策树,使用简单到复杂的搜索。由于基本实现不包括任何重新访问和更改早期决策的机制,因此使用贪婪方法而不是随机方法是有意义的。
这里有一个简单的例子来演示在构建决策树时不选择“最佳”属性的后果。假设我们有以下具有 Exam、Friends、Weather 和目标 Activity 属性的训练示例。这些示例根据是否即将举行考试、朋友是否有空以及天气是晴天还是雨天来描述首选活动。
╔══════╦═════════╦═════════╦══════════╗
║ Exam ║ Friends ║ Weather ║ Activity ║
╠══════╬═════════╬═════════╬══════════╣
║ yes ║ yes ║ sunny ║ study ║
║ no ║ yes ║ sunny ║ picnic ║
║ yes ║ no ║ rain ║ study ║
║ yes ║ yes ║ rain ║ study ║
║ no ║ yes ║ rain ║ play ║
║ no ║ no ║ rain ║ play ║
╚══════╩═════════╩═════════╩══════════╝
当我们进行数学运算时,我们最终会得到以下数字来获取信息:
IG(D, Exam) ~ 1
IG(D, Friends) ~ 0.13
IG(D, Weather) ~ 0.46
为决策树的根选择的“最佳”属性是Exam。下一步是决定在即将有考试和没有考试时选择哪个属性。马上就要考试了,活动总是学习,所以没有必要进一步探索。近期没有考试时,我们需要计算选择Friends和Weather的信息增益:
IG(D-No-Exam, Friends) ~ 0.25
IG(D-No-Exam, Weather) ~ 0.92
按照与之前相同的策略,我们将选择天气,最终决策树将如下所示:
Exam?
/ \
yes no
/ \
STUDY Weather?
/ \
sunny rain
/ \
PICNIC PLAY
现在让我们构建一个决策树,对示例进行分类,但使用不同的根 - Friends,并在需要的地方随机选择属性。我们可以得到以下树:
Friends?
/ \
yes no
/ \
Exam? Exam?
/ \ / \
yes no yes no
/ \ | |
STUDY Weather? STUDY PLAY
/ \
sunny rain
/ \
PICNIC PLAY
两棵树都对训练示例进行了正确分类。不同之处在于第二棵树更复杂,可能对训练数据过拟合。 通过始终选择最佳属性来构建决策树的算法“更喜欢”较短且不太复杂的树以及首先检查最佳属性的树。
【讨论】:
始终视情况而定。但大多数情况下,您希望尽可能快地执行树,因此您希望避免不必要的决策/分支。所以你选择了最好的特征(和相应的分割位置),而其他人需要例如再多 2-3 个分支来最终预测一个样本。
很容易看出,处理具有 10 个分支的树通常会比处理具有 30 个分支的另一棵树快很多
【讨论】:
确定在决策树中选择哪个属性的常用方法是information gain。基本上,您尝试每个属性并查看哪个属性最好地拆分您的数据。查看此套牌的第 6 页:http://homes.cs.washington.edu/~shapiro/EE596/notes/InfoGain.pdf
【讨论】: