从数据创建决策树

时间:2015-06-23 16:09:24

标签: algorithm tree decision-tree

我试图从数据创建决策树。我正在使用树来猜测动物游戏的应用程序。用户使用是/否回答问题,程序猜测答案。这个计划是为了完成家庭作业。

我不知道如何根据数据创建决策树。我无法知道根节点是什么。每次数据都不同。我无法手工完成。我的数据是这样的:

Animal1: property1, property3, property5
Animal2: property2, property3, property5, property6
Animal3: property1, property6
etc.

我搜索了stackoverflow,我找到了ID3和C4.5算法。但我不知道我是否应该使用它们。

在这种情况下,有人可以指导我,我应该使用什么算法来构建决策树?

1 个答案:

答案 0 :(得分:2)

  

我搜索了stackoverflow,我找到了ID3和C4.5算法。但是我   不知道我是否应该使用它们。

是的,你应该。它们是非常常用的决策树,并为它们提供了一些很好的开源实现。 (Weka's J48是C4.5)的示例实现

如果您需要从头开始实现某些功能,那么实现一个简单的决策树非常简单,并且可以迭代完成:

  1. 让标记样本集为S,其中包含属性集P = {p1,p2,...,pk}
  2. 选择属性pi
  3. 将S分成两组S1,S2-S1保持pi,而S2不保持。为当前节点创建两个子节点,并分别将S1和S2移动到它们
  4. 对每个样本子集重复S'= S1,S'= S2,如果它们不为空。
  5. 一些指示:

    • 在每次迭代中,您基本上将当前数据拆分为2个子集,包含pi的样本和不包含pi的数据。然后创建两个新节点,它们是当前节点的子节点,并为每个节点重复该过程,每个节点都包含相关的数据子集。
    • 智能算法选择属性pi(在步骤2中),尽可能地最小化树的高度(找到最佳解决方案是NP-Hard,但有贪婪的方法例如,最小化entropy
    • 创建树后,会完成一些pruning,以避免overfitting
    • 此算法的一个简单扩展是使用多个单独工作的决策树 - 这称为Random Forests,并且通常会凭经验获得相当不错的结果。