5

当我们使用任何决策树算法并且我们的数据集由数值组成时。

我发现程序提供的结果将节点拆分为数据集中甚至不存在的值

示例:
分类结果

  1. 属性2 <= 3.761791861252009:组A
  2. 属性 2 > 3.761791861252009:组 B

在我的数据集中,attrib2 没有像 3.76179 这样的值。为什么会这样?

4

3 回答 3

16

大多数决策树构建算法(J48、C4.5、CART、ID3)的工作方式如下:

  • 对可以拆分的属性进行排序。
  • 找到与它们关联的类标签发生变化的所有“断点”。
  • 考虑标签更改的分割点。选择最小化纯度测量的一种。然而,信息增益仅取决于排序,而不取决于值。

一旦你找到了最好的分割点,算法就会在如何表示它上产生分歧。示例:假设您有 -4(是)、-3(是)、-3(是)、-2(否)、-1(否)。-3 和 -2 之间的任何值都将具有相同的纯度。一些算法(C4.5)会说 val <= -3。其他人,例如 Weka,将选择平均值并给出 val <= -2.5。

于 2011-06-14T12:11:09.093 回答
8

有几种方法可以选择属性。并非所有人都选择数据集中的值。

一个常见的(虽然有点简单)是取平均值。3.76179... 可能是数据集所有属性的平均值。

例如,如果您的数据集是一维的,并且由值组成,-10, -9, .. -2, -1, 1, 2, ..9, 10那么一个好的分割值将是0,即使它不在您的数据集中。

另一种可能性,尤其是在您处理随机森林(几棵决策树)时,分裂值是随机选择的,概率分布以中值为中心。一些算法决定根据以均值/中值为中心的高斯进行分割,并且偏差等于数据集的标准偏差。

于 2011-06-09T08:56:02.820 回答
1

首先,您可以检查如何离散数值。这些算法将数值范围分成几个区间,每个区间都有很大的信息增益。例如,您在每次拆分后执行步骤 0.1,检查其信息增益并选择最佳位置,然后继续使用恶意间隔。

于 2011-06-10T07:21:49.623 回答