在连续数据的决策树中找到阈值的方法

Ham*_*aee 0 machine-learning decision-tree weka

我在Weka中使用决策树并且我有一些连续数据,所以当我使用Weka时它会自动为我找到阈值但由于某种原因我想自己实现决策树,所以我需要知道使用什么方法来查找离散我的连续数据的门槛?

gre*_*ess 6

ID3C4.5使用启发式对连续数据进行离散化.该方法为每个变量(特征)找到二进制剪切.您可以递归地应用相同的方法从连续数据中获取多个间隔.

假设在某个树节点上,所有实例都属于一组S,并且您正在处理变量A和特定边界(cut)T,由此引起的分区的类信息熵T,表示为E(A,T,S):

             |S1|                 |S2|
E(A, T, S) = ---- Entropy(S1) +   ---- Entropy(S2)
              |S|                 |S|
Run Code Online (Sandbox Code Playgroud)

其中|S1|是第一个分区中的实例数; |S2|是第二个分区中的实例数; |S| = |S1|+|S2|.

对于给定特征A,选择T_min使所有可能的分区边界上的熵函数最小化的边界作为二元离散化边界.

例如,您可能有一个变量Length,其中包含所有可能的值:

Length = {2.1, 2.8, 3.5, 8.0, 10.0, 20.0, 50.0, 51.0}
Run Code Online (Sandbox Code Playgroud)

然后你T可能是:

T = {2.1, 2.8, 3.5, 8.0, 10.0, 20.0, 50.0, 51.0}
Run Code Online (Sandbox Code Playgroud)

你切入每一个可能的Length价值.您也可以在相邻Length值的每个中间点切割,例如,

T = {2.45, 3.15, 5.75, 9.0, 15.0, 35.0, 50.5}
Run Code Online (Sandbox Code Playgroud)

在离散化时,您将遍历所有可能的T值并评估哪一个获得最小值E(A, T, S).而已.

参见更多细节文件,其中还介绍了其他的可选方法:

  • ChiMerge离散化方法.
  • 基于学习矢量量化(LVQ)的方法
  • 基于直方图的方法.