我在Weka中使用决策树并且我有一些连续的数据,所以当我使用Weka时它会自动为我找到阈值但由于某种原因我想自己实现决策树所以我需要知道使用什么方法找到离线连续数据的门槛?
答案 0 :(得分:6)
ID3和C4.5使用entropy启发式方法对连续数据进行离散化。该方法为每个变量(特征)找到二进制剪切。您可以递归地应用相同的方法从连续数据中获取多个区间。
假设在某个树节点上,所有实例都属于一组S
,并且您正在处理变量A
和特定边界(剪切)T
,类信息由T
引起的分区的熵,表示为E(A,T,S)
,由下式给出:
|S1| |S2|
E(A, T, S) = ---- Entropy(S1) + ---- Entropy(S2)
|S| |S|
其中|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}
然后您的T
可能是:
T = {2.1, 2.8, 3.5, 8.0, 10.0, 20.0, 50.0, 51.0}
在其中切割每个可能的Length
值。您还可以在相邻Length
值的每个中间点处剪切,例如
T = {2.45, 3.15, 5.75, 9.0, 15.0, 35.0, 50.5}
在离散时间,您将迭代所有可能的T
值并评估哪一个获得最小值E(A, T, S)
。就是这样。
在此paper中查看更多详细信息,其中还介绍了其他可选方法: