构建决策树时如何找到分裂点的熵?

Posted

技术标签:

【中文标题】构建决策树时如何找到分裂点的熵?【英文标题】:How to find Entropy of Split points when building Decision tree? 【发布时间】:2017-08-17 04:23:14 【问题描述】:

给定一个二分类问题:

有四个正面例子和五个负面例子。因此, P(+) = 4/9 和 P(-) = 5/9。训练样例的熵为 −4/9 log2(4/9) − 5/9 log2(5/9) = 0.9911。

对于a3,这是一个连续的属性,我想求出每次分割的信息增益。

所以我按升序对 a3 值进行排序并找到它们的拆分点。但是我该如何计算它们的熵呢?

给出的答案是:

上图中的信息增益列仅为 0.9911 - 熵。

但是我如何找到熵?

熵的公式是:

但我不明白如何使用这个公式来找到分裂点的熵。

【问题讨论】:

我认为这个问题与 Cross Validated (stats.stackexchange.com) 更相关。 【参考方案1】:

例如,当您按a3 = 3.5 拆分数据时,您的两个实例进入一个拆分,其余七个实例进入另一个拆分。您应该计算每个拆分的熵,然后对这两个熵进行加权平均。对于a3 = 3.5,python 中的以下代码为您完成:

import numpy as np
entropy1 = -(1/2)*np.log2(1/2) - (1/2)*np.log2(1/2)
entropy2 = -(3/7)*np.log2(3/7) - (4/7)*np.log2(4/7)
entropy = (2/9)*entropy1 + (7/9)*entropy2

【讨论】:

以上是关于构建决策树时如何找到分裂点的熵?的主要内容,如果未能解决你的问题,请参考以下文章

数据科学之 如何找到指标的最 佳分裂点的几个想法

数据科学之 如何找到指标的最 佳分裂点的几个想法

R语言使用party包中的ctree函数构建条件推理决策树的流程和步骤条件推理决策树是传统决策树的一个重要变体条件推理树的分裂是基于显著性测试而不是熵/纯度/同质性度量来选择分裂

【理论篇】决策树剪枝策略

决策树 ID3方法

R语言使用rpart包构建决策树模型选择合适的树大小(复杂度)检查决策树对象的cptable内容(树的大小由分裂次数定义预测误差)使用plotcp函数可视化决策树复杂度参数与交叉验证错误的关系