machine-learning - 连续数据决策树中寻找阈值的方法

标签 machine-learning weka decision-tree

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

最佳答案

ID3C4.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 ,其中还描述了其他可选方法:

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

关于machine-learning - 连续数据决策树中寻找阈值的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33501039/

相关文章:

python - 如何给keras一个恒定的输入

algorithm - 使用总成本比较单个数据集上的两种算法 - 使用哪种统计测试?

java - k-means weka java代码

python - 如何使用 DecisionTreeClassifier 来平衡分类?

algorithm - 决策树和算法选择

python - 如何为 Kmeans 散点图并打印异常值

python - Pandas 描述()不显示

java - 在 android 上使用 weka 库时出错(想在 Android 应用程序中实现机器学习)

machine-learning - 使用基尼指数的决策树

python - Keras自动编码器: validation loss > training loss - but performing well on testing dataset