信息增益计算通过以某种方式转换数据集来减少熵或惊喜。
它常用于从训练数据集中构建决策树,通过评估每个变量的信息增益,并选择使信息增益最大的变量,从而最小化熵并最佳地将数据集分割成用于有效分类的组。
信息增益也可用于特征选择,通过在目标变量的背景下评估每个变量的增益。在此略有不同的用法中,该计算被称为两个随机变量之间的互信息。
在本文中,您将了解机器学习中的信息增益和互信息。
阅读本文后,你将了解:
- 信息增益是通过转换数据集来减少熵或惊喜,并且通常用于训练决策树。
- 信息增益的计算方法是比较转换前后数据集的熵。
- 互信息计算两个变量之间的统计依赖性,当应用于变量选择时,它被称为信息增益。
开始您的项目,阅读我的新书 机器学习概率,其中包含分步教程和所有示例的Python源代码文件。
让我们开始吧。
- 更新 2019年11月:改进了信息/熵基础的描述(感谢HR)。
- 更新 2020年8月:为公式添加了缺失的括号(感谢David)。

什么是机器学习的信息增益和互信息
照片由 Giuseppe Milo 拍摄,保留部分权利。
概述
本教程分为五个部分;它们是:
- 什么是信息增益?
- 信息增益计算的实例
- 机器学习中信息增益的示例
- 什么是互信息?
- 信息增益和互信息之间有什么关系?
什么是信息增益?
信息增益,简称 IG,衡量通过根据随机变量的给定值分割数据集来减少熵或惊喜。
更大的信息增益表明样本组的熵更低或惊喜更少。
您可能还记得,信息量化了事件在比特中的惊喜程度。低概率事件具有更多信息,高概率事件具有更少信息。熵量化了随机变量中存在多少信息,或者更具体地说,它的概率分布。倾斜的分布具有低熵,而事件概率相等的分布具有更大的熵。
在信息论中,我们喜欢描述事件的“惊喜”。低概率事件更令人惊喜,因此具有更多的信息。而事件概率相等的概率分布更令人惊喜,具有更大的熵。
- 偏斜的概率分布(不令人意外):低熵。
- 均衡的概率分布(令人意外):高熵。
有关信息和熵基础知识的更多内容,请参阅教程
现在,让我们考虑数据集的熵。
我们可以从信息论的角度来考虑数据集的熵,即数据集中观测值属于一个类别或另一个类别的概率分布,例如二元分类数据集中的两个类别。
从信息论的角度来看,熵的一个解释是,它指定了编码S的任意成员(即,从S中随机抽取一个成员,具有均匀概率)的分类所需的最小比特信息。
— 第 58 页,机器学习,1997。
例如,在二元分类问题(两个类别)中,我们可以按如下方式计算样本集熵:
- 熵 = -(p(0) * log(P(0)) + p(1) * log(P(1)))
包含两个类别样本比例为 50/50 的数据集将具有最大熵(最大惊喜)1 比特,而比例为 10/90 的不平衡数据集将具有较小的熵,因为从数据集中随机抽取一个示例的惊喜会更少。
我们可以通过一个在 Python 中计算此不平衡数据集熵的示例来演示这一点。完整的示例列在下面。
1 2 3 4 5 6 7 8 9 |
# 计算数据集的熵 from math import log2 # 每个类别的样本比例 class0 = 10/100 class1 = 90/100 # 计算熵 entropy = -(class0 * log2(class0) + class1 * log2(class1)) # 打印结果 print('entropy: %.3f bits' % entropy) |
运行该示例,我们可以看到二元分类数据集的熵小于 1 比特。也就是说,要对数据集中任意示例的类标签进行编码,只需不到 1 比特的信息。
1 |
entropy: 0.469 bits |
通过这种方式,熵可以作为计算数据集纯度的度量,例如类别分布的均衡程度。
熵为 0 比特表示数据集中只包含一个类别;熵为 1 比特或更高表示平衡数据集的最大熵(取决于类别数量),中间值表示这些极端之间的水平。
信息增益提供了一种使用熵来计算数据集的更改如何影响数据集纯度(例如,类别分布)的方法。熵越小,纯度越高或惊喜越少。
…信息增益,就是通过根据该属性对示例进行划分所导致的熵的预期减少。
— 第 57 页,机器学习,1997。
例如,我们可能希望通过将数据集*S*按具有一系列值的随机变量进行划分来评估对纯度的影响。
这可以按如下方式计算:
- IG(S, a) = H(S) – H(S | a)
其中 *IG(S, a)* 是数据集 *S* 对变量 *a* 的信息,*H(S)* 是更改前的熵(如上所述),*H(S | a)* 是给定变量 *a* 的数据集的条件熵。
此计算描述了数据集 *S* 对变量 *a* 的增益。这是转换数据集时节省的比特数。
可以通过将数据集划分为变量 *a* 的每个观测值的组,并计算每个组中示例占整个数据集的比例乘以每个组的熵的总和来计算条件熵。
- H(S | a) = sum v in a Sa(v)/S * H(Sa(v))
其中 *Sa(v)/S* 是数据集中变量 *a* 取值为 *v* 的示例数量的比例,*H(Sa(v))* 是变量 *a* 取值为 *v* 的样本组的熵。
这听起来可能有点令人困惑。
我们可以通过一个实例来具体说明信息增益的计算。
想学习机器学习概率吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
信息增益计算的实例
在本节中,我们将通过一个实例来具体说明信息增益的计算。
我们可以定义一个函数来计算样本组的熵,该函数基于属于类别 0 和类别 1 的样本比例。
1 2 3 |
# 计算数据集中分割的熵 def entropy(class0, class1): return -(class0 * log2(class0) + class1 * log2(class1)) |
现在,考虑一个包含 20 个示例的数据集,其中 13 个是类别 0,7 个是类别 1。我们可以计算此数据集的熵,它将小于 1 比特。
1 2 3 4 5 6 7 |
... # 主数据集的分割 class0 = 13 / 20 class1 = 7 / 20 # 计算更改前的熵 s_entropy = entropy(class0, class1) print('Dataset Entropy: %.3f bits' % s_entropy) |
现在,假设数据集中有一个变量有两个唯一值,例如“*value1*”和“*value2*”。我们对计算此变量的信息增益感兴趣。
假设如果我们按 value1 分割数据集,我们会得到一个包含七个类别 0 和一个类别 1 的八个样本的组。然后我们可以计算这个样本组的熵。
1 2 3 4 5 6 7 |
... # 分割 1(通过 value1 分割) s1_class0 = 7 / 8 s1_class1 = 1 / 8 # 计算第一组的熵 s1_entropy = entropy(s1_class0, s1_class1) print('Group1 Entropy: %.3f bits' % s1_entropy) |
现在,假设我们按 value2 分割数据集;我们得到一个包含六个样本的组。我们预计此组的熵为 1。
1 2 3 4 5 6 7 |
... # 分割 2(通过 value2 分割) s2_class0 = 6 / 12 s2_class1 = 6 / 12 # 计算第二组的熵 s2_entropy = entropy(s2_class0, s2_class1) print('Group2 Entropy: %.3f bits' % s2_entropy) |
最后,我们可以根据变量每个值创建的组以及计算出的熵来计算此变量的信息增益。
第一个变量导致了数据集中的八个示例组,第二个组包含数据集中剩余的 12 个样本。因此,我们拥有计算信息增益所需的一切。
在这种情况下,信息增益可以计算为:
- 熵(数据集) – (组1计数 / 数据集计数 * 熵(组1) + 组2计数 / 数据集计数 * 熵(组2))
或
- 熵(13/20, 7/20) – (8/20 * 熵(7/8, 1/8) + 12/20 * 熵(6/12, 6/12))
或在代码中:
1 2 3 4 |
... # 计算信息增益 gain = s_entropy - (8/20 * s1_entropy + 12/20 * s2_entropy) print('Information Gain: %.3f bits' % gain) |
将所有这些结合起来,完整的示例如下所示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# 计算信息增益 from math import log2 # 计算数据集中分割的熵 def entropy(class0, class1): return -(class0 * log2(class0) + class1 * log2(class1)) # 主数据集的分割 class0 = 13 / 20 class1 = 7 / 20 # 计算更改前的熵 s_entropy = entropy(class0, class1) print('Dataset Entropy: %.3f bits' % s_entropy) # 分割 1(通过 value1 分割) s1_class0 = 7 / 8 s1_class1 = 1 / 8 # 计算第一组的熵 s1_entropy = entropy(s1_class0, s1_class1) print('Group1 Entropy: %.3f bits' % s1_entropy) # 分割 2(通过 value2 分割) s2_class0 = 6 / 12 s2_class1 = 6 / 12 # 计算第二组的熵 s2_entropy = entropy(s2_class0, s2_class1) print('Group2 Entropy: %.3f bits' % s2_entropy) # 计算信息增益 gain = s_entropy - (8/20 * s1_entropy + 12/20 * s2_entropy) print('Information Gain: %.3f bits' % gain) |
首先,数据集的熵计算结果略低于 1 比特。然后,第一组和第二组的熵分别计算为约 0.5 和 1 比特。
最后,该变量的信息增益计算为 0.117 比特。也就是说,通过选择的变量分割数据集所带来的增益是 0.117 比特。
1 2 3 4 |
Dataset Entropy: 0.934 bits Group1 Entropy: 0.544 bits Group2 Entropy: 1.000 bits Information Gain: 0.117 bits |
机器学习中信息增益的示例
也许信息增益在机器学习中最受欢迎的应用是在 决策树 中。
例如,用于构建决策树的 Iterative Dichotomiser 3 算法,简称 ID3。
信息增益正是 ID3 在生长树的每个步骤中用于选择最佳属性的度量。
— 第 58 页,机器学习,1997。
为数据集中每个变量计算信息增益。信息增益最大的变量被选中用于分割数据集。通常,增益越大表示熵越小或惊喜越少。
请注意,最小化熵等同于最大化信息增益……
— 第 547 页,机器学习:概率视角,2012。
然后,该过程在每个创建的组上重复进行,排除已选定的变量。一旦达到所需的决策树深度或不再可能进行分割,该过程就会停止。
现在,为每个非终端后代节点重复选择新属性和划分训练示例的过程,这次仅使用与该节点关联的训练示例。已合并到树较高位置的属性将被排除,因此任何给定属性最多只能出现在树的任意路径上一次。
— 第 60 页,机器学习,1997。
信息增益可用作大多数现代决策树实现中的分割标准,例如 scikit-learn Python 机器学习库中用于分类的 DecisionTreeClassifier 类 中实现的分类和回归树 (CART) 算法。
通过在配置模型时将 criterion 参数设置为“*entropy*”来实现这一点;例如:
1 2 3 4 |
# 使用信息增益训练决策树的示例 from sklearn.tree import DecisionTreeClassifier model = sklearn.tree.DecisionTreeClassifier(criterion='entropy') ... |
信息增益也可用于建模之前的特征选择。
它涉及计算目标变量与训练数据集中每个输入变量之间的信息增益。Weka 机器学习工作台通过 InfoGainAttributeEval 类提供了用于特征选择的信息增益实现。
在特征选择的背景下,信息增益可能被称为“*互信息*”,并计算两个变量之间的统计依赖性。使用信息增益(互信息)进行特征选择的一个例子是 mutual_info_classif() scikit-learn 函数。
什么是互信息?
互信息在两个变量之间计算,并衡量在已知另一个变量的值时,一个变量的不确定性减少的量。
一个称为互信息量的度量,衡量从一个随机变量可以获得关于另一个随机变量的信息量。
— 第 310 页,数据挖掘:实用机器学习工具与技术,第 4 版,2016。
两个随机变量 *X* 和 *Y* 之间的互信息可以正式表述如下:
- I(X ; Y) = H(X) – H(X | Y)
其中 *I(X ; Y)* 是 *X* 和 *Y* 的互信息,*H(X)* 是 *X* 的熵,*H(X | Y)* 是给定 *Y* 的 *X* 的条件熵。结果的单位是比特。
互信息是两个随机变量之间依赖性或“*相互依赖性*”的度量。因此,该度量是对称的,意味着 *I(X ; Y) = I(Y ; X)*。
它衡量了学习 *y* 的值所导致的关于 *x* 的不确定性的平均减少;或者反之,*x* 传达关于 *y* 的信息量。
— 第 139 页,信息论、推理与学习算法,2003。
Kullback-Leibler 散度,或 KL 散度,是一种度量,用于计算两个概率分布之间的差异。
互信息也可以计算为联合概率分布与每个变量的边际概率乘积之间的 KL 散度。
如果变量不独立,我们可以通过考虑联合分布与边际分布乘积之间的 Kullback-Leibler 散度来了解它们是否“接近”独立……这被称为变量之间的互信息。
— 第 57 页,模式识别与机器学习,2006。
这可以正式表述如下:
- I(X ; Y) = KL(p(X, Y) || p(X) * p(Y))
互信息总是大于或等于零,值越大,两个变量之间的关系越强。如果计算结果为零,则变量是独立的。
互信息通常用作相关系数的一般形式,例如衡量随机变量之间依赖性的度量。
它也用作某些机器学习算法的一个方面。一个常见的例子是 独立成分分析,简称 ICA,它提供了数据集统计独立成分的投影。
信息增益和互信息之间有什么关系?
互信息和信息增益是同一回事,尽管度量的上下文或用法经常导致不同的名称。
例如
- 数据集变换的影响(决策树):信息增益。
- 变量之间的依赖性(特征选择):互信息。
注意互信息的计算方式与信息增益的计算方式相似;它们是等效的。
- I(X ; Y) = H(X) – H(X | Y)
和
- IG(S, a) = H(S) – H(S | a)
因此,互信息有时用作信息增益的同义词。严格来说,如果应用于相同的数据,它们的计算量是相同的。
我们可以将两者之间的关系理解为:联合概率分布与边际概率分布之间的差异越大(互信息),信息增益就越大(信息增益)。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
书籍
- 信息论、推理与学习算法, 2003.
- 机器学习:概率视角, 2012.
- 模式识别与机器学习, 2006.
- 机器学习, 1997.
- 数据挖掘:实用机器学习工具与技术,第4版,2016年。
API
文章
总结
在本文中,您了解了机器学习中的信息增益和互信息。
具体来说,你学到了:
- 信息增益是通过转换数据集来减少熵或惊喜,并且通常用于训练决策树。
- 信息增益的计算方法是比较转换前后数据集的熵。
- 互信息计算两个变量之间的统计依赖性,当应用于变量选择时,它被称为信息增益。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
关于机器学习非常有启发性
谢谢。
1.您能给我提供一个如何计算互信息的例子吗?
2.请给我一个如何绘制互信息与参数数量的图表,然后估算每参数的比特数。
计算请参见上面的教程。
抱歉,我无法创建您描述的绘图。
互信息 = b+b (p log2p +(1-p) log2(1-p))
p 是正确分类样本的比例。
b 是样本数
X 是 (n x b),y 是 (1Xb)
n 是输入的维度
您能解释一下如何使用 LSTM 实现它吗?
容量与递归神经网络的可训练性
神经网络 — 2.1.1 节
互信息与 LSTM 有何关系?
你好,
“更大的熵表明概率事件较低或惊喜更多,而……”
我认为低概率事件(或更多惊喜)与小熵有关,不是吗?
谢谢你
不,关系是反的。
看这里
https://machinelearning.org.cn/what-is-information-entropy/
你好 Jason,
谢谢你。
这正是我所说的:-p*log(p) -> 0 当 p->0 时,所以
更小的熵 = 更多的惊喜(例如,沙漠中的下雨天),而不是更大的熵……
诚挚地,
HR
是的,我在这方面的措辞很差。我混淆了概率与信息的关系以及概率分布与熵的关系。
我已经更新了开头的评论。
再次感谢!
解释得很好。谢谢。
我一直很好奇,如果我们没有数据集的真实分布,我们该如何计算它的熵?
例如,对于数据集 X = {x_i \in R^D},如何计算 H(X) = 积分 p(x_i) log p(x_i) d x_i?
我们是否使用近似值,例如 sum_j p(bin_j) log p(bin_j)?其中,bin_j 代表 x_i 落在其中的一个值范围。
谢谢!
好问题,我认为这将会有帮助
https://machinelearning.org.cn/what-is-information-entropy/
嗨,Jason,
你对文章的解释非常好,非常值得称赞!!!
我认为,对于下面的公式,在计算 Group 2 之前,应该是‘-’而不是‘+’,
Entropy(Dataset) – Count(Group1) / Count(Dataset) * Entropy(Group1) + Count(Group2) / Count(Dataset) * Entropy(Group2)
下面的等式也一样
Entropy(13/20, 7/20) – 8/20 * Entropy(7/8, 1/8) + 12/20 * Entropy(6/12, 6/12)
你为什么要这么说呢?
减法是针对 split1 和 split2 的增益。因此,最后的“+”需要是“-”或者加上括号将 split1 和 split2 分组。
谢谢 David,已更新。
你好,
我有一个拥有大量特征(约 13000 个)(全部是数值型)和近 2000 个数据点的的数据集。根据我的分析,很明显并非所有变量都对响应有贡献,因此需要进行特征选择。但我很难选择一种特征选择方法,您能为我推荐一种适用于此类问题的方法吗?
好问题,这会有帮助
https://machinelearning.org.cn/faq/single-faq/what-feature-selection-method-should-i-use
感谢您的描述,非常有帮助。
我有一个问题:在神经网络方面,如何计算输入“x”和输出“y”,或“x”和潜在表示“z”的互信息?它们形状不同,我们也不知道它们的分布,您能否就这个问题给我一些信息?
不客气。
我不确定,抱歉。也许可以尝试一下。
1- 高信息量是否意味着好,比如获得更多信息?如果是,为什么信息增益被称为“增益”,尽管它与熵相反,熵越大意味着越惊喜,所以信息越多。那么,信息量少(熵少)为什么被称为“信息增益”?
2- 您说“熵越小表示纯度越高或惊喜越少”,但我理解的纯度是指概率分布的平衡程度。那么,熵越小如何表示纯度越高?——熵越小应该意味着分布越不平衡!——
信息量的好坏无关,它只是我们可以测量的一个量。
“增益”仅仅意味着信息的变化。
也许这有助于更好地理解熵
https://machinelearning.org.cn/what-is-information-entropy/
嗨,Jason,
感谢您一如既往的出色文章和回复!
关于第二点,我已经阅读了文章,据我理解,惊喜意味着更多的信息,而在概率分布平衡/均匀的情况下,我们更惊喜,所以信息更多,熵也更多。这与“熵越小表示纯度越高”(如果纯度是指概率分布的平衡程度的话)相矛盾。
非常感谢您如此精彩的解释!
我可以使用互信息来查找代表性特征均值吗,如果我有两个类别可以由一组特征区分(当然会有一些共同特征),并且我想说特征 1 和 2 用于类别 1,而 2、3 用于类别 2。或者是否有更简单的方法?
不客气。
是的,互信息可以帮助评估特征重要性,并可用于过滤式特征选择。博客上有许多示例可供您作为起点,请使用搜索框。
我学到了很多信息。哈哈。
谢谢!
你好,
首先,感谢您的帖子!
我的问题如下:
当变量不是正态分布时,我们能使用互信息吗?
谢谢你
祝您有美好的一天
我相信是的。
嗨 Jason,
感谢您精彩的帖子。我一直在阅读《机器学习概率》一书,但我很难理解信息增益和互信息之间的关系。具体来说,文章提到计算 I(X; Y) 和 IG(S, a) 的公式是等效的。然而,我不太确定我是否完全理解了这一点。
我理解 I(X; Y) 关注的是两个随机变量 X 和 Y 之间的关系,而 IG(S, a) 衡量通过按随机变量 a 分割数据集来减少熵。因此,在 IG 公式中,a 不是 S 的一部分吗?我给出了一个很好的 IG 示例,但如果可能的话,您能否通过一个示例来帮助阐明 I(X; Y) 公式,展示 IG 和 I(X; Y) 是等效的?
谢谢!
不客气。
S 和 a 就像 X 和 Y 一样是两个“变量”。我们对数据分割执行的计算与我们对数据集中两列执行的计算相同。
感谢您这篇有用的帖子。
我认为,在关于互信息的部分之前提到信息增益和互信息是相同的会更好。阅读时不太清楚它们之间的区别……(直到您在最后说明没有区别)。
感谢您的建议!
我的经验是,互信息和来自已训练树模型的特征重要性在重要特征的排名上会有不同的结果。所以,如果信息增益和互信息是相同的,我想知道是什么导致了这种差异?
可能是您树模型训练过程中的一些随机性?
非常感谢您提供有益且精彩的解释,我从中获益匪浅,因为我最近一直在练习 VFDT 算法。但我有些困惑,希望您能解答一下 :D。
我在计算熵时遇到了困难。在我的情况下,并非所有特征值都匹配一个类别(二元类别 0,1)。因此,在我计算熵时。总会有零类别的数量。
例如,
…
# 分割 1(通过 value1 分割)
s1_class0 = 8 / 8
s1_class1 = 0 / 8
s1_entropy = entropy(s1_class0, s1_class1)
但是,在这种情况下,由于 s1_class1 = 0,熵计算将给出 NaN,因为无法计算 log2(0)。
…
def entropy(class0, class1)
return -(class0 * log2(class0) + class1 * log2(class1))
我不知道我是否误解了什么,但看起来很奇怪。
没错。通常的方法是忽略零概率。换句话说,对于方程“p log(p)”,其中 p 为零,我们将其假定为零(0 乘以 NaN = 0)。
在《机器学习理论与算法理解》一书中,它提到增益度量可以通过多种方式计算,如训练误差、信息增益和基尼指数。基尼指数用于 CART,信息增益用于 ID3 算法。那么训练误差呢?它是否与信息增益相似?
如何使用训练误差计算增益——有没有相关的帖子?
引用该书
增益度量的实现
训练误差:增益的最简单定义是训练误差的减少。
形式上,令 C(a) = min{a, 1−a}。请注意,在按
特征 i 进行拆分之前的训练误差是 C(PS[y = 1]),因为我们对标签进行了多数投票。同样,
按特征 i 拆分后的误差是
(给定公式)
信息增益:另一种流行的增益度量,用于 ID3
和 Quinlan (1993) 的 C4.5 算法的信息增益。信息
增益是拆分前后标签熵的差值,
通过将前一个表达式中的函数 C 替换为
熵函数,
C(a) = −a log(a) − (1 − a) log(1 − a)。
对于训练循环中使用的误差,我认为这篇帖子会有帮助:https://machinelearning.org.cn/cross-entropy-for-machine-learning/
你好 Jason,
我有一个大约 20,000 个特征的数据集,我想计算特征 1 和特征 2 的互信息。如果您能对此提供一些指导,我将不胜感激。
目标是能够通过查看互信息来进行成对特征比较。
提前感谢。
找到特征 1、特征 2 的概率分布(经验分布即可),以及特征 1 和特征 2 的多元分布。然后您就可以应用相应的公式了。
嗨,Jason,
我有一个超过 20,0000 个特征的数据集。我想进行成对特征比较。根据本页的教程,互信息用于特征选择。我的问题是如何计算任意两个特征之间的互信息。
您需要先找到特征的概率分布。然后应用公式。您也可以考虑使用 scikit-learn:https://scikit-learn.cn/stable/modules/generated/sklearn.feature_selection.mutual_info_classif.html
你好,
我想为回归问题中的分类特征计算属性权重。
类似于回归任务的属性加权值差度量。
您有什么建议吗?
你好 Nal…我建议您查阅各种回归指标以用于回归应用。
https://machinelearning.org.cn/regression-metrics-for-machine-learning/
使用这种方法与使用传统的 Lasso / Ridge 回归进行变量选择有什么关系?
你好 Eugene…以下内容可能对您有帮助
https://machinelearning.org.cn/lasso-regression-with-python/
你好,这篇文章信息量很大。我想知道在多类数据集的情况下,我们在计算熵时是否仍然考虑 log2 或 logn(n 表示类数)?
你好 Aparna…以下资源可能有助于阐明
https://gombru.github.io/2018/05/23/cross_entropy_loss/
嗨,Jason,
感谢这篇文章,它非常有趣且有用!
我有 2 个问题
1) 在特征选择期间,是否有经验法则来决定要保留的特征的正确百分比?是 10%、20%、30%、更多?
2) 我曾读到互信息是一个正数,没有上限。
然而,互信息大于 2 的情况很少见。
知道这一点,是否存在互信息的阈值,超过该阈值特征最有可能与预测目标变量相关?
谢谢!
您的哪本书中解释了信息增益?
你好 Omkar…以下资源提供了与此主题相关的内容
https://machinelearning.org.cn/probability-for-machine-learning/
您好,感谢您如此精彩的解释!
scikit-learn 的 mutual_info_score 是否有相同的功能?
你好 Shayan…以下参考资料可能有助于澄清
https://scikit-learn.cn/stable/modules/generated/sklearn.metrics.mutual_info_score.html
在“什么是信息增益?”一节的第四段“在信息论中,我们喜欢描述事件的‘惊喜’。低概率事件更令人惊喜,因此具有更多的信息。”
这不应该是说低概率事件“不太令人惊喜”……?
你好 Sahil…你说得对。这个词被用来指示一个可以根据概率值衡量的相对比较。换句话说,它只是一个用于关联事件评分的术语。
非常非常好的解释,让我对这个主题更感兴趣了。逻辑链非常清晰,最适合初学者。
感谢您的反馈 Alicia!我们很感激!