ID3决策树澄清

时间:2014-12-19 10:28:42

标签: java decision-tree

我目前正致力于实施ID3算法。我一直在浏览经典的网球示例,但我似乎无法理解为什么属性TEMPERATURE被排除在最终树之外。谁能解释为什么会这样呢?

数据集 enter image description here

最终决策树 enter image description here

2 个答案:

答案 0 :(得分:0)

ID3 algorithm完成以下三种情况之一:

  • 子集中的每个元素属于同一个类(+或 - ),然后将该节点转换为叶子并用示例的类标记
  • 没有更多要选择的属性,但是这些示例仍然不属于同一个类(有些是+,有些是 - ),然后节点变成了一个叶子,并标有最常见的类子集中的示例
  • 子集中没有示例,当没有发现父集中的示例与所选属性的特定值匹配时会发生这种情况,例如,如果没有带有年龄的示例> = 100.那么一片叶子已创建,并使用父集中最常见的示例类标记。

以Outlook为例:晴天和湿度:高/正常。有三个“高”排,他们都对网球说不。因此,第一个场景发生,并且可以创建叶子。有更多信息,但不需要做出决定。

答案 1 :(得分:0)

如何创建ID3树?

首先要做的是获取每个属性的信息增益。但是有一条规则可能是你在跳,那就是: -分析正负数。结果是所有具有该属性的记录都只有正数或负数。您无需再问了。

了解此规则可以解释为什么在温度情况下我没有继续添加分枝的原因。

但是,如果在对行进行计数时有正面和负面的结果,则您将需要问另一个问题,例如,您将检查所有可能的组合,例如“阴天”与“阴天”或“雨天”,而信息增益最高的将是作为该分支的子级放置。

该过程将一直执行,直到您发现所有行都只有负数或正数。通过时,它将结果定义为一张纸。

此外,重要的是要提到树将根据数据集的行数而增长。

我用JavaScript实现了ID3,我将存储库留在了托管库中。 https://github.com/Danils123/Id3Algoritmo.git