独家 | 熵–数据科学初学者必知的关键概念(附链接)


作者:SETHNEHA

翻译:刘思婧

校对:王可汗

本文约3700字,建议阅读18分钟。

本文为大家介绍了熵的概念、计算及其在决策树算法中的应用。

引言

熵是机器学习的关键概念之一。对于任何机器学习爱好者来说,这都是必知的,但许多人对此概念仍感到困惑。本文的重点是,通过探究概率论的基本概念、公式的逻辑与意义、以及其对决策树算法的重要性来了解熵的作用。

那么,熵是什么?

熵的起源

熵一词最早由德国物理学家、数学家鲁道夫·克劳修斯(Rudolf Clausius)提出,并在热力学领域中使用。

1948年,数学家兼电气工程师香农(Claude E. Shannon)发表了一篇关于“通信的数学理论”的论文,解决了信息度量、选择和不确定性的问题。香农开创了信息论领域,因此也被称为“信息论之父”。

“信息论,是一种研究信息编码以及信息的量化、存储和交流的数学方法。”

在他的论文中,以数学方式测量了通信信号中“丢失信息”的统计性质。这项工作的目的是,探究如何最好地编码发送者想要传输的信息。为此,香农开发了信息熵作为一种估计消息中信息内容的方法,这是衡量消息丢失的不确定度的一种方法。

因此,我们知道,信息论中的主要度量是熵。

熵一词的英文含义是:它是一种无序(disorder)、混乱(confusion)、无组织(disorganization)的状态。

让我们深入了解这个概念。

首先,什么是信息(information)?我所说的“信息”是什么?简而言之,信息是从某物或某人中学到的一些事实。理论上讲,我们可以理解为,信息是可以作为变量存储、传输或传递的,可以取不同的值。换言之,变量只是存储单位。因此,我们通过查看变量的值,从变量中获取信息,就像通过读取消息或信件的内容,从消息或信件中获取细节(或信息)。

熵的计算,可以基于变量中存在的不同值的数量(信息量),也可以基于变量值所具有的惊奇度(surprise)。

假设您此刻收到一条消息,若该消息是先前文本的重复,则该消息完全没有提供信息;但若该消息透露了美国大选的结果,则该消息无疑是非常有用的。这告诉我们,消息或文本中的信息量,与其中可提供的惊奇度成正比。因此,可以直观理解,信息的这种存储、传输或传递,与该变量中的信息量有关。现在,扩展到某个事件的结果。例如,事件是投掷一枚硬币,它将有两个公平的、同样可能的结果,该结果提供较少的信息。换言之,由于硬币的结果将是正面或反面,因此具有较少的惊奇度。因此,投掷一枚硬币具有较低的熵。

在信息论中,随机变量的熵,是变量可能结果中固有的“信息量”、“惊奇度”或“不确定度”的平均水平。即,事件越具确定性,它包含的信息将越少。简言之,信息是不确定度或熵的增加。

那么这些理论,对我们有哪些帮助呢?我们如何将其应用到机器学习模型中?

为了理解这一点,首先让我们快速了解一下决策树算法。

决策树算法

决策树(Decision Tree)是一种监督学习技术,是一种分层的if-else语句,它仅是规则的集合,或者也称为基于条件比较运算符的拆分条件。决策树算法广泛应用于回归和分类问题。

以下示例将汽车类型二分为轿车和运动卡车,应用决策树算法找到因变量(response variable)与预测变量(predictors)之间的关系,并以树形结构的形式表示该关系。

图片来源:https://media.springernature.com/original/springer-static/image/prt%3A978-1-4614-8265-9%2F19/MediaObjects/978-1-4614-8265-9_19_Part_Fig2-555_HTML.png

该流程图由根节点(Root node)、分支节点(Branch nodes)和叶子节点(Leaf nodes)组成。根节点是原始数据,分支节点是决策规则,而叶节点是决策的输出,且这些节点无法进一步划分为分支。因此,它是基于某些条件或作为所述规则的问题的所有可能结果的图形描述。通过创建自上而下的树来训练模型,继而使用该训练后的决策树来测试新数据,以将其分为一个类别。

