【问题标题】:How do I classify this value using a decision tree如何使用决策树对该值进行分类
【发布时间】:2012-03-18 23:28:16
【问题描述】:

基本上,我的决策树无法使用普通算法对值进行分类。

我到达一个节点,有两个选项(例如,晴天和有风),但在这个节点我的值不同(例如,下雨)。

有什么方法可以解决这个问题,例如更改树还是仅根据其他数据进行估计?

我正在考虑在该节点上分配最常见的值,但这只是一个猜测。

【问题讨论】:

    标签: decision-tree


    【解决方案1】:

    您在谈论“普通算法”,这是一个相当模糊的说法。我假设您使用的是严格二进制根决策树,其中每个内部节点都会对数据进行二进制拆分。因此,每个内部节点的条件评估输出一个布尔变量,它将数据分成左节点(真)和右节点(假)。在您的情况下,您可以在训练数据中有一个具有两个可能值的分类变量weather,这使得只有两个可能的节点:weather==sunny 或weather==windy。因此,rainy 样本将始终位于正确的节点上,因为它不是sunny 也不是windy。

    在下图中,rainy 样本将被分类为不晴,不刮风。

    【讨论】:

      【解决方案2】:

      这里的问题是,当您用于分类时,您已经从不同的数据中学到了一个决策。更具体地说,您的决策树只知道属性 Weather 的两个值(即,晴天和有风)。但是您用于分类的数据也允许值 rainy。 由于您的决策树在下雨时没有观察结果,因此该值变得无用。换句话说,你必须从你的分类中消除这个值。

      唯一的解决方案是在使用决策树作为分类器之前进行数据清理。 你有两个选择: 1. 从您的数据集中删除所有带有 Weather="rainy" 的观察/实例,因为您无法对它们进行分类。缺点是没有对 Weather="rainy" 的所有实例进行分类。 2. 对于 Weather="rainy" 的所有观测/实例,删除该值,或者将其设置为未知/空。如果您的决策树可以处理空值,它可以对您的所有数据集进行分类。如果没有,你仍然有问题。在这种情况下,您应该选择选项 3。 3. 用 Wea​​ther={sunny, windy, rainy} 重新学习你的决策树 (4)。在您的情况下,以下不是一种选择。将“rainy”替换为“sunny”或“rainy”。对此有不同的启发式方法。

      【讨论】:

        【解决方案3】:

        决策树的重点是选项是完整的并且(希望)是互斥的。

        如果不是这样,你就会遇到麻烦。重新定义穷人和富人以涵盖一切。 (所有的收入,所有的心态……)

        但老实说,将这些天气示例解释为它们的本质:只是一个概念的示例,而不是气象学的圣杯。

        【讨论】:

          【解决方案4】:

          您是否考虑过fuzzy logic 代表富人/穷人的连续体?至于不能用连续体来表达的事情,我想不出有什么办法可以做到。例如,在我们对雨天的体验和反应方面,雨天与晴天和多风的天气有着根本的不同,我不确定您期望计算机(或您正在编写决策树的任何东西)如何计算出来做什么。 (除了简单的“我不知道该怎么做”输出状态之外,我假设你想要一些比这更有意义的东西。)

          【讨论】:

            猜你喜欢
            • 2020-04-07
            • 2013-12-01
            • 2014-08-23
            • 2017-01-14
            • 2018-06-13
            • 1970-01-01
            • 2017-04-09
            • 2017-01-25
            • 2019-10-08
            相关资源
            最近更新 更多