决策树如何计算拆分属性?

Zia*_*Zia 5 machine-learning data-mining decision-tree

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

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

示例:
分类结果

  1. attrib2 <= 3.761791861252009:groupA
  2. attrib2> 3.761791861252009:groupB

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

小智 16

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

  • 对可以拆分的属性进行排序.
  • 找到与它们关联的类标签发生变化的所有"断点".
  • 考虑标签变化的分裂点.选择最小化纯度测量的那个.信息增益仅取决于排序,而不取决于值.

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


Fez*_*vez 8

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

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

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

另一种可能性,特别是当你处理随机森林(几个决策树)时,分裂值是随机选择的,概率分布以中值为中心.一些算法决定根据以平均值/中值为中心的高斯分割并且偏差等于数据集的标准偏差.