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

Method of finding threshold in Decision tree for continuous data

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

ID3 and C4.5 use entropy 连续数据离散化的启发式。该方法为每个变量(特征)找到一个二元切割。您可以递归地应用相同的方法从连续数据中获取多个间隔。

假设在某个树节点处,所有实例都属于一组S,并且您正在处理变量A和特定边界(切割)T, class 由 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 中的更多详细信息,其中还描述了其他可选方法:

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