需要注意的是,通过设计,决策树算法会尝试构建因变量中最小叶子节点是同质的树。目标变量的同质性(homogeneity)意味着结果中只有一种类型的记录,即在叶子节点中,该记录传达的是轿车或是运动卡车。有时,难点在于,树是受限的,即树被迫停止构建,以将分支分解为更小的叶子节点。在这种情况下,目标变量不是同质的,结果仍然是汽车类型(轿车和运动卡车)的混合。

那么对于决策树算法,应如何选择特征?在该特征中以什么阈值来构建树?

为了回答这个问题,我们继续学习机器学习算法中损失函数(loss function)的概念。

损失函数

决策树算法通过优化损失函数从数据集中创建树。在分类问题的情况下,损失函数用以度量根节点的目标列中的不纯度(impurity)。

不纯度是指我们在上述讨论的信息中可获得的惊奇度或不确定度。在给定节点上,不纯度用以度量Y变量中不同类别的混合物(在我们的例子中,即不同汽车类型的混合)。因此,不纯度也称为在信息中或每个节点上存在的异质性(heterogeneity)。

我们的目标是在叶子节点(或最终结果)上尽可能减少这种不纯度。这意味着目标函数是减少目标列中的不纯度(即惊奇度或不确定度),换言之,是在给定数据的每个分支处增加Y变量的同质性(homogeneity)。

要了解目标函数,我们需要了解如何计算目标列的不纯度。有两个指标:熵和基尼系数。除此之外,为了回答先前关于决策树如何选择特征的问题,有多种拆分方法,包括熵、基尼系数、卡方。鉴于本篇的重点是熵,我们将进一步探讨,熵如何帮助创建树。

假设现在进行一项实验:有一盒装满相等袋数的、两种口味(焦糖拿铁和卡布奇诺)的咖啡。您可以闭眼选择盒中的一袋咖啡,如果您获得的是焦糖拿铁,那么您可以自由停止阅读本文;如果您获得的是卡布奇诺,那么您将必须阅读全文。

如果盒中只有焦糖拿铁和卡布奇诺两种咖啡,那么我们知道结果将是什么,因此不确定度(或惊奇度)将为零。获得焦糖拿铁或卡布奇诺的概率为:

P(咖啡==焦糖拿铁)= 0.50

P(咖啡==卡布奇诺)= 1–0.50 = 0.50

如果盒中只有焦糖拿铁一种咖啡,在没有不确定度的情况下,事件发生概率为:

P(咖啡==焦糖拿铁)= 1

P(咖啡袋==卡布奇诺)= 1–1 = 0

即,异质性与不确定度之间存在联系:事件的异质性越大,不确定度就越大;反之,事件的同质性越大,不确定度就越小。不确定度表示为熵(Entropy)或基尼系数(Gini)。

熵的作用

香农(Claude E. Shannon)通过以下方程式,以数学形式表达了概率与异质性或不纯度之间的这种关系:

(或)

不确定度或不纯度表示为类别的概率以2为底的对数;索引(i)表示可能的类别数(在我们之前的汽车类型二分例子中i=2)。

该方程式由一条对称曲线图形表示,如下所示。

图片来源:https://ccweb.imgix.net/https%3A%2F%2Fccweb.imgix.net%2Fhttps%253A%252F%252Fimg.youtube.com%252Fvi%252F6YEn9QRy3ks%252Fhqdefault.jpg%3Fauto%3Dformat%26cs%3Dstrip%26fit%3D%26h%3D710%26ixlib%3Dphp-3.3.0%26w%3D400%26s%3D80849c8a862b1138109a23bffe2f42ee?auto=format&ixlib=php-3.3.0&s=c1f6104029dafc383ef2e31bd9faa5f4

在X轴上是事件的概率,在Y轴上表示异质性(由H(X) 表示的不纯度)。

