【发布时间】:2017-02-08 07:51:42
【问题描述】:
我最近一直在阅读有关 ID3 算法的信息,它说要选择用于拆分的最佳属性应该导致最大的信息增益,这可以借助熵来计算。
我编写了一个简单的 python 程序来计算熵。如下图所示:
def _E(p, n):
x = (p/(p+n))
y = (n/(p+n))
return(-1* (x*math.log2(x)) -1* (y*math.log2(y)))
但是假设我们有一个由 10 个元素组成的表格,如下所示:
x = [1, 0, 1, 0, 0, 0, 0, 0, 0, 0]
y = [1, 1, 1, 0, 1, 0, 1, 0, 1, 0]
其中 x 是属性,y 是类。这里 P(0) = 0.8 和 P(1) = 0.2。熵如下:
熵(x) = 0.8*_E(5, 3) + 0.2*_E(2, 0)
但是,第二个拆分 P(1) 是完全分类的,这会导致数学错误,因为 log2(0) 是负无穷大。这种情况下的熵如何计算?
【问题讨论】:
-
你应该在stats.stackexchange.com问这个问题
标签: python machine-learning decision-tree