当我们使用任何决策树算法时,我们的数据集由数值组成。
我发现程序提供的结果会将节点拆分为数据集中甚至不存在的值
例:
分类结果
在我的数据集中,attrib2没有像3.76179那样的值。 为什么会这样?
答案 0 :(得分:16)
大多数决策树构建算法(J48,C4.5,CART,ID3)的工作原理如下:
一旦找到了最佳分割点,算法就如何表示它们意见不一致。示例:假设您有-4(是), - 3(是), - 3(是), - 2(否), - 1(否)。 -3和-2之间的任何值都具有相同的纯度。一些算法(C4.5)将说val <= -3。其他人,例如Weka,将选择平均值并给出val <= -2.5。
答案 1 :(得分:8)
有多种方法可以选择属性。并非所有人都在数据集中选择值。
一个常见的(虽然有点简单)是采取平均值。 3.76179 ...可能是您数据集的所有attrib2的平均值。
例如,如果您的数据集是1维的,并且由值-10, -9, .. -2, -1, 1, 2, ..9, 10
组成,则好的分割值将为0
,即使它不在您的数据集中。
另一种可能性,特别是当你处理随机森林(几个决策树)时,分裂值是随机选择的,概率分布以中值为中心。有些算法决定按照以均值/中值为中心的高斯分割,偏差等于数据集的标准偏差。
答案 2 :(得分:1)
首先,您可以查看如何对数值进行离散化。这些算法将数值范围分成几个区间,每个区间都有很大的信息。例如,您在每次拆分后使用步骤0.1检查其infogain并选择最佳位置,然后继续吐出的间隔。