如何使用决策树对此值进行分类

时间:2012-02-29 13:10:42

标签: decision-tree

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

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

有没有办法解决这个问题,例如:更改树或仅根据其他数据进行估算?

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

4 个答案:

答案 0 :(得分:0)

您是否考虑过{/ 3}}丰富/贫穷的连续统一体?至于那些不能表达为连续统一体的东西,我想不出可以做到的一种方式。例如,阴雨天气与阳光和大风天气的根本区别在于我们如何体验和应对它,我不确定你对计算机(或者你正在编写决策树的任何东西)的期望该怎么做。 (除了简单地说“我不知道该做什么”输出状态,但我假设你想要的东西比那更有意义。)

答案 1 :(得分:0)

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

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

但老实说,将这样的天气例子解释为它们是什么:只是概念的例子,而不是气象学的圣杯。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

在下图中,rainy样本将被归类为不是晴天,而不是多风

enter image description here