我们将详细探讨该曲线的意义,然后计算咖啡口味实验的熵。

具有一个非常独特的属性,即当只有两个结果时,例如事件的概率=为1或0.50,则在这种情况下,取值如下(忽略负数):

当概率变为0时,对数值趋于无穷大,曲线的形状变为:

但是,我们不希望出现上述情况,因为熵或不纯度的测度只能取0~1的值(概率范围为0~1)。因此,为了使曲线和的值恢复为零,我们将与概率(即本身)相乘。因此,表达式变为返回负值,为了消除这种负效应,我们将结果乘以负号,最后,方程式即为

现在,该方程式可用于显示不确定度如何根据事件发生的可能性而变化。曲线如下:

熵从0到1的取值范围,是针对二分类问题的。对于多分类问题,上述关系式仍然成立,但是取值规模可能会发生改变。

Python中的熵计算

我们仍然以前述的咖啡事件示例,计算三种不同情况下的熵值。事件Y表示获得焦糖拿铁。两种口味类别的异质性或不纯度公式如下:

其中,表示Y=1的概率,即事件(获得焦糖拿铁)发生的概率,表示Y=0的概率,即事件(获得焦糖拿铁)未发生的概率。

情况一:

在情况一中,当盒中装有7袋焦糖拿铁和3袋卡布奇诺咖啡时,要求选择其中一个。熵值0.881即对该事件不确定度的度量。

情况二:

情况三:

在情况二和三中,可以看到熵值分别为1和0。在情况三中,当盒中只有一种口味的咖啡(焦糖拿铁)时,不确定度或惊奇度也将被完全消除,从而熵值为零。

在Python中的熵计算过程如下:

那么,决策树算法是如何使用这种计算方式来构建树的?

决策树中的熵

如上所述,在决策树中,损失函数最小化叶子节点中的异质性。因此,目标是选择特征,并在特征中以阈值来构建树,以便在将数据分为两部分时,获得最大可能的同质性,换言之,目标是使树的熵值最小化。

在根节点上,通过香农的熵计算方程式,计算目标列的熵。在分支节点上,为目标列计算加权熵。加权熵意味着每个特征取权重(每个类别的概率)。熵值越小,获得的信息越多。

信息增益(Information Gain)即是在数据中观察到的模式,亦即熵的减少。也可以视为父节点的熵减去子节点的熵,计算方式为(1–加权熵)。

前述示例中,三种情况的熵和信息增益计算如下:

现在,我们示例计算节点的熵和信息增益。

假设有下面的树,在根节点中共有四个值,子节点1中具有3个值(分支1具有2个值,分支2具有1个值),子节点2中具有1个值。根节点的熵为1。

图片来源:https://media.geeksforgeeks.org/wp-content/uploads/tr4.png

此时,子节点2(child node 2)的熵为0,因为该节点中只有1个值,不存在异质性。子节点1的熵计算如下:

继而,信息增益的计算如下:

结语

信息熵(香农熵)量化了随机变量的值或随机过程的结果中涉及的不确定度(惊奇度)。它在决策树中的意义在于,使我们能够计算目标变量的不纯度或异质性。继而,为了在因变量中达到最大的同质性水平,以使子节点的总熵必须小于父节点的熵的方式创建子节点。

参考资料

https://en.wikipedia.org/wiki/Claude_Shannon

https://en.wikipedia.org/wiki/Information_theory

https://en.wikipedia.org/wiki/History_of_entropy#Information_theory

原文标题:

Entropy – A Key Concept for All Data Science Beginners

原文链接:

https://www.analyticsvidhya.com/blog/2020/11/entropy-a-key-concept-for-all-data-science-beginners/


编辑:王菁

校对:林亦霖

译者简介

刘思婧,清华大学新闻系研一在读,数据传播方向。文理兼爱,有点小情怀的数据爱好者。希望结识更多不同专业、不同专长的伙伴,拓宽眼界、优化思维、日日自新。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。


点击“阅读原文”拥抱组织

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值