Amr*_*mro 33
IG(Y|X) = H(Y) - H(Y|X) >= 0因为H(Y) >= H(Y|X)最坏的情况是X和Y是独立的,因此H(Y|X)=H(Y)
考虑它的另一种方法是通过观察随机变量X取一些值,我们要么得不到或得到关于Y的一些信息(你不会失去任何).
编辑
让我在决策树的背景下澄清信息增益(实际上,当我从机器学习背景出发时,我首先考虑到了这一点).
假设给出一组实例和标签(离散类)的分类问题.
选择在树的每个节点处分割哪个属性的想法是选择将类属性分成两个最纯的可能实例组(即最低熵)的特征.
这相当于选择具有最高信息增益的特征
InfoGain = entropyBeforeSplit - entropyAfterSplit
Run Code Online (Sandbox Code Playgroud)
分裂后的熵是每个分支的熵的总和,加权该分支下的实例数.
现在不存在可能分割的类值,这将导致具有比分裂之前更差的纯度(更高的熵)的情况.
以二元分类问题为例.在某个节点,我们有5个正面实例和4个负面实例(总共9个).因此,熵(分裂前)是:
H([4,5]) = -4/9*lg(4/9) -5/9*lg(5/9) = 0.99107606
Run Code Online (Sandbox Code Playgroud)
现在让我们考虑一些拆分的情况.最好的情况是当前属性完美地分割实例(即一个分支全部为正,另一个分支全部为负):
[4+,5-]
/ \ H([4,0],[0,5]) = 4/9*( -4/4*lg(4/4) ) + 5/9*( -5/5*lg(5/5) )
/ \ = 0 // zero entropy, perfect split
[4+,0-] [0+,5-]
Run Code Online (Sandbox Code Playgroud)
然后
IG = H([4,5]) - H([4,0],[0,5]) = H([4,5]) // highest possible in this case
Run Code Online (Sandbox Code Playgroud)
想象一下,第二个属性是最坏的情况,其中一个创建的分支没有得到任何实例,而是所有实例都转向另一个(如果例如属性在实例之间是常量,则无用):
[4+,5-]
/ \ H([4,5],[0,0]) = 9/9 * H([4,5]) + 0
/ \ = H([4,5]) // the entropy as before split
[4+,5-] [0+,0-]
Run Code Online (Sandbox Code Playgroud)
和
IG = H([4,5]) - H([4,5],[0,0]) = 0 // lowest possible in this case
Run Code Online (Sandbox Code Playgroud)
现在在这两种情况之间的某个地方,您会看到任意数量的情况,例如:
[4+,5-]
/ \ H([3,2],[1,3]) = 5/9 * ( -3/5*lg(3/5) -2/5*lg(2/5) )
/ \ + 4/9 * ( -1/4*lg(1/1) -3/4*lg(3/4) )
[3+,2-] [1+,3-]
Run Code Online (Sandbox Code Playgroud)
和
IG = H([4,5]) - H([3,2],[1,3]) = [...] = 0.31331323
Run Code Online (Sandbox Code Playgroud)
所以无论你如何分割这9个实例,你总能获得积极的信息收益.我意识到这不是数学证明(请转到MathOverflow!),我只是认为一个实际的例子可以提供帮助.
(注:根据谷歌的所有计算)