基本上,我的决策树无法使用普通算法对值进行分类。
我到达一个节点,有两个选项(例如,晴天和有风),但在这个节点上,我的值是不同的(例如,下雨天)。
有什么方法可以解决这个问题,例如更改树或仅根据其他数据进行估计?
我正在考虑在该节点上分配最常见的值,但这只是一个猜测。
基本上,我的决策树无法使用普通算法对值进行分类。
我到达一个节点,有两个选项(例如,晴天和有风),但在这个节点上,我的值是不同的(例如,下雨天)。
有什么方法可以解决这个问题,例如更改树或仅根据其他数据进行估计?
我正在考虑在该节点上分配最常见的值,但这只是一个猜测。
您是否考虑过富/贫连续体的模糊逻辑?至于不能用连续体来表达的事情,我想不出有什么办法可以做到。例如,在我们对雨天的体验和反应方面,雨天与晴天和多风的天气有着根本的不同,我不确定您期望计算机(或您正在编写决策树的任何东西)如何计算出来做什么。(除了简单地有一个“我不知道该怎么做”输出状态,但我假设你想要比这更有意义的东西。)
决策树的重点是选项是完整的并且(希望)是互斥的。
如果不是,你会遇到麻烦。重新定义穷人和富人以涵盖一切。(所有的收入,所有的心态……)
但老实说,将此类天气示例解释为它们的本质:只是一个概念的示例,而不是气象学的圣杯。
这里的问题是,您已经从用于分类的不同数据中学到了一个决策。更具体地说,您的决策树只知道属性 Weather 的两个值(即,晴天和有风)。但是您用于分类的数据也允许值 rainy。由于您的决策树在下雨时没有观察结果,因此该值变得无用。换句话说,你必须从你的分类中消除这个值。
唯一的解决方案是在使用决策树作为分类器之前进行数据清理。您有两个选择: 1. 从您的数据集中删除所有带有 Weather="rainy" 的观察/实例,因为您无法对它们进行分类。缺点是没有对 Weather="rainy" 的所有实例进行分类。2. 对于 Weather="rainy" 的所有观测值/实例,删除该值或者将其设置为未知/null。如果您的决策树可以处理空值,它可以对您的所有数据集进行分类。如果没有,你仍然有问题。在这种情况下,您应该选择选项 3。 3. 使用 Weather={sunny, windy, rainy} (4) 重新学习您的决策树。在您的情况下,以下不是一种选择。将“rainy”替换为“sunny”或“rainy”。对此有不同的启发式方法。
您在谈论“正常算法”,这是一个非常模糊的陈述。我假设您使用的是严格二进制根的决策树,其中每个内部节点都会对数据进行二进制拆分。因此,每个内部节点的条件评估输出一个布尔变量,它将数据分成左节点(真)和右节点(假)。在您的情况下,您可以在训练数据中有一个具有两个可能值的分类变量weather
,这使得只有两个可能的节点:weather==sunny
或weather==windy
。因此,rainy
样本将始终位于正确的节点上,因为它 is notsunny
和 not windy
。
在下图中,rainy
样本将被分类为不晴,不刮风。