Machine Learning Mastery 概率教程(五)
信息熵的温和介绍
最后更新于 2020 年 7 月 13 日
信息论是数学的一个分支,研究在有噪声的信道上传输数据。
信息论的一个基石是量化信息中有多少信息的想法。更一般地说,这可以用来量化事件和随机变量中的信息,称为熵,并使用概率进行计算。
计算信息和熵是机器学习中的一个有用工具,被用作特征选择、建立决策树以及更一般地拟合分类模型等技术的基础。因此,机器学习实践者需要对信息和熵有很强的理解和直觉。
在这篇文章中,你会发现一个关于信息熵的温和介绍。
看完这篇文章,你会知道:
- 信息论关注数据压缩和传输,建立在概率的基础上,支持机器学习。
- 信息提供了一种以比特为单位量化事件惊喜程度的方法。
- 熵提供了从随机变量的概率分布中提取表示事件所需的平均信息量的度量。
用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。
我们开始吧。
- 2019 年 11 月更新:增加了概率 vs 信息的例子以及更多关于熵的直觉。
克里斯蒂亚诺·梅德罗斯·达尔本拍摄的《信息熵的温柔介绍》,版权所有。
概观
本教程分为三个部分;它们是:
- 什么是信息论?
- 计算事件的信息
- 计算随机变量的熵
什么是信息论?
信息论是一个研究领域,涉及量化信息用于交流。
它是数学的一个分支,与数据压缩和信号处理的极限等主题有关。该领域是由克劳德·香农在美国电话公司贝尔实验室工作时提出和开发的。
信息论关注以紧凑的方式表示数据(称为数据压缩或源编码的任务),以及以抗差错的方式传输和存储数据(称为纠错或信道编码的任务)。
—第 56 页,机器学习:概率视角,2012。
信息的一个基本概念是量化事件、随机变量和分布等事物中的信息量。
量化信息量需要使用概率,因此信息论与概率的关系。
信息的度量广泛应用于人工智能和机器学习中,例如决策树的构建和分类器模型的优化。
因此,信息论和机器学习之间有着重要的关系,从业者必须熟悉该领域的一些基本概念。
为什么要把信息论和机器学习统一起来?因为它们是同一枚硬币的两面。[……]信息论和机器学习仍然属于一起。大脑是终极的压缩和交流系统。数据压缩和纠错码的最先进算法使用与机器学习相同的工具。
—第五页,信息论、推理和学习算法,2003。
计算事件的信息
量化信息是信息论领域的基础。
量化信息背后的直觉是衡量一个事件中有多少惊喜的想法。那些罕见的事件(低概率)更令人惊讶,因此比那些常见的事件(高概率)拥有更多的信息。
- 低概率事件:高信息(惊人)。
- 高概率事件:低信息(不出所料)。
信息论背后的基本直觉是,学习一个不太可能发生的事件比学习一个可能发生的事件信息更丰富。
—第 73 页,深度学习,2016。
罕见事件比常见事件更不确定或更令人惊讶,需要更多的信息来表示它们。
我们可以利用事件发生的概率来计算事件中的信息量。这被称为“香农信息”、“自我信息”或简称为“信息”,并且可以为离散事件 x 计算如下:
- 信息(x)=-对数(p(x))
其中 log() 为以 2 为底的对数, p(x) 为事件发生的概率 x 。
选择以 2 为底的对数意味着信息度量的单位是位(二进制数字)。在信息处理的意义上,这可以直接解释为表示事件所需的位数。
信息的计算常写成h();例如:
- h(x)=-对数(p(x))
负号确保结果始终为正或零。
当事件的概率为 1.0 或确定性时,信息将为零,例如没有惊喜。
让我们用一些例子来具体说明这一点。
考虑抛一枚公平的硬币。正面(和反面)的概率是 0.5。我们可以使用 log2()函数计算 Python 中翻转头部的信息。
# calculate the information for a coin flip
from math import log2
# probability of the event
p = 0.5
# calculate information for event
h = -log2(p)
# print the result
print('p(x)=%.3f, information: %.3f bits' % (p, h))
运行该示例会将事件的概率打印为 50%,并将事件的信息内容打印为 1 位。
p(x)=0.500, information: 1.000 bits
如果同一枚硬币被翻转 n 次,那么这一系列翻转的信息将是 n 位。
如果硬币不公平,头像出现的概率反而是 10% (0.1),那么这个事件将更加罕见,需要 3 位以上的信息。
p(x)=0.100, information: 3.322 bits
我们也可以在一轮公平的六面骰子中探索信息,例如掷出 6 的信息。
我们知道滚动任何数字的概率是 1/6,这比掷硬币的 1/2 小,因此我们会期待更多的惊喜或更多的信息。
# calculate the information for a dice roll
from math import log2
# probability of the event
p = 1.0 / 6.0
# calculate information for event
h = -log2(p)
# print the result
print('p(x)=%.3f, information: %.3f bits' % (p, h))
运行该示例,我们可以看到我们的直觉是正确的,事实上,在一卷公平骰子中有超过 2.5 位的信息。
p(x)=0.167, information: 2.585 bits
可以使用其他对数来代替基数-2。例如,在计算信息时,使用以-e 为底的自然对数(欧拉数)也很常见,在这种情况下,单位被称为“纳特”
我们可以进一步发展低概率事件有更多信息的直觉。
为了说明这一点,我们可以计算 0 到 1 之间概率的信息,并绘制每个概率的相应信息。然后,我们可以创建概率与信息的关系图。我们预计该图将从高信息的低概率向下弯曲到低信息的高概率。
下面列出了完整的示例。
# compare probability vs information entropy
from math import log2
from matplotlib import pyplot
# list of probabilities
probs = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
# calculate information
info = [-log2(p) for p in probs]
# plot probability vs information
pyplot.plot(probs, info, marker='.')
pyplot.title('Probability vs Information')
pyplot.xlabel('Probability')
pyplot.ylabel('Information')
pyplot.show()
运行该示例会创建概率与位信息的关系图。
我们可以看到低概率事件更令人惊讶并携带更多信息,而高概率事件的补充携带更少信息的预期关系。
我们还可以看到,这种关系不是线性的,它实际上是稍微亚线性的。考虑到日志函数的使用,这是有意义的。
概率与信息图
计算随机变量的熵
我们也可以量化一个随机变量中有多少信息。
例如,如果我们想用概率分布 p 计算随机变量 X 的信息,这可以写成函数H();例如:
- 高(十)
实际上,计算随机变量的信息与计算随机变量事件概率分布的信息是一样的。
计算一个随机变量的信息被称为“信息熵”、“香农熵”或简称为“熵”。通过类比,它与物理学中熵的概念有关,因为两者都与不确定性有关。
熵的直觉是,它是从随机变量的概率分布中提取的表示或传输事件所需的平均位数。
……分布的香农熵是从该分布中提取的事件中的预期信息量。它给出了对来自分布 p 的符号进行编码平均所需的比特数的下限
—第 74 页,深度学习,2016。
对于随机变量 X ,在 K 离散状态下 k ,熵可以计算如下:
- h(X)=-和(K p(k) * log(p(k))中的每个 K)
即每个事件的概率之和乘以每个事件概率的对数的负数。
和信息一样, log() 函数使用 base-2,单位为位。可以使用自然对数,单位为纳特。
最低熵是为一个随机变量计算的,该变量有一个概率为 1.0 的单一事件,这是一个确定性。一个随机变量的最大熵是所有事件的可能性相等。
我们可以考虑一卷公平骰子,计算变量的熵。每个结果都有相同的 1/6 概率,因此是一个均匀的概率分布。因此,我们希望平均信息与上一节计算的单个事件的信息相同。
# calculate the entropy for a dice roll
from math import log2
# the number of events
n = 6
# probability of one event
p = 1.0 /n
# calculate entropy
entropy = -sum([p * log2(p) for _ in range(n)])
# print the result
print('entropy: %.3f bits' % entropy)
运行该示例将熵计算为超过 2.5 位,这与单个结果的信息相同。这是有意义的,因为平均信息与信息的下限相同,因为所有的结果都是相同的。
entropy: 2.585 bits
如果我们知道每个事件的概率,我们可以使用熵()SciPy 函数直接计算熵。
例如:
# calculate the entropy for a dice roll
from scipy.stats import entropy
# discrete probabilities
p = [1/6, 1/6, 1/6, 1/6, 1/6, 1/6]
# calculate entropy
e = entropy(p, base=2)
# print the result
print('entropy: %.3f bits' % e)
运行该示例会报告与我们手动计算的结果相同的结果。
entropy: 2.585 bits
我们可以进一步发展概率分布熵的直觉。
回想一下,熵是表示从分布中随机抽取的偶数所需的位数,例如平均事件。我们可以用两个事件的简单分布来探索这一点,就像掷硬币一样,但是要探索这两个事件的不同概率,并计算每个事件的熵。
在一个事件占主导地位的情况下,比如一个偏斜的概率分布,那么惊喜就少了,分布的熵也就低了。在没有事件支配另一个事件的情况下,例如相等或近似相等的概率分布,那么我们将期望更大或最大的熵。
- 偏斜概率分布 ( 不出所料):低熵。
- 均衡概率分布 ( 惊人):高熵。
如果我们从分布中事件的偏斜概率过渡到相等概率,我们将期望熵从低开始并增加,特别是从不可能/确定性事件的最低熵 0.0(概率分别为 0 和 1)到相等概率事件的最大熵 1.0。
下面的例子实现了这一点,在这个转换中创建每个概率分布,计算每个概率分布的熵并绘制结果。
# compare probability distributions vs entropy
from math import log2
from matplotlib import pyplot
# calculate entropy
def entropy(events, ets=1e-15):
return -sum([p * log2(p + ets) for p in events])
# define probabilities
probs = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5]
# create probability distribution
dists = [[p, 1.0 - p] for p in probs]
# calculate entropy for each distribution
ents = [entropy(d) for d in dists]
# plot probability distribution vs entropy
pyplot.plot(probs, ents, marker='.')
pyplot.title('Probability Distribution vs Entropy')
pyplot.xticks(probs, [str(d) for d in dists])
pyplot.xlabel('Probability Distribution')
pyplot.ylabel('Entropy (bits)')
pyplot.show()
运行该示例会创建从[0,1]概率到[0.5,0.5]概率的 6 个概率分布。
正如预期的那样,我们可以看到,随着事件的分布从偏斜变为平衡,熵从最小值增加到最大值。
也就是说,如果从概率分布中得出的平均事件不令人惊讶,我们会得到一个较低的熵,而如果令人惊讶,我们会得到一个较大的熵。
我们可以看到过渡不是线性的,它是超线性的。我们还可以看到,如果我们继续过渡到[0.6,0.4]并向前过渡到[1.0,0.0]这两个事件,形成一个倒抛物线形状,这条曲线是对称的。
注意,在计算熵时,我们必须给概率加上一个很小的值,以避免计算零值的对数,这将导致一个无穷大而不是一个数。
概率分布与熵的关系图
计算一个随机变量的熵为其他度量提供了基础,如互信息(信息增益)。
熵也为计算两个概率分布之间的差异提供了基础,即交叉熵和KL-散度。
进一步阅读
如果您想更深入地了解这个主题,本节将提供更多资源。
书
- 信息论、推理和学习算法,2003。
章
- 第 2.8 节:信息论,机器学习:概率视角,2012。
- 1.6 节:信息论、模式识别与机器学习,2006。
- 【3.13 节信息论,深度学习,2016。
应用程序接口
文章
摘要
在这篇文章中,你发现了一个关于信息熵的温和介绍。
具体来说,您了解到:
- 信息论关注数据压缩和传输,建立在概率的基础上,支持机器学习。
- 信息提供了一种以比特为单位量化事件惊喜程度的方法。
- 熵提供了从随机变量的概率分布中提取表示事件所需的平均信息量的度量。
你有什么问题吗? 在下面的评论中提问,我会尽力回答。
机器学习最大似然估计的温和介绍
最后更新于 2019 年 11 月 5 日
密度估计是估计来自问题域的观测样本的概率分布的问题。
有许多技术可以解决密度估计,尽管机器学习领域中使用的一个常见框架是最大似然估计。最大似然估计涉及定义似然函数,用于计算给定概率分布和分布参数时观察数据样本的条件概率。这种方法可以用来搜索可能的分布和参数的空间。
这种灵活的概率框架也为许多机器学习算法提供了基础,包括分别用于预测数值和类标签的重要方法,如线性回归和逻辑回归,但也更普遍地用于深度学习人工神经网络。
在这篇文章中,你会发现最大似然估计的温和介绍。
看完这篇文章,你会知道:
- 最大似然估计是解决密度估计问题的概率框架。
- 它包括最大化似然函数,以便找到最能解释观测数据的概率分布和参数。
- 它为机器学习中的预测建模提供了一个框架,在这个框架中,寻找模型参数可以作为一个优化问题。
用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。
我们开始吧。
机器学习最大似然估计简介 图片由吉勒姆·维尔鲁特提供,版权所有。
概观
本教程分为三个部分;它们是:
- 概率密度估计问题
- 最大似然估计
- 与机器学习的关系
概率密度估计问题
一个常见的建模问题涉及如何估计数据集的联合概率分布。
例如,给定来自域( x1,x2,x3,…,xn )的观察样本( X ,其中每个观察都是从具有相同概率分布(所谓的独立同分布,即,即,或接近于它)的域中独立得出的。
密度估计包括选择一个概率分布函数和该分布的参数,最好地解释观测数据的联合概率分布( X )。
- 概率分布函数怎么选?
- 如何选择概率分布函数的参数?
这个问题变得更具挑战性,因为从总体中抽取的样本( X )很小并且有噪声,这意味着对估计的概率密度函数及其参数的任何评估都会有一些误差。
有许多技术可以解决这个问题,尽管有两种常见的方法:
- 最大后验概率,一种贝叶斯方法。
- 最大似然估计,频率法。
主要区别在于,最大似然估计假设所有的解决方案事先都是相同的,而最大似然估计允许利用关于解决方案形式的事先信息。
在这篇文章中,我们将仔细研究最大似然估计方法及其与应用机器学习的关系。
最大似然估计
概率密度估计的一种解决方案称为最大似然估计,简称 MLE。
最大似然估计涉及将问题作为优化或搜索问题来处理,其中我们寻求一组参数,该组参数导致数据样本的联合概率的最佳拟合( X )。
首先,它包括定义一个名为θ的参数,该参数定义了概率密度函数的选择和该分布的参数。它可能是一个数值向量,其值平滑地变化,并映射到不同的概率分布及其参数。
在最大似然估计中,我们希望在给定特定概率分布及其参数的情况下,从联合概率分布中观测数据的概率最大化,正式表述为:
- p(X |θ)
这个条件概率经常用分号(;)符号而不是条形符号(|),因为θ不是随机变量,而是未知参数。例如:
- p(X;θ)
或者
- P(x1,x2,x3,…,xn;θ)
这个结果条件概率被称为观察给定模型参数的数据的可能性,并使用符号 L() 来表示可能性函数。例如:
- l(X;θ)
最大似然估计的目标是找到使似然函数最大化的一组参数(θ),例如产生最大似然值。
- 最大化 L(X;θ)
我们可以解包由似然函数计算的条件概率。
假设样本由 n 个示例组成,我们可以将其框定为给定概率分布参数(θ)的 X 中的观测数据样本 x1,x2,x3,…,xn 的联合概率。
- L(x1,x2,x3,…,xn;θ)
给定分布参数,联合概率分布可以重申为观察每个例子的条件概率的乘积。
- 产品一至产品二(Xi;θ)
将许多小概率相乘在实际中可能在数值上不稳定,因此,通常将这个问题重述为给定模型参数时观察每个例子的对数条件概率的总和。
- 对数和(Xi;θ))
其中通常使用以-e 为底的对数,称为自然对数。
这种在许多概率上的乘积可能是不方便的[……]它容易出现数字下溢。为了得到一个更方便但等价的优化问题,我们观察到取似然的对数不会改变它的 arg max,但可以方便地将乘积转化为和
—第 132 页,深度学习,2016。
鉴于对数在似然函数中的频繁使用,它通常被称为对数似然函数。
在优化问题中,通常倾向于最小化成本函数,而不是最大化成本函数。因此,使用对数似然函数的负值,通常称为负对数似然函数。
- 最小化对数和(Xi;θ))
在软件中,我们经常把两者都称为最小化成本函数。最大似然因此成为负对数似然的最小化…
—第 133 页,深度学习,2016。
与机器学习的关系
这个密度估计问题与应用机器学习直接相关。
我们可以将拟合机器学习模型的问题框架为概率密度估计问题。具体来说,模型和模型参数的选择被称为建模假设 h ,问题涉及到寻找最能解释数据 X 的 h 。
- p(X;h)
因此,我们可以找到最大化似然函数的建模假设。
- 最大化 L(X;h)
或者更确切地说:
- 最大化对数和(Xi;h))
这为估计数据集的概率密度提供了基础,通常用于无监督的机器学习算法;例如:
- 聚类算法。
在著名的“期望最大化”或 EM 算法的背景下,使用期望对数联合概率作为具有隐藏变量的概率模型中学习的关键量更为人所知。
—第 365 页,数据挖掘:实用机器学习工具与技术,2016 年第 4 版。
最大似然估计框架也是监督机器学习的有用工具。
这适用于我们有输入和输出变量的数据,在回归和分类预测建模的情况下,输出变量可以是数值或类别标签。
我们可以将其表述为给定输入( X )给定建模假设( h )的输出( y )的条件概率。
- 最大化 L(y | X;h)
或者更确切地说:
- 最大化对数和(Xi;h))
最大似然估计器可以很容易地推广到我们的目标是估计条件概率 P(y | x;这实际上是最常见的情况,因为它构成了大多数监督学习的基础。
—第 133 页,深度学习,2016。
这意味着通常用于密度估计的相同最大似然估计框架可以用于寻找监督学习模型和参数。
这为基本的线性建模技术提供了基础,例如:
- 线性回归,用于预测数值。
- 逻辑回归,用于二分类。
在线性回归的情况下,模型被约束到一条线上,并且包括为最适合观察数据的线找到一组系数。幸运的是,这个问题可以通过分析来解决(例如,直接使用线性代数)。
在逻辑回归的情况下,该模型定义了一条线,并涉及为最好地分隔类别的线找到一组系数。这不能通过分析来解决,通常通过使用诸如 BFGS 算法或变体的有效优化算法来搜索可能系数值的空间来解决。
使用更通用的优化算法,如随机梯度下降,这两种方法的求解效率也较低。
事实上,大多数机器学习模型都可以在最大似然估计框架下构建,这为将预测建模作为优化问题来处理提供了一种有用且一致的方法。
机器学习中最大似然估计器的一个重要好处是,随着数据集大小的增加,估计器的质量不断提高。
进一步阅读
如果您想更深入地了解这个主题,本节将提供更多资源。
书
- 第五章机器学习基础,深度学习,2016。
- 第二章概率分布,模式识别和机器学习,2006。
- 第八章模型推断和平均,统计学习的要素,2016。
- 第九章概率方法,数据挖掘:实用机器学习工具和技术,第 4 版,2016。
- 第二十二章最大似然和聚类,信息论,推理和学习算法,2003。
- 第八章学习分布,贝叶斯推理和机器学习,2011。
文章
摘要
在这篇文章中,你发现了最大似然估计的温和介绍。
具体来说,您了解到:
- 最大似然估计是解决密度估计问题的概率框架。
- 它包括最大化似然函数,以便找到最能解释观测数据的概率分布和参数。
- 它为机器学习中的预测建模提供了一个框架,在这个框架中,寻找模型参数可以作为一个优化问题。
你有什么问题吗? 在下面的评论中提问,我会尽力回答。
什么是概率?
最后更新于 2019 年 11 月 29 日
不确定性包括在信息不完全的情况下做出决策,这是我们在这个世界上通常的操作方式。
处理不确定性通常是用诸如机会、运气和风险这样的日常词汇来描述的。
概率是一个数学领域,它给我们提供了语言和工具,以有原则的方式量化事件和原因的不确定性。
在这篇文章中,你会发现概率的温和介绍。
看完这篇文章,你会知道:
- 确定性是不寻常的,世界是混乱的,需要在不确定性下运作。
- 概率量化了事件发生的可能性或信念。
- 概率论是不确定性的数学。
用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。
我们开始吧。
- 2019 年 9 月更新:修正了概率转换赔率的错别字(感谢迈克尔)。
什么是概率? 艾玛·简·霍宾·韦斯特比摄影,版权所有。
概观
本教程分为四个部分;它们是:
- 不确定性是正常的
- 事件概率
- 概率论
- 概率的两个流派
不确定性是正常的
不确定性是指信息不完善或不完整。
大部分数学都集中在确定性和逻辑上。
很多编程也是这样,我们在开发软件时假设它会确定性地执行。然而,在外壳下,计算机硬件容易受到噪音和错误的影响,这些问题一直在被检查和纠正。
完全信息的确定性是不寻常的。这是游戏和人为例子的地方。
我们所做的或感兴趣的几乎每件事都涉及不确定性或错误性之间的连续统一体的信息。世界是混乱和不完美的,我们必须在这种不确定性面前做出决定和行动。
例如,我们经常谈论运气、机会、赔率、可能性和风险。这些是我们用来解释和协商世界不确定性的词汇。
在不确定的世界中进行推理和推理时,我们需要有原则的、形式化的方法来表达和解决问题。
概率提供了处理不确定性的语言和工具。
事件概率
概率是量化事件发生可能性的一种度量。
例如,我们可以量化一个社区发生火灾、一个地区发生洪水或购买产品的概率。
一个事件的概率可以通过计算事件的所有发生次数,除以事件的总可能发生次数来直接计算。
- 概率=出现/(不出现+出现)
分配的概率是一个小数值,始终在 0 和 1 之间,其中 0 表示无概率,1 表示全概率。
所有可能事件的概率加起来就是概率值 1。
如果所有可能的事件都同样可能,那么它们发生的概率是 1 除以所有可能的事件或试验。例如,数字 1 到 6 中的每一个都同样可能来自一个普通骰子的滚动,因此每一个都有 1/6 或 0.166 的概率出现。
概率通常写成小写的“ p ”,可以用数值乘以 100 的百分比来表示。例如,0.3 的概率可以表示为 30%(给定 0.3 * 100)。一个事件发生的概率为 50%,通常被称为“50-50 的概率”,这意味着它可能会发生一半的时间。
像洪水一样,事件的概率通常被表示为一个带有大写“ P 的函数(例如概率函数)。”例如:
- p(洪水)=洪水的概率
有时也写成小写“ p ”或“ Pr 的函数。”例如:p(洪水)或 Pr(洪水)。
概率的补数可以表述为 1 减去事件的概率。例如:
- 1–P(洪水)=无洪水的概率
事件发生的概率或可能性通常也称为事件发生的几率或事件发生的机会。这些通常都指的是同一个概念,尽管赔率通常有自己的赢与输的符号,写成 w:l;例如 1 胜 3 负的 1:3 或 1/4 (25%)的获胜概率。
我们已经描述了天真的概率,尽管概率论允许我们更一般。
概率论
更一般地说,概率是逻辑的延伸,可用于量化、管理和控制不确定性。
作为一个研究领域,它通常被称为概率论,以将其与特定事件的可能性区分开来。
概率可以看作是逻辑处理不确定性的延伸。[……]概率论提供了一套形式规则,用于在给定其他命题可能性的情况下,确定一个命题为真的可能性。
—第 56 页深度学习,2016。
概率论有三个重要概念:
- 事件(A) 。概率被赋予的结果。
- 样品空间。一组可能的结果或事件。
- 概率函数(P) 。用于给事件分配概率的函数。
从样本空间提取事件的可能性由概率函数决定。
样本空间中所有事件的形状或分布称为概率分布。许多领域对事件的概率分布有一个熟悉的形状,例如,如果所有事件的可能性相等,则概率分布是均匀的;如果事件的可能性形成正态或钟形,则概率分布是高斯的。
概率构成了包括统计学在内的许多数学应用领域的基础,也是包括物理、生物和计算机科学在内的许多高级研究领域的重要基础。
概率的两个流派
有两种解释或思考概率的主要方式。
也许更简单的方法是将概率视为事件的实际可能性,称为频率概率。另一种方法是考虑概率,即事件发生的强度,称为贝叶斯概率。
不是一种方法正确,另一种不正确;相反,它们是互补的,两种解释都提供了不同且有用的技术。
常客概率
概率的频率论方法是客观的。
事件被观察和计数,它们的频率为直接计算概率提供了基础,因此得名“常客”
概率论最初是为了分析事件的频率而发展起来的。
—第 55 页深度学习,2016。
来自频数概率的方法包括用于统计推断和参数估计的最大似然估计的 p 值和置信区间。
贝叶斯概率
概率的贝叶斯方法是主观的。
概率是基于证据和个人信念分配给事件的,并以贝叶斯定理为中心,因此得名“贝叶斯”这允许概率被分配给非常罕见的事件和以前没有观察到的事件,不像频繁概率。
贝叶斯解释的一大优势是,它可以用来模拟我们对不具有长期频率的事件的不确定性。
—第 27 页,机器学习:概率视角,2012。
贝叶斯概率方法包括用于推断的贝叶斯因子和可信区间以及用于参数估计的贝叶斯估计和最大后验估计。
进一步阅读
如果您想更深入地了解这个主题,本节将提供更多资源。
书
文章
摘要
在这篇文章中,你发现了概率的温和介绍。
具体来说,您了解到:
- 确定性是不寻常的,世界是混乱的,需要在不确定性下运作。
- 概率量化了事件发生的可能性或信念。
- 概率论是不确定性的数学。
你有什么问题吗? 在下面的评论中提问,我会尽力回答。
为机器学习学习概率的 5 个理由
最后更新于 2019 年 11 月 8 日
概率是一个量化不确定性的数学领域。
不可否认,它是机器学习领域的一个支柱,许多人建议在开始之前将其作为学习的前提科目。这是一个误导性的建议,因为一旦从业者有了应用机器学习过程的背景来解释它,概率对他们来说就更有意义了。
在这篇文章中,你将发现为什么机器学习实践者应该学习概率来提高他们的技能和能力。
看完这篇文章,你会知道:
- 不是每个人都应该学习概率;这取决于你在学习机器学习的旅程中所处的位置。
- 许多算法是使用概率的工具和技术设计的,例如朴素贝叶斯和概率图形模型。
- 作为许多机器学习算法训练基础的最大似然框架来自概率领域。
用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。
我们开始吧。
学习机器学习概率的 5 个理由 图片由马可·韦奇提供,保留部分权利。
概观
本教程分为七个部分;它们是:
- 不学概率的理由
- 类别成员资格需要预测概率
- 一些算法是用概率设计的
- 使用概率框架训练模型
- 模型可以用概率框架来调整
- 概率测量用于评估模型技能
- 还有一个原因
不学概率的理由
在我们讨论你应该学习概率的原因之前,让我们先来看看你不应该学习概率的原因。
我认为如果你刚刚开始应用机器学习,就不应该学习概率。
- 不需要。为了使用机器学习作为解决问题的工具,并不需要理解一些机器学习算法的抽象理论。
- 很慢。在开始机器学习之前,花几个月到几年的时间来研究整个相关领域,会延迟你实现能够解决预测建模问题的目标。
- 这是一个巨大的领域。不是所有的概率都与理论机器学习相关,更不用说应用机器学习了。
我推荐一种广度优先的方法来开始应用机器学习。
我称之为结果第一的方法。这是您从学习和实践使用工具(如 Sklearn 和 Python 中的 Pandas)端到端解决预测建模问题的步骤(例如如何获得结果)开始的地方。
然后,这个过程为逐步加深你的知识提供了框架和背景,比如算法是如何工作的,以及最终作为基础的数学。
在你知道如何解决预测建模问题后,让我们看看为什么你应该加深对概率的理解。
1.类别成员资格需要预测概率
分类预测建模问题是那些给一个例子指定一个给定标签的问题。
您可能熟悉的一个例子是鸢尾花数据集,其中我们对一朵花进行了四次测量,目标是将三种不同的已知鸢尾花中的一种分配给观察。
我们可以将问题建模为直接给每个观察分配一个类标签。
- 输入:一朵花的尺寸。
- 输出:一种鸢尾。
一种更常见的方法是将问题框架化为一个概率类成员关系,其中预测属于每个已知类的观测值的概率。
- 输入:一朵花的尺寸。
- 输出:每个鸢尾属种的隶属概率。
将问题框架化为类成员的预测简化了建模问题,并使模型更容易学习。它允许模型捕捉数据中的模糊性,这允许下游的过程,例如用户在域的上下文中解释概率。
通过选择概率最大的类,可以将概率转化为清晰的类标签。也可以使用概率校准过程来缩放或转换概率。
这种选择类成员框架的问题解释模型所做的预测需要对概率的基本理解。
2.模型是用概率设计的
有些算法是专门为利用概率的工具和方法而设计的。
这些算法包括单个算法,如朴素贝叶斯算法,它是使用贝叶斯定理和一些简化假设构建的。
线性回归算法可被视为最小化预测均方误差的概率模型,逻辑回归算法可被视为最小化预测正类别标签的负对数似然性的概率模型。
- 线性回归
- 逻辑回归
它还扩展到整个研究领域,如概率图形模型,通常称为图形模型或简称 PGM,围绕贝叶斯定理设计。
一个值得注意的图形模型是贝叶斯信念网络,它能够捕捉变量之间的条件依赖关系。
3.用概率框架训练模型
许多机器学习模型是使用在概率框架下设计的迭代算法来训练的。
一般概率建模框架的一些例子有:
也许最常见的是最大似然估计的框架,有时简称 MLE。这是在给定观测数据的情况下估计模型参数(例如权重)的框架。
这是线性回归模型的普通最小二乘估计和逻辑回归的对数损失估计的基础框架。
期望最大化算法,简称 EM,是一种最大似然估计方法,通常用于无监督数据聚类,例如估计 k 个聚类的 k 均值,也称为 k 均值聚类算法。
对于预测类别成员的模型,最大似然估计提供了一个框架,用于最小化观察到的概率分布和预测到的概率分布之间的差异或分歧。这用于分类算法,如逻辑回归以及深度学习神经网络。
通常在训练期间使用熵,例如通过交叉熵来测量概率分布的这种差异。熵,以及通过 KL 散度和交叉熵测量的分布之间的差异来自信息论领域,该领域直接建立在概率论的基础上。例如,熵直接计算为概率的负对数。
因此,这些来自信息论的工具,如最小化交叉熵损失,可以被视为模型估计的另一个概率框架。
- 最小交叉熵损失估计
4.用概率框架调整模型
调整机器学习模型的超参数是很常见的,例如 kNN 的 k 或神经网络中的学习率。
典型的方法包括超参数的网格搜索范围或随机采样超参数组合。
贝叶斯优化是一种更有效的超参数优化,它包括基于最有可能产生更好表现的配置对可能配置的空间进行定向搜索。顾名思义,这种方法是在对可能的构型空间进行采样时,根据并利用贝叶斯定理设计出来的。
有关贝叶斯优化的更多信息,请参见教程:
5.用概率方法评估模型
对于那些进行概率预测的算法,需要评估措施来总结模型的表现。
有许多方法可以用来总结基于预测概率的模型的表现。常见的例子包括:
- 对数损失(也称为交叉熵)。
- 更简单的分数和更简单的技能分数
有关评估预测概率的指标的更多信息,请参见教程:
对于预测单一概率分数的二进制分类任务,可以构建接收器操作特性(ROC)曲线,以探索在解释预测时可以使用的不同临界值,这些临界值反过来会导致不同的权衡。ROC 曲线下的面积,或 ROC AUC,也可以作为一个综合指标来计算。正类上的一个相关方法是准确率-召回曲线和曲线下面积。
- ROC 曲线和 ROC 曲线面积比
- 准确率-召回曲线和 AUC
有关这些曲线以及何时使用它们的更多信息,请参见教程:
这些评分方法的选择和解释需要对概率论有基本的理解。
还有一个原因
如果我能再给一个理由,那就是:因为它很有趣。
说真的。
学习概率,至少是我用实际例子和可执行代码教概率的方式,很有意思。一旦你能看到运算是如何在真实数据上工作的,就很难避免对一个通常不直观的主题产生强烈的直觉。
中级机器学习从业者学习概率很关键,你有更多的理由吗?
请在下面的评论中告诉我。
进一步阅读
如果您想更深入地了解这个主题,本节将提供更多资源。
书
邮件
文章
摘要
在这篇文章中,你发现了为什么作为机器学习的实践者,你应该加深对概率的理解。
具体来说,您了解到:
- 不是每个人都应该学习概率;这取决于你在学习机器学习的旅程中所处的位置。
- 许多算法是使用概率的工具和技术设计的,例如朴素贝叶斯和概率图形模型。
- 作为许多机器学习算法训练基础的最大似然框架来自概率领域。
你有什么问题吗? 在下面的评论中提问,我会尽力回答。