【问题标题】:create decision tree from data从数据创建决策树
【发布时间】:2015-09-09 13:26:48
【问题描述】:

我正在尝试根据数据创建决策树。我将树用于猜测动物游戏的应用程序。用户用是/否回答问题,程序猜测答案。该程序用于家庭作业。

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

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

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

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

【问题讨论】:

    标签: algorithm tree decision-tree


    【解决方案1】:

    我搜索了 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。

    一些提示:

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

    【讨论】:

    • 好的,谢谢。终于熬过了ID3,这正是我所需要的。
    • @amit 我有一个关于分类中决策树的分裂标准的问题。决策树杂质分类中的所有分裂标准都是基于吗?
    猜你喜欢
    • 1970-01-01
    • 2018-09-05
    • 2014-05-09
    • 2021-05-16
    • 1970-01-01
    • 2019-10-20
    • 2016-03-01
    • 2019-01-25
    • 2016-07-27
    相关资源
    最近更新 更多