一种方法是观察根据给定属性的属性值划分类值后类标签分布的熵如何变化。提供最大熵减少的属性是“最佳”属性。 (这仅适用于离散属性;您必须离散化属性才能使用此方法;例如,将hoursSlept>7 转换为sleptAlot;将5 <=hoursSlept<=7 转换为sleptEnough;以及将hoursSlept<5 转换为@987654328 @.)
离散分布(p1,p2,...,pk) 的熵H 定义为
H = -p1*log_2 p1 - p2*log_2 p2 - ... - pk*log_2 pk
粗略地说,它测量分布的杂质。先验结果越少,熵就越高;你对结果的了解越多,熵就越小。事实上,所有i 的分布pi=1/k(所有结果的可能性相同)具有最高可能的熵(值log_2 k);以及pi=1 对某些i 具有最低可能熵的分布(值0)。
定义pi=ni/n,其中n 是示例数,ni 是具有i-th 类值的示例数。这导致了一个离散分布(p1,p2,...,pk),其中k 是类值的数量。
对于具有可能值a1,a2,...,ar 的属性A,将Si 定义为属性A 的值等于ai 的那些示例的集合。每个集合Si 都会产生一个离散分布(定义方式与之前相同)。设|Si| 为集合Si 中的示例数。用H(Si)表示对应的熵。
现在计算
Gain(A) = H - |S1|/n * H(S1) - ... - |Sr|/n * H(Sr)
并选择最大化Gain(A) 的属性。直觉是最大化这种差异的属性对示例进行分区,因此在大多数Si 中,示例具有相似的标签(即熵很低)。
Gain(A) 的值直观地告诉您属性A 对类标签的信息量。
供您参考,这在决策树学习中被广泛使用,度量称为信息增益。例如,参见these slides;这个explanation on Math.SE 真的很棒(尽管它是在决策树学习的背景下)。