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

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


回答:

ID3C4.5 使用启发式方法来离散化连续数据。该方法为每个变量(特征)找到一个二元切割。你可以递归地应用相同的方法,从连续数据中获得多个区间。

假设在某个树节点上,所有实例属于集合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)。就是这样。

更多细节请参见这篇论文,其中还描述了其他可选方法:

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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注