构建决策树时如何找到分裂点的熵?
How to find Entropy of Split points when building Decision tree?
给定一个二元分类问题:
有四个正例和五个反例。因此,
P(+) = 4/9 和 P(−) = 5/9。训练样本的熵是
−4/9 log2(4/9) − 5/9 log2(5/9) = 0.9911.
对于a3,它是一个连续的属性,我想找到每次分割的信息增益。
所以我按升序对 a3 个值进行排序并找到它们的分割点。但是我如何计算它们的熵?
给出的答案是:
上图中的信息增益列仅为 0.9911 - 熵。
但是如何找到熵?
熵的公式是:
但我不明白如何使用这个公式来计算分裂点的熵。
例如,当您按 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
给定一个二元分类问题:
有四个正例和五个反例。因此, P(+) = 4/9 和 P(−) = 5/9。训练样本的熵是 −4/9 log2(4/9) − 5/9 log2(5/9) = 0.9911.
对于a3,它是一个连续的属性,我想找到每次分割的信息增益。
所以我按升序对 a3 个值进行排序并找到它们的分割点。但是我如何计算它们的熵?
给出的答案是:
上图中的信息增益列仅为 0.9911 - 熵。
但是如何找到熵?
熵的公式是:
但我不明白如何使用这个公式来计算分裂点的熵。
例如,当您按 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