Machine-Learning-Mastery-概率教程-三-

153 阅读1小时+

Machine Learning Mastery 概率教程(三)

原文:Machine Learning Mastery

协议:CC BY-NC-SA 4.0

贝叶斯信念网络的温和介绍

原文:machinelearningmastery.com/introductio…

概率模型可以定义变量之间的关系,并用于计算概率。

例如,完全条件模型可能需要大量的数据来涵盖所有可能的情况,而概率在实践中可能难以计算。简化假设,如所有随机变量的条件独立性,可能是有效的,例如在朴素贝叶斯的情况下,尽管这是一个彻底简化的步骤。

另一种方法是开发一个模型,在所有其他情况下保持随机变量之间已知的条件相关性和条件独立性。贝叶斯网络是一种概率图形模型,它明确地捕捉图形模型中已知的有向边的条件依赖。所有缺失的连接定义了模型中的条件独立性。

因此,贝叶斯网络提供了一个有用的工具来可视化一个领域的概率模型,回顾随机变量之间的所有关系,并根据现有证据推断场景的因果概率。

在这篇文章中,你会发现一个温和的贝叶斯网络介绍。

看完这篇文章,你会知道:

  • 贝叶斯网络是一种由节点和有向边组成的概率图形模型。
  • 贝叶斯网络模型捕捉随机变量之间的条件相关和条件独立关系。
  • 模型可以由专家准备或从数据中学习,然后用于推断,以估计因果或后续事件的概率。

用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

A Gentle Introduction to Bayesian Belief Networks

阿明·科瓦尔斯基拍摄的贝叶斯信仰网络简介,版权所有。

概观

本教程分为五个部分;它们是:

  1. 概率建模的挑战
  2. 作为概率模型的贝叶斯信念网络
  3. 如何开发和使用贝叶斯网络
  4. 贝叶斯网络示例
  5. Python 中的贝叶斯网络

概率建模的挑战

概率模型在设计和使用上具有挑战性。

大多数情况下,问题是缺少关于完全指定随机变量之间的条件相关性所需的域的信息。如果有的话,计算一个事件的全条件概率是不切实际的。

应对这一挑战的常见方法是添加一些简化的假设,例如假设模型中的所有随机变量都是条件独立的。这是一个极端的假设,尽管它在实践中被证明是有用的,为朴素贝叶斯分类算法提供了基础。

另一种方法是开发一个带有一些条件独立性假设的问题的概率模型。这提供了完全条件模型和完全条件独立模型之间的中间方法。

贝叶斯信念网络是概率模型的一个例子,其中一些变量是条件独立的。

因此,贝叶斯信念网络提供了一种中间方法,它比朴素贝叶斯分类器对条件独立性的全局假设约束更少,但比完全避免条件独立性假设更容易处理。

—第 184 页,机器学习,1997。

作为概率模型的贝叶斯信念网络

贝叶斯信念网络是一种概率图形模型。

概率图形模型

一个概率图形模型 (PGM),简称“图形模型,是一种用图结构表示概率模型的方式。

图中的节点代表随机变量,连接节点的边代表随机变量之间的关系。

图由通过链接(也称为边或弧)连接的节点(也称为顶点)组成。在概率图形模型中,每个节点代表一个随机变量(或一组随机变量),链接表示这些变量之间的概率关系。

—第 360 页,模式识别与机器学习,2006。

  • 节点:图形模型中的随机变量。
  • :图形模型中随机变量之间的关系。

有许多不同类型的图形模型,尽管最常用的两种是隐马尔可夫模型和贝叶斯网络。

隐马尔可夫模型 (HMM)是一个图形模型,其中图的边是无方向的,这意味着图包含循环。贝叶斯网络的限制性更强,图的边是有方向的,这意味着它们只能在一个方向上导航。这意味着循环是不可能的,该结构可以更一般地称为有向无环图(DAG)。

有向图对于表达随机变量之间的因果关系很有用,而无向图更适合表达随机变量之间的软约束。

——第 360 页,模式识别与机器学习,2006。

贝叶斯信念网络

一个贝叶斯信念网络,或者简称为“贝叶斯网络”,提供了一种将贝叶斯定理应用于复杂问题的简单方法。

根据定义,网络并不完全是贝叶斯的,尽管假设随机变量(节点)的概率分布和随机变量(边)之间的关系都是主观指定的,该模型可以被认为捕捉了关于复杂域的“信念”。

贝叶斯概率是对一个结果的主观概率或信念的研究,相比之下,频率论方法的概率完全基于事件过去的发生。

贝叶斯网络捕获由模型表示的事件的联合概率。

贝叶斯信念网络描述了一组变量的联合概率分布。

—第 185 页,机器学习,1997。

贝叶斯网络的核心是条件独立的概念。

独立性是指不受所有其他变量影响的随机变量。因变量是一个随机变量,其概率取决于一个或多个其他随机变量。

条件独立性描述多个随机变量之间的关系,其中给定的变量可以有条件地独立于一个或多个其他随机变量。这并不意味着变量本身是独立的;相反,这是一个明确的定义,即变量独立于其他特定的已知随机变量。

概率图形模型,如贝叶斯网络,通过陈述已知变量的所有条件独立性假设,同时允许未知(潜在)变量的存在,提供了一种为复杂问题定义概率模型的方法。

因此,图形模型中边缘的存在和不存在在模型的解释中都很重要。

图形模型是通过做出[条件独立性]配置项假设来表示联合分布的一种方式。特别是,图中的节点代表随机变量,而(缺少)边代表 CI 假设。(这些模型的一个更好的名称实际上是“独立图”……

—第 308 页,机器学习:概率视角,2012 年。

贝叶斯网络作为一种概率模型提供了有用的好处。

例如:

  • 可视化。该模型提供了一种直接的方式来可视化模型的结构并激励新模型的设计。
  • 关系。提供对随机变量之间存在和不存在关系的见解。
  • 计算。提供了一种构造复杂概率计算的方法。

如何开发和使用贝叶斯网络

设计贝叶斯网络需要定义至少三件事:

  • 随机变量。问题中的随机变量是什么?
  • 条件关系。变量之间有什么条件关系?
  • 概率分布。每个变量的概率分布是什么?

问题领域的专家可能会在模型设计中指定这些方面中的一些或全部。

在许多情况下,图形模型的架构或拓扑可以由专家指定,但是概率分布必须根据来自领域的数据来估计。

概率分布和图结构本身都可以从数据中估计出来,尽管这可能是一个具有挑战性的过程。因此,为此目的使用学习算法是常见的;例如,假设连续随机变量梯度上升的高斯分布用于估计分布参数。

一旦为某个领域准备好了贝叶斯网络,它就可以用于推理,例如决策。

推理是通过对给定情况的模型进行推理来实现的。例如,一些事件的结果是已知的,并插入随机变量中。该模型可用于估计事件原因的概率或可能的进一步结果。

然后,通过引入将变量设置为已知状态的证据来执行推理,并随后根据该证据计算感兴趣的概率。

—第 13 页,贝叶斯推理与机器学习,2012。

在实践中使用贝叶斯网络的实际例子包括医学(症状和疾病)、生物信息学(特征和基因)和语音识别(话语和时间)。

贝叶斯网络示例

我们可以用一个小例子来具体说明贝叶斯网络。

考虑一个有三个随机变量的问题:A,B 和 C。A 依赖于 B,C 依赖于 B。

我们可以将条件依赖陈述如下:

  • 甲有条件地依赖乙,例如甲
  • C 有条件地依赖 B,例如 P(C|B)

我们知道 C 和 A 对彼此没有影响。

我们还可以将条件独立性陈述如下:

  • A 有条件地独立于 C: P(A|B,C)
  • C 有条件独立于 A: P(C|B,A)

请注意,条件依赖是在条件独立的情况下声明的。也就是说,A 有条件地独立于 C,或者 A 在 C 存在的情况下有条件地依赖于 B

我们也可以把给定 C 的条件独立性表述为给定 B 的条件依赖性,因为 A 不受 C 的影响,可以由给定 B 单独计算。

  • P(A|C,B) = P(A|B)

我们可以看到 B 不受 A 和 C 的影响,没有父母;我们可以简单地把 B 与 A 和 C 的条件独立性表述为 P(B,P(A|B),P(C|B))或 P(B)。

我们也可以把给定 B 或以 B 为条件的 A 和 C 的联合概率写成两个条件概率的乘积;例如:

  • P(A,C | B) = P(A|B) * P(C|B)

该模型总结了 P(A,B,C)的联合概率,计算如下:

  • P(A,B,C) = P(A|B) * P(C|B) * P(B)

我们可以绘制如下图:

Example of a Simple Bayesian Network

简单贝叶斯网络示例

请注意,每个随机变量都被分配了一个节点,条件概率被表示为节点之间的有向连接。还要注意,不可能在一个循环中导航图形,例如,当通过边从一个节点导航到另一个节点时,不可能有循环。

还要注意,即使在我们不知道变量的概率分布的时候,这个图也是有用的。

您可能希望通过对每个随机变量的离散事件使用人为概率来扩展这个示例,并对不同的场景进行一些简单的推断。

Python 中的贝叶斯网络

贝叶斯网络可以在 Python 中开发并用于推理。

一个流行的库叫做 PyMC ,它提供了一系列贝叶斯建模工具,包括像贝叶斯网络这样的图形模型。

该库的最新版本被称为 PyMC3 ,以 Python 版本 3 命名,是在提供快速自动微分的安诺数学计算库的基础上开发的。

PyMC3 是一个用 Python 编写的新的开源概率编程框架,它使用 Anano 通过自动微分来计算梯度,并动态编译概率程序以提高速度。

——Python 中使用 PyMC3 的概率编程,2016。

更一般地,在用于推理的计算机软件中概率图形模型的使用被称为“概率编程”。

这种类型的编程被称为概率编程,[……]它是概率性的,即我们使用编程变量作为模型的组成部分来创建概率模型。模型组件是 PyMC 框架中的一流原语。

——黑客的贝叶斯方法:概率编程和贝叶斯推理,2015。

关于 PyMC 贝叶斯方法的优秀入门,请参见卡梅隆·戴维森-皮隆的免费书籍《黑客的 T2 贝叶斯方法》

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

书籍章节

报纸

密码

文章

摘要

在这篇文章中,你发现了贝叶斯网络的温和介绍。

具体来说,您了解到:

  • 贝叶斯网络是一种由节点和有向边组成的概率图形模型。
  • 贝叶斯网络模型捕捉随机变量之间的条件相关和条件独立关系。
  • 模型可以由专家准备或从数据中学习,然后用于推断,以估计因果或后续事件的概率。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。

计算学习理论的温和介绍

原文:machinelearningmastery.com/introductio…

最后更新于 2020 年 9 月 7 日

计算学习理论,或称统计学习理论,是指量化学习任务和算法的数学框架。

这些都是机器学习的子领域,机器学习实践者不需要深入了解这些子领域就可以在广泛的问题上取得好的结果。然而,这是一个子领域,在这个领域中,对一些比较突出的方法有一个高层次的理解可以提供对从数据中学习的更广泛任务的洞察。

在这篇文章中,你会发现机器学习的计算学习理论的温和介绍。

看完这篇文章,你会知道:

  • 计算学习理论使用形式化的方法来研究学习任务和学习算法。
  • PAC 学习提供了一种量化机器学习任务计算难度的方法。
  • VC Dimension 提供了一种量化机器学习算法计算能力的方法。

用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

A Gentle Introduction to Computational Learning Theory

计算学习理论的温和介绍 图片由某人 10x 拍摄,版权所有。

教程概述

本教程分为三个部分;它们是:

  1. 计算学习理论
  2. 学习问题理论
  3. 学习算法理论

计算学习理论

计算学习理论,简称柯尔特,是一个研究领域,关注的是应用于学习系统的形式数学方法的使用。

它寻求使用理论计算机科学的工具来量化学习问题。这包括描述学习特定任务的难度。

计算学习理论可以被认为是统计学习理论或者简称为 SLT 的延伸或兄弟,其使用形式方法来量化学习算法。

  • 计算学习理论 ( 柯尔特):学习任务的正式学习。
  • 统计学习理论 ( SLT ):学习算法的形式化研究。

这种学习任务与学习算法的划分是任意的,实际上,这两个领域之间有很多重叠。

人们可以通过考虑学习器的计算复杂性来扩展统计学习理论。这个领域被称为计算学习理论或 COLT。

—第 210 页,机器学习:概率视角,2012。

在现代用法中,它们可能被认为是同义词。

…一个被称为计算学习理论的理论框架,有时也被称为统计学习理论。

—第 344 页,模式识别与机器学习,2006。

计算学习理论的焦点通常集中在监督学习任务上。真实问题和真实算法的形式分析非常具有挑战性。因此,通常通过关注二进制分类任务甚至简单的基于二进制规则的系统来降低分析的复杂性。因此,定理的实际应用对于解释真实问题和算法可能是有限的或具有挑战性的。

学习中主要的未回答的问题是:我们如何确定我们的学习算法已经产生了一个假设,该假设将预测以前看不见的输入的正确值?

—第 713 页,人工智能:现代方法,第 3 版,2009 年。

计算学习理论中探讨的问题可能包括:

  • 我们如何知道一个模型对目标函数有很好的逼近?
  • 应该用什么假设空间?
  • 我们如何知道我们是否有本地或全球的好解决方案?
  • 我们如何避免过拟合?
  • 需要多少数据示例?

作为一名机器学习实践者,了解计算学习理论和一些主要的研究领域可能是有用的。该领域为我们试图在数据上拟合模型时实现的目标提供了有用的基础,并且它可能提供对方法的洞察。

有许多子领域的研究,尽管也许计算学习理论中讨论最广泛的两个研究领域是:

  • PAC 学习。
  • 风险投资维度。

简而言之,可以说 PAC 学习是机器学习问题的理论,VC 维是机器学习算法的理论。

作为一名从业者,你可能会遇到这些话题,对它们的内容有一个大概的了解是很有用的。让我们仔细看看每一个。

如果你想更深入地研究计算学习理论,我推荐这本书:

学习问题理论

大概大概正确学习,或者说 PAC 学习,指的是由莱斯利·瓦里安开发的理论机器学习框架。

PAC 学习寻求量化学习任务的难度,可能被认为是计算学习理论的首要子领域。

考虑到在监督学习中,我们试图从输入到输出逼近一个未知的潜在映射函数。我们不知道这个映射函数是什么样子的,但我们怀疑它存在,我们有函数产生的数据的例子。

PAC 学习关注的是找到与未知目标函数紧密匹配的假设(拟合模型)需要多少计算量。

有关在机器学习中使用“*假设”*来引用拟合模型的更多信息,请参见教程:

这个想法是,一个坏的假设将被发现基于它对新数据的预测,例如基于它的泛化误差。

获得大多数或大量正确预测的假设,例如具有小的泛化误差,可能是目标函数的良好近似。

潜在的原理是,任何严重错误的假设,经过少量的例子,几乎肯定会被高概率“发现”,因为它会做出不正确的预测。因此,任何与足够大的训练样本集相一致的假设都不太可能是严重错误的:也就是说,它必须是近似正确的。

—第 714 页,人工智能:现代方法,第 3 版,2009 年。

这个概率语言给这个定理起了个名字:“概率近似正确”也就是说,假设试图“近似一个目标函数,并且如果它具有低的泛化误差,则“可能是”好。

PAC 学习算法是指返回 PAC 假设的算法。

使用形式方法,可以为监督学习任务指定最小泛化误差。然后,该定理可用于估计问题域中样本的预期数量,这将是确定假设是否是 PAC 所必需的。也就是说,它提供了一种方法来估计找到 PAC 假设所需的样本数量。

PAC 框架的目标是理解一个数据集需要多大才能给出好的概括。它也给出了学习的计算成本的界限…

—第 344 页,模式识别与机器学习,2006。

另外,假设空间(机器学习算法)在 PAC 框架下是有效的,如果算法能够在多项式时间内找到 PAC 假设(拟合模型)。

如果有一个多项式时间算法可以识别一个被装袋的函数,那么假设空间被认为是有效可装袋的。

—第 210 页,机器学习:概率视角,2012。

有关 PAC 学习的更多信息,请参考主题为:

学习算法理论

Vapnik–chervonnekis 理论,简称 VC 理论,是指由 Vladimir VapnikAlexey chervonnekis开发的理论机器学习框架。

风险投资理论学习试图量化学习算法的能力,并可能被认为是统计学习理论的首要子领域。

风险投资理论由许多要素组成,最显著的是风险投资维度

VC 维度量化了假设空间的复杂性,例如,给定表示和学习算法,可以拟合的模型。

考虑假设空间(可能适合的模型空间)复杂性的一种方式是基于它包含的不同假设的数量,以及可能如何导航该空间。风险投资维度是一种聪明的方法,它测量目标问题中可以被空间中的假设区分的例子的数量。

VC 维度通过使用 h 可以完全区分的来自 X 的不同实例的数量来衡量假设空间[…]的复杂性

—第 214 页,机器学习,1997。

VC 维度估计特定数据集的分类机器学习算法的能力或容量(示例的数量和维度)。

从形式上来说,VC 维是训练数据集中假设空间能够“粉碎”的最大数量的例子

在实例空间 X 上定义的假设空间 H 的 Vapnik-Chervonenkis 维数 VC(H)是被 H 粉碎的 X 的最大有限子集的大小

—第 215 页,机器学习,1997。

粉碎或粉碎集,在数据集的情况下,意味着可以使用空间中的假设来选择特征空间中的点或将其彼此分离,使得分离组中的示例的标签是正确的(无论它们碰巧是什么)。

一组点能否被算法粉碎,取决于假设空间和点数。

例如,一条线(假设空间)可以用来粉碎三个点,但不能粉碎四个点。

类别标签为 0 或 1 的二维平面上三个点的任何位置都可以被标签用线正确地“”分割,例如粉碎。但是,平面上有四个点的位置带有二进制类标签,这些标签不能被一条线正确分割,例如不能被粉碎。相反,必须使用另一种“算法”,例如椭圆。

*下图说明了这一点。

Example of a Line Hypothesis Shattering 3 Points and Ovals Shattering 4 Points

打破 3 点的线假设和打破 4 点的椭圆的例子 摘自第 81 页统计学习理论的本质,1999。

因此,机器学习算法的 VC 维是数据集中算法的特定配置(超参数)或特定拟合模型可以粉碎的最大数据点数量。

在所有情况下预测相同值的分类器的 VC 维度为 0,没有点数。较大的 VC 维数表明算法非常灵活,尽管这种灵活性可能会以过拟合的额外风险为代价。

风险投资维度被用作 PAC 学习框架的一部分。

PAC 学习中的一个关键量是 Vapnik-chervonnenkis 维度,或 VC 维度,它提供了函数空间复杂性的度量,并允许 PAC 框架扩展到包含无限个函数的空间。

—第 344 页,模式识别与机器学习,2006。

有关主成分分析学习的更多信息,请参考主题为:

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

文章

摘要

在这篇文章中,你发现了机器学习的计算学习理论的温和介绍。

具体来说,您了解到:

  • 计算学习理论使用形式化的方法来研究学习任务和学习算法。
  • PAC 学习提供了一种量化机器学习任务计算难度的方法。
  • VC Dimension 提供了一种量化机器学习算法计算能力的方法。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。*

使用工作实例开发贝叶斯定理的直觉

原文:machinelearningmastery.com/intuition-f…

最后更新于 2020 年 8 月 19 日

贝叶斯定理为计算条件概率提供了一种有原则的方法。

这是一个看似简单的计算,为我们的直觉经常失灵的场景提供了一种易于使用的方法。

发展贝叶斯定理直觉的最佳方式是思考等式中术语的含义,并在一系列不同的现实场景中多次应用计算。这将提供正在计算的内容的上下文,以及将来在新场景中应用计算时可以作为起点的示例。

在本教程中,您将通过处理多个现实场景来发现计算贝叶斯定理的直觉。

完成本教程后,您将知道:

  • 贝叶斯定理是一种计算条件概率的技术。
  • 贝叶斯定理等式中术语的常用和有用的名称。
  • 如何使用贝叶斯定理通过三个现实场景找到解决方案。

用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

How to Develop an Intuition for Bayes Theorem With Worked Examples

如何通过工作实例发展贝叶斯定理的直觉 Phoo土地管理局,保留部分权利。

教程概述

本教程分为五个部分;它们是:

  1. 贝叶斯定理介绍
  2. 命名定理中的术语
  3. 例 1:老年人跌倒和死亡
  4. 示例 2:电子邮件和垃圾邮件检测
  5. 示例 3:说谎者和测谎仪

贝叶斯定理介绍

条件概率是在给定另一事件发生的情况下,一个事件发生的概率,通常用两个因变量如 XY 的事件 AB 来描述。

  • 条件概率:一个(或多个)事件给定另一个事件发生的概率,例如 P(A 给定 B)或 P(A | B)。

条件概率可以使用联合概率来计算;例如:

  • P(A | B) = P(A 和 B) / P(B)

条件概率不对称;例如:

  • P(A | B)!= P(B | A)

然而,一个条件概率可以使用另一个条件概率来计算。

这叫做贝叶斯定理,以托马斯·贝叶斯牧师命名,可以表述如下:

  • P(A|B) = P(B|A) * P(A) / P(B)

贝叶斯定理为计算条件概率提供了一种有原则的方法,也是使用联合概率的一种替代方法。

当联合概率难以计算时,或者当反向条件概率可用或易于计算时,这种计算条件概率的替代方法是有用的。

  • 贝叶斯定理:在没有联合概率的情况下,计算条件概率的原则性方法。

通常情况下,我们无法直接获得分母,例如 P(B)。

我们可以用另一种方法来计算它;例如:

  • P(B)= P(B | A) * P(A)+P(B |不是 A)* P(不是 A)

这给出了贝叶斯定理的一个公式,我们可以使用它来替代 P(B)的计算,如下所述:

  • P(A | B)= P(B | A) * P(A)/P(B | A)* P(A)+P(B |不是 A)* P(不是 A)

:分母就是我们上面给出的展开式。

因此,如果我们有 P(A),那么我们可以计算 P(不是 A)作为它的补数;例如:

  • P(非 A)= 1–P(A)

另外,如果我们有 P(不是 B |不是 A),那么我们可以计算 P(B |不是 A)作为它的补数;例如:

  • P(B |不是 A)= 1–P(不是 B |不是 A)

现在我们已经熟悉了贝叶斯定理的计算,让我们更仔细地看看等式中的术语的含义。

命名定理中的术语

贝叶斯定理等式中的术语根据使用该等式的上下文来命名。

从这些不同的角度思考计算是有帮助的,有助于将你的问题映射到等式上。

首先,一般情况下,结果 P(A|B)称为后验概率,P(A)称为先验概率

  • P(A|B):后验概率。
  • P(A):先验概率。

有时 P(B|A)被称为可能性,P(B)被称为证据

  • P(B|A):可能性。
  • P(B):证据。

这使得贝叶斯定理可以重申为:

  • 后验=可能性*先验/证据

我们可以用一个烟与火的案例来说明这一点。

假设有烟,发生火灾的概率是多少?

其中 P(火)是先验,P(烟|火)是可能性,P(烟)是证据:

  • P(火|烟)= P(烟|火)* P(火)/ P(烟)

你可以想象雨和云的情况。

我们也可以用二进制分类器来考虑计算。

例如,P(B|A)可称为真阳性率(TPR)或灵敏度,P(B |非 A)可称为假阳性率(FPR),补体 P(非 B |非 A)可称为真阴性率(TNR)或特异性,我们正在计算的 P(A|B)值可称为阳性预测值(PPV)或准确率

  • p(非 B |非 A):真阴性率或 TNR ( 特异性)。
  • p(B |不是 A):假阳性率或 FPR。
  • p(不是 B|A):假阴性率或 FNR。
  • P(B|A):真阳性率或 TPR ( 灵敏度或回忆)。
  • P(A|B):阳性预测值或 PPV ( 准确率)。

例如,我们可以使用以下术语重新表述计算:

  • PPV = (TPR * P(A)) / (TPR * P(A) + FPR * P(非 A))

这是一个关于贝叶斯定理的有用观点,将在教程中进一步阐述:

现在我们已经熟悉了贝叶斯定理和术语的含义,让我们看看一些我们可以计算它的场景。

请注意,以下所有示例都是人为设计的;它们不是基于真实世界的概率。

例 1:老年人跌倒和死亡

考虑老年人(80 岁以上)跌倒的情况;他们死于坠落的概率有多大?

让我们假设某个老年人死亡 P(A)的基础率是 10%,老年人跌倒 P(B)的基础率是 5%,从所有老年人来看,7%的死者有跌倒 P(B|A)。

让我们把我们知道的插入定理:

  • P(A|B) = P(B|A) * P(A) / P(B)
  • P(模|落)= P(落|模)* P(模)/ P(落)

或者

  • p(模|落)= 0.07 * 0.10 / 0.05
  • p(模|落)= 0.14

也就是说,如果一个老年人跌倒,那么他们死于跌倒的概率为 14%。

为了使这变得具体,我们可以用 Python 执行计算,首先定义我们知道的内容,然后使用贝叶斯定理来计算结果。

下面列出了完整的示例。

# calculate P(A|B) given P(B|A), P(A) and P(B)
def bayes_theorem(p_a, p_b, p_b_given_a):
	# calculate P(A|B) = P(B|A) * P(A) / P(B)
	p_a_given_b = (p_b_given_a * p_a) / p_b
	return p_a_given_b

# P(A)
p_a = 0.10
# P(B)
p_b = 0.05
# P(B|A)
p_b_given_a = 0.07
# calculate P(A|B)
result = bayes_theorem(p_a, p_b, p_b_given_a)
# summarize
print('P(A|B) = %.3f%%' % (result * 100))

运行该示例确认了我们手动计算的值。

P(A|B) = 14%

示例 2:电子邮件和垃圾邮件检测

考虑这样的情况:我们收到一封电子邮件,垃圾邮件检测器将其放在垃圾邮件文件夹中;它是垃圾邮件的概率有多大?

让我们假设一些细节,比如我们收到的电子邮件中有 2%是垃圾邮件。让我们假设垃圾邮件检测器真的很好,当一封电子邮件是垃圾邮件时,它以 99%的准确率检测到它 P(B|A),当一封电子邮件不是垃圾邮件时,它将以 0.1% P(B |不是 A)的极低比率将其标记为垃圾邮件。

让我们把我们知道的插入定理:

  • P(A|B) = P(B|A) * P(A) / P(B)
  • P(垃圾邮件|检测到)= P(检测到|垃圾邮件)* P(垃圾邮件)/ P(检测到)

或者

  • P(垃圾邮件|检测到)= 0.99 * 0.02 / P(检测到)

我们不知道 P(B),也就是 P(已检测到),但我们可以使用以下公式计算:

  • P(B)= P(B | A) * P(A)+P(B |不是 A)* P(不是 A)

或者就我们的问题而言:

  • P(检测到)= P(检测到|垃圾邮件)* P(垃圾邮件)+ P(检测到|不是垃圾邮件)* P(不是垃圾邮件)

我们知道 P(检测到|不是垃圾邮件),这是 0.1%,我们可以将 P(不是垃圾邮件)计算为 1–P(垃圾邮件);例如:

  • P(非垃圾邮件)= 1–P(垃圾邮件)
  • p(非垃圾邮件)= 1–0.02
  • p(非垃圾邮件)= 0.98

因此,我们可以将 P(检测到的)计算为:

  • p(检出)= 0.99 * 0.02 + 0.001 * 0.98
  • p(检测到)= 0.0198 + 0.00098
  • p(检测到)= 0.02078

也就是说,大约 2%的电子邮件被检测为垃圾邮件,无论它们是否是垃圾邮件。

现在我们可以将答案计算为:

  • p(垃圾邮件|检测到)= 0.99 * 0.02 / 0.02078
  • p(垃圾邮件|检测到)= 0.0198 / 0.02078
  • p(垃圾邮件|检测到)= 0.95283926852743

也就是说,如果一封电子邮件在垃圾邮件文件夹中,那么它实际上是垃圾邮件的概率为 95.2%。

同样,让我们用 Python 中的一个例子来计算这个结果,以此来确认这个结果。

下面列出了完整的示例。

# calculate the probability of an email in the spam folder being spam

# calculate P(A|B) given P(A), P(B|A), P(B|not A)
def bayes_theorem(p_a, p_b_given_a, p_b_given_not_a):
	# calculate P(not A)
	not_a = 1 - p_a
	# calculate P(B)
	p_b = p_b_given_a * p_a + p_b_given_not_a * not_a
	# calculate P(A|B)
	p_a_given_b = (p_b_given_a * p_a) / p_b
	return p_a_given_b

# P(A)
p_a = 0.02
# P(B|A)
p_b_given_a = 0.99
# P(B|not A)
p_b_given_not_a = 0.001
# calculate P(A|B)
result = bayes_theorem(p_a, p_b_given_a, p_b_given_not_a)
# summarize
print('P(A|B) = %.3f%%' % (result * 100))

运行该示例给出了相同的结果,证实了我们的手动计算。

P(A|B) = 95.284%

示例 3:说谎者和测谎仪

考虑一个人用测谎仪测试,测试显示他们在说谎的情况。这个人真的在说谎的概率有多大?

让我们假设一些细节,比如大多数被测试的人说的都是实话,比如 98%,这意味着(1–0.98)或 2%的人是骗子 P(A)。我们还假设当有人在说谎时,测试可以很好地检测到他们,但不是很好,比如 72%的时间 P(B|A)。我们还假设当机器说他们没有说谎时,97%的时间 P(不是 B |不是 A)都是这样。

让我们把我们知道的插入定理:

  • P(A|B) = P(B|A) * P(A) / P(B)
  • P(说谎|积极)= P(积极|说谎)* P(说谎)/ P(积极)

或者:

  • P(说谎|阳性)= 0.72 * 0.02 / P(阳性)

同样,我们不知道 P(B),或者在这种情况下,通常检测器返回肯定结果的频率。

我们可以用下面的公式来计算:

  • P(B)= P(B | A) * P(A)+P(B |不是 A)* P(不是 A)

或者:

  • P(正)= P(正|说谎)* P(说谎)+ P(正|不说谎)* P(不说谎)

或者,用数字:

  • P(正)= 0.72 * 0.02 + P(正|不说谎)*(1–0.02)
  • P(正)= 0.72 * 0.02 + P(正|不说谎)* 0.98

在这种情况下,考虑到这个人没有说谎,我们不知道阳性检测结果的概率;那就是我们不知道假阳性率或假警报率。

这可以计算如下:

  • P(B |不是 A)= 1–P(不是 B |不是 A)

或者:

  • P(正|不说谎)= 1–P(不正|不说谎)
  • p(正|不说谎)= 1–0.97
  • p(正|不说谎)= 0.03

因此,我们可以将 P(B)或 P(正)计算为:

  • p(正)= 0.72 * 0.02 + 0.03 * 0.98
  • p(正)= 0.0144 + 0.0294
  • p(正)= 0.0438

也就是说,测试在大约 4%的时间内返回阳性结果,而不管这个人是否在撒谎。

我们现在可以为这个场景计算贝叶斯定理:

  • p(说谎|阳性)= 0.72 * 0.02 / 0.0438
  • p(说谎|阳性)= 0.0144 / 0.0438
  • p(说谎|阳性)= 0.328767123287671

也就是说,如果测谎仪测试的结果是肯定的,那么他们有 32.8%的概率是在撒谎。这是一个糟糕的测试!

最后,让我们用 Python 来确认这个计算。

下面列出了完整的示例。

# calculate the probability of a person lying given a positive lie detector result

# calculate P(A|B) given P(A), P(B|A), P(not B|not A)
def bayes_theorem(p_a, p_b_given_a, p_not_b_given_not_a):
	# calculate P(not A)
	not_a = 1 - p_a
	# calculate P(B|not A)
	p_b_given_not_a = 1 - p_not_b_given_not_a
	# calculate P(B)
	p_b = p_b_given_a * p_a + p_b_given_not_a * not_a
	# calculate P(A|B)
	p_a_given_b = (p_b_given_a * p_a) / p_b
	return p_a_given_b

# P(A), base rate
p_a = 0.02
# P(B|A)
p_b_given_a = 0.72
# P(not B| not A)
p_not_b_given_not_a = 0.97
# calculate P(A|B)
result = bayes_theorem(p_a, p_b_given_a, p_not_b_given_not_a)
# summarize
print('P(A|B) = %.3f%%' % (result * 100))

运行该示例给出了相同的结果,证实了我们的手动计算。

P(A|B) = 32.877%

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

摘要

在本教程中,您通过处理多个现实场景,发现了计算贝叶斯定理的直觉。

具体来说,您了解到:

  • 贝叶斯定理是一种计算条件概率的技术。
  • 贝叶斯定理等式中术语的常用和有用的名称。
  • 如何使用贝叶斯定理通过三个现实场景找到解决方案。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。

对联合概率、边缘概率和条件概率的温和介绍

原文:machinelearningmastery.com/joint-margi…

最后更新于 2020 年 5 月 6 日

概率量化了随机变量结果的不确定性。

理解和计算单个变量的概率相对容易。然而,在机器学习中,我们经常有许多随机变量以复杂和未知的方式相互作用。

有一些特定的技术可以用来量化多个随机变量的概率,例如联合概率、边缘概率和条件概率。这些技术为概率理解预测模型与数据的拟合提供了基础。

在这篇文章中,你会发现一个温和的介绍联合,边际,和多个随机变量的条件概率。

看完这篇文章,你会知道:

  • 联合概率是两个事件同时发生的概率。
  • 边缘概率是一个事件的概率,与另一个变量的结果无关。
  • 条件概率是一个事件在第二个事件出现时发生的概率。

用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

  • 2019 年 10 月更新:修正小错别字,谢谢安娜。
  • 2019 年 11 月更新:描述了联合概率的对称计算。

A Gentle Introduction to Joint, Marginal, and Conditional Probability

联合概率、边缘概率和条件概率简介摄于摄于 Masterbutler,版权所有。

概观

本教程分为三个部分;它们是:

  1. 一个随机变量的概率
  2. 多个随机变量的概率
  3. 独立和排他的概率

一个随机变量的概率

概率量化了事件发生的可能性。

具体来说,它量化了一个随机变量出现特定结果的可能性,例如掷硬币、掷骰子或从一副牌中抽一张扑克牌。

概率是对某件事情发生的可能性的度量。

—第 57 页,概率:对于热情的初学者,2016。

对于一个随机变量 xP(x) 是一个给 x 的所有值赋予一个概率的函数。

  • x = P(x)的概率密度

随机变量 x 的特定事件 A 的概率表示为 P(x=A) ,或简称为 P(A)。

  • 事件 A 的概率= P(A)

概率的计算方法是期望结果的数量除以总的可能结果,在这种情况下,所有结果的可能性相等。

  • 概率=(期望结果数)/(可能结果总数)

如果我们考虑一个离散的随机变量,比如骰子的滚动,这是很直观的。例如,模具轧制 a 5 的概率计算为轧制 a 5 (1)的一个结果除以离散结果(6)或 1/6 或约 0.1666 或约 16.666 的总数。

所有结果的概率总和必须等于 1。如果没有,我们就没有有效的概率。

  • 所有结果的概率总和= 1.0。

不可能结果的概率为零。例如,不可能用标准的六面模轧制 7。

  • 不可能结果的概率= 0.0

某个结果的概率是一。例如,当轧制六面模具时,肯定会出现 1 到 6 之间的值。

  • 确定结果的概率= 1.0

事件不发生的概率,称为补数。

这可以通过 1 减去事件的概率,或者*1–P(A)*来计算。例如,不滚动 5 的概率为 1–P(5)或 1–0.166 或约 0.833 或约 83.333%。

  • 非事件 A = 1 的概率–P(A)

现在我们已经熟悉了一个随机变量的概率,让我们考虑多个随机变量的概率。

多个随机变量的概率

在机器学习中,我们很可能使用许多随机变量。

例如,给定一个数据表,如在 excel 中,每行代表一个单独的观察或事件,每列代表一个单独的随机变量。

变量可以是离散的,这意味着它们取一组有限的值,也可以是连续的,这意味着它们取一个实值或数值。

因此,我们对两个或更多随机变量的概率感兴趣。

这很复杂,因为随机变量可以通过多种方式相互作用,进而影响它们的概率。

这可以通过将讨论简化为仅仅两个随机变量( X,Y )来简化,尽管原理可以推广到多个变量。

此外,为了讨论两个事件的概率,每个变量一个事件( X=A,Y=B ,尽管我们也可以很容易地讨论每个变量的事件组。

因此,我们引入多个随机变量的概率作为事件 A 和事件 B 的概率,简写为X = A**Y = B

我们假设这两个变量在某种程度上是相关或相依的。

因此,我们可能要考虑三种主要的概率类型;它们是:

  • 联合概率:事件概率 AB
  • 边缘概率:事件 X 的概率= A 给定变量 Y
  • 条件概率:事件 A 给定事件 B 的概率。

这些类型的概率构成了许多问题预测建模的基础,例如分类和回归。例如:

  • 一行数据的概率是每个输入变量的联合概率。
  • 一个输入变量的特定值的概率是其他输入变量的值之间的边缘概率。
  • 预测模型本身是给定输入示例的输出的条件概率的估计。

联合概率、边缘概率和条件概率是机器学习的基础。

让我们依次仔细看看每一个。

两个变量的联合概率

我们可能对两个同时发生的事件的概率感兴趣,例如两个不同随机变量的结果。

两个(或多个)事件的概率称为联合概率。两个或多个随机变量的联合概率被称为联合概率分布。

例如,事件 A 和事件 B 的联合概率正式写成:

  • 警队(甲及乙)

或连词用颠倒的大写字母“ U ”运算符“ ^ ”或有时用逗号“,”来表示。

  • P(A ^ B)
  • 警(甲、乙)

事件 AB 的联合概率计算为事件 A 给定事件 B 乘以事件 B 的概率。

这可以正式表述如下:

  • P(A 和 B) = P(给定的 B) * P(B)

联合概率的计算有时被称为概率的基本规则或概率的乘积规则或概率的 T2 链规则。

这里, P(A 给定 B) 是事件 A 给定事件 B 已经发生的概率,称为条件概率,如下所述。

联合概率是对称的,意味着 P(A 和 B)P(B 和 A) 相同。使用条件概率的计算也是对称的,例如:

  • P(A 和 B) = P(A 给定 B) * P(B) = P(B 给定 A) * P(A)

边缘概率

我们可能对一个随机变量的事件概率感兴趣,而不考虑另一个随机变量的结果。

例如 Y 所有结果的 X=A 的概率。

一个事件在另一个随机变量的所有(或子集)结果存在的情况下的概率称为边缘概率或边际分布。存在附加随机变量时,一个随机变量的边缘概率称为边缘概率分布。

之所以称之为边缘概率,是因为如果两个变量的所有结果和概率一起排列在一个表格中( X 为列, Y 为行),那么一个变量的边缘概率( X )将是表格边缘上另一个变量(Y 行)的概率之和。

边缘概率没有特别的符号;它只是第二个变量的所有事件的所有概率与第一个变量的给定固定事件的所有概率的和或并。

  • 所有 Y 的和 P(X=A,Y=yi)

这是概率论中另一个重要的基础规则,被称为“求和规则

边缘概率不同于条件概率(下述),因为它考虑第二个变量的所有事件的联合,而不是单个事件的概率。

条件概率

考虑到另一个事件的发生,我们可能对一个事件的概率感兴趣。

一个事件发生的概率被称为条件概率。一个到一个或多个随机变量的条件概率被称为条件概率分布。

例如,事件 A 给定事件 B 的条件概率正式写成:

  • 给定的

给定的“”用管道“|”运算符表示;例如:

** 警(甲|乙)

事件 A 给定事件 B 的条件概率计算如下:

  • P(给定的 B) = P(A 和 B) / P(B)

该计算假设事件 B 的概率不为零,例如并非不可能。

事件 A 给定事件 B 的概念并不意味着事件 B 已经发生(例如是确定的);相反,它是给定试验中事件 A 发生在事件 B 之后或出现时的概率。

独立和排他的概率

当考虑多个随机变量时,它们可能不相互作用。

我们可能知道或假设两个变量不是相互依赖的,而是独立的。

或者,变量可以相互作用,但它们的事件可能不会同时发生,称为排他性。

在这一节中,我们将仔细研究在这些情况下多个随机变量的概率。

独立性ˌ自立性

如果一个变量不依赖于另一个变量,这被称为独立性或统计独立性。

这对计算两个变量的概率有影响。

例如,我们可能对独立事件 AB 的联合概率感兴趣,这与 A 的概率和B的概率相同

概率采用乘法进行组合,因此独立事件的联合概率计算为事件 A 乘以事件 B 的概率。

这可以正式表述如下:

  • 联合概率 : P(A 和 B) = P(A) * P(B)

正如我们可能凭直觉知道的那样,独立随机变量事件的边缘概率就是事件的概率。

我们熟悉的是单个随机变量的概率概念:

  • 边缘概率 : P(A)

我们把独立概率的边缘概率简称为概率。

同样的,当变量独立时 A 给定 B 的条件概率只是 A 的概率,因为 B 的概率没有影响。例如:

  • 条件概率 : P(A 给定 B) = P(A)

我们可能熟悉统计独立于采样的概念。这假设一个样本不受先前样本的影响,并且不影响未来样本。

许多机器学习算法假设来自一个域的样本彼此独立,并且来自相同的概率分布,称为独立同分布,简称 i.i.d。

排他性

如果一个事件的发生排除了其他事件的发生,则称这些事件为互斥

事件的概率被认为是不相交的,这意味着它们不能相互作用,是严格独立的。

如果事件 A 的概率与事件 B 互斥,那么事件 A 和事件 B 的联合概率为零。

  • P(A 和 B) = 0.0

相反,结果的概率可以描述为事件 A 或事件 B ,正式表述如下:

  • P(A 或 B) = P(A) + P(B)

“或”也称为并集,表示为大写的“ U ”字母;例如:

  • P(A 或 B) = P(A U B)

如果事件不是相互排斥的,我们可能会对任何一个事件的结果感兴趣。

非互斥事件的概率计算为事件 A 的概率和事件 B 的概率减去两个事件同时发生的概率。

这可以正式表述如下:

  • P(A 或 B)= P(A)+P(B)–P(A 和 B)

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

文章

摘要

在这篇文章中,你发现了多个随机变量的联合概率、边缘概率和条件概率的温和介绍。

具体来说,您了解到:

  • 联合概率是两个事件同时发生的概率。
  • 边缘概率是一个事件的概率,与另一个变量的结果无关。
  • 条件概率是一个事件在第二个事件出现时发生的概率。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。*

最大似然估计线性回归的简单介绍

原文:machinelearningmastery.com/linear-regr…

最后更新于 2019 年 11 月 1 日

线性回归是预测数值的经典模型。

线性回归模型的参数可以用最小二乘法或最大似然估计法来估计。最大似然估计是一种概率框架,用于自动寻找最能描述观测数据的概率分布和参数。监督学习可以被框定为条件概率问题,并且最大似然估计可以用于拟合最能概括条件概率分布的模型的参数,即所谓的条件最大似然估计。

一个线性回归模型可以在这个框架下拟合,并且可以被证明是最小二乘法的一个完全相同的解。

在这篇文章中,你将发现具有最大似然估计的线性回归。

看完这篇文章,你会知道:

  • 线性回归是预测数值的模型,最大似然估计是估计模型参数的概率框架。
  • 线性回归模型的系数可以使用最大似然估计的负对数似然函数来估计。
  • 负对数似然函数可用于推导线性回归的最小二乘解。

用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

  • 2019 年 11 月更新:修正了 MLE 计算中的错别字,用 x 代替了 y(感谢诺曼)。

A Gentle Introduction to Maximum Likelihood Estimation for Linear Regression

线性回归的最大似然估计简介弗兰克·米歇尔摄,版权所有。

概观

本教程分为四个部分;它们是:

  1. 线性回归
  2. 最大似然估计
  3. 最大似然线性回归
  4. 最小二乘和最大似然

线性回归

线性回归是来自统计学和机器学习的标准建模方法。

线性回归是统计学和(有监督的)机器学习的“工作马”。

—第 217 页,机器学习:概率视角,2012。

通常,它是将一个或多个数字输入映射到数字输出的模型。就预测建模而言,它适用于回归类型的问题:也就是说,对实值量的预测。

输入数据用 n 例表示为 X ,输出用 y 表示,每个输入一个输出。给定输入的模型预测表示为 yhat

  • yhat =型号(X)

该模型是根据称为系数(β)的参数定义的,其中每个输入有一个系数,还有一个提供截距或偏差的附加系数。

例如,具有 m 个变量 x1,x2,…,xm 的输入 X 的问题将具有系数β1,β2,…,βmβ0。给定的输入被预测为示例输入和系数的加权和。

  • yhat = beta 0+beta 1 * x1+beta 2 * x2++betam * XM

该模型也可以使用线性代数来描述,其中系数向量(β)和输入数据矩阵( X )以及输出向量( y )。

  • y = X *贝塔

这些例子来自更广泛的人群,因此,样本是不完整的。此外,预计在观测中会有测量误差或统计噪声。

模型的参数(β)必须根据从域中提取的观测样本来估计。

鉴于对模型的研究已有 100 多年,估计参数的方法有很多;然而,有两个框架是最常见的。它们是:

  • 最小二乘优化。
  • 最大似然估计。

两者都是涉及搜索不同模型参数的优化过程。

最小二乘优化是一种通过寻找一组参数来估计模型参数的方法,该组参数导致模型预测值( yhat )和实际输出值( y )之间的最小平方误差,即所谓的均方误差。

最大似然估计是一个频繁概率框架,它为模型寻找一组参数,使似然函数最大化。我们将仔细研究第二种方法。

在这两种框架下,可以使用不同的优化算法,例如像 BFGS 算法(或变体)这样的局部搜索方法,以及像随机梯度下降这样的一般优化方法。线性回归模型的特殊之处在于还存在解析解,这意味着系数可以直接使用线性代数来计算,这个主题不在本教程的讨论范围内。

有关更多信息,请参见:

最大似然估计

最大似然估计,简称 MLE,是估计模型参数的概率框架。

在最大似然估计中,我们希望在给定特定概率分布及其参数(θ)的情况下,最大化观察数据的条件概率( X ),正式表述为:

  • p(X;θ)

其中 X 实际上是从问题域 1 到 n 的所有观测值的联合概率分布。

  • P(x1,x2,x3,…,xn;θ)

这个结果条件概率被称为观察给定模型参数的数据的可能性,并使用符号 L() 来表示可能性函数。例如:

  • l(X;θ)

给定分布参数,联合概率分布可以重申为观察每个例子的条件概率的乘积。将许多小概率相乘可能不稳定;因此,通常将这个问题重述为自然对数条件概率的总和。

  • 对数和(Xi;θ))

鉴于对数在似然函数中的常见用途,它被称为对数似然函数。在优化问题中,倾向于最小化成本函数而不是最大化成本函数也是常见的。因此,使用对数似然函数的负值,通常称为负对数似然函数。

  • 最小化对数和(Xi;θ))

最大似然估计框架可以用作估计回归和分类预测建模的许多不同机器学习模型的参数的基础。这包括线性回归模型。

最大似然线性回归

我们可以将拟合机器学习模型的问题框架为概率密度估计问题。

具体来说,模型和模型参数的选择被称为建模假设 h ,问题涉及到寻找最能解释数据 Xh 。因此,我们可以找到最大化似然函数的建模假设。

  • 最大化对数和(Xi;h))

监督学习可以被构造成一个条件概率问题,在给定输入的情况下预测输出的概率:

  • P(y | X)

因此,我们可以为监督机器学习定义条件最大似然估计如下:

  • 最大化对数和(Xi;h))

现在我们可以用我们的线性回归模型来代替 h

我们可以做一些合理的假设,比如数据集中的观测值是独立的,从相同的概率分布(i.i.d .)中得出,目标变量( y )具有高斯分布的统计噪声,均值为零,所有例子的方差相同。

通过这些假设,我们可以将给定 X 的估计 y 的问题框定为根据给定 X 的高斯概率分布来估计 y 的平均值。

高斯函数的解析形式如下:

  • f(x)=(1/sqrt(2 * pi * sigma ^ 2))* exp(-1/(2 * sigma ^ 2)*(y-mu)^ 2)

其中μ是分布的平均值, sigma² 是单位平方的方差。

我们可以使用这个函数作为我们的似然函数,其中μ被定义为来自具有给定系数集(β)的模型的预测,而σ是固定常数。

首先,我们可以将问题表述为数据集中每个示例的概率乘积的最大化:

  • 最大化产品 I 到 n(1/sqrt(2 * pi * sigma²))* exp(-1/(2 * sigma²)*(yi–h(beta))² Xi))

其中 xi 是给定的例子,贝塔是指线性回归模型的系数。我们可以将其转换为对数似然模型,如下所示:

  • 最大化 I 与 n 之和 log(1/sqrt(2 * pi * sigma²))–(1/(2 * sigma²)*(yi–h(beta))² Xi))

计算可以进一步简化,但我们现在就到此为止。

有趣的是,预测是一个分布的平均值。它表明,我们可以非常合理地在预测中添加一个界限,根据分布的标准偏差给出一个预测区间,这确实是一种常见的做法。

尽管模型在预测中假设高斯分布(即高斯噪声函数或误差函数),但对模型的输入不存在这种期望( X )。

[模型]仅考虑训练示例的目标值中的噪声,而不考虑描述实例本身的属性中的噪声。

—第 167 页,机器学习,1997。

我们可以应用搜索过程来最大化这个对数似然函数,或者通过在开头添加负号来反转它,并最小化负对数似然函数(更常见)。

这为给定数据集的线性回归模型提供了解决方案。

这个框架也比较通用,可以用于曲线拟合,为拟合人工神经网络等其他回归模型提供基础。

最小二乘和最大似然

有趣的是,上一节给出的线性回归的最大似然解与最小二乘解相同。

推导之后,最小化最小二乘方程以使线性回归适合数据集,如下所示:

  • 最小化 I 与 n 之和(yi–h )( beta))² Xi

其中,我们对每个目标变量( yi )和相关输入的模型预测 *h(xi,贝塔)*之间的平方误差进行求和。这通常被称为普通最小二乘。更一般地说,如果该值是通过数据集中的示例数(平均)而不是求和来归一化的,那么该量被称为均方误差

  • MSE = 1/n * I 与 n 之和(yi–yhat)²

从上一节中定义的似然函数开始,我们可以展示如何移除常数元素,以给出与求解线性回归的最小二乘法相同的方程。

注:此推导基于汤姆·米切尔的机器学习第六章给出的例子。

  • 最大化 I 与 n 之和 log(1/sqrt(2 * pi * sigma²))–(1/(2 * sigma²)*(yi–h(beta))² Xi))

移除常数的关键是关注评估不同模型时不变的内容,例如评估 *h(xi,贝塔)*时。

计算的第一项独立于模型,可以去掉,给出:

  • 最大化 I 与 n 之和–(1/(2 * sigma²)*(yi–h(Xi,Beta))²)

然后,我们可以去掉负号来最小化正数量,而不是最大化负数量:

  • 最小化 I 与 n 之和(1/(2 * sigma²)*(yi–h(Xi,Beta))²)

最后,我们可以丢弃剩余的第一项,它也独立于模型给出:

  • 最小化 I 与 n 之和(yi–h )( beta))² Xi

我们可以看到这和最小二乘解是一样的。

事实上,在合理的假设下,最小化目标变量和模型输出之间的平方误差的算法也执行最大似然估计。

……在某些假设下,任何最小化输出假设预测和训练数据之间的平方误差的学习算法都将输出最大似然假设。

—第 164 页,机器学习,1997。

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

教程

文章

摘要

在这篇文章中,你发现了具有最大似然估计的线性回归。

具体来说,您了解到:

  • 线性回归是预测数值的模型,最大似然估计是估计模型参数的概率框架。
  • 线性回归模型的系数可以使用最大似然估计的负对数似然函数来估计。
  • 负对数似然函数可用于推导线性回归的最小二乘解。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。

使用最大似然估计的逻辑回归入门

原文:machinelearningmastery.com/logistic-re…

最后更新于 2019 年 10 月 28 日

逻辑回归是用于二分类预测建模的模型。

逻辑回归模型的参数可以通过称为最大似然估计的概率框架来估计。在这个框架下,必须假设目标变量(类标签)的概率分布,然后定义一个似然函数,计算给定输入数据和模型时观察结果的概率。然后可以优化该函数,以找到在训练数据集上产生最大和似然的参数集。

拟合逻辑回归模型的最大似然方法既有助于更好地理解逻辑回归模型的形式,又提供了一个可用于更一般地拟合分类模型的模板。这是特别正确的,因为在该过程中使用的对数似然函数的负值可以被显示为等同于交叉熵损失函数。

在这篇文章中,你将发现最大似然估计的逻辑回归。

看完这篇文章,你会知道:

  • 逻辑回归是二分类预测建模的线性模型。
  • 模型的线性部分预测属于类别 1 的实例的对数赔率,通过逻辑函数将其转换为概率。
  • 模型的参数可以通过最大化似然函数来估计,该似然函数预测每个例子的伯努利分布的平均值。

用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

A Gentle Introduction to Logistic Regression With Maximum Likelihood Estimation

带最大似然估计的逻辑回归的温和介绍 摄影:塞缪尔·约翰,版权所有。

概观

本教程分为四个部分;它们是:

  1. 逻辑回归
  2. 逻辑回归和对数优势
  3. 最大似然估计
  4. 作为最大似然的逻辑回归

逻辑回归

逻辑回归是二分类的经典线性方法。

分类预测建模问题是那些需要为给定的一组输入变量预测一个类标签的问题(例如“红色”、“绿色”、“蓝色”)。二分类是指那些有两个类别标签的分类问题,例如真/假或 0/1。

逻辑回归与线性回归有很多共同之处,尽管线性回归是一种预测数值的技术,而不是用于分类问题。这两种技术都用一条线(或超平面,取决于输入的维数)来建模目标变量。线性回归将直线拟合到数据,数据可用于预测新的数量,而逻辑回归拟合直线以最好地将两个类别分开。

输入数据用 n 个例子表示为 X ,输出用 y 表示,每个输入一个输出。给定输入的模型预测表示为 yhat

  • yhat =型号(X)

该模型是根据称为系数(β)的参数定义的,其中每个输入有一个系数,还有一个提供截距或偏差的附加系数。

例如,具有 m 个变量 x1,x2,…,xm 的输入 X 的问题将具有系数β1,β2,…,βmβ0。给定的输入被预测为示例输入和系数的加权和。

  • yhat = beta 0+beta 1 * x1+beta 2 * x2++betam * XM

该模型也可以使用线性代数来描述,其中系数向量(β)和输入数据矩阵( X )以及输出向量( y )。

  • y = X *贝塔

到目前为止,这与线性回归相同,并且是不够的,因为输出将是实值,而不是类标签。

相反,该模型使用非线性函数来压缩这个加权和的输出,以确保输出是 0 到 1 之间的值。

使用逻辑函数(也称为 sigmoid),其定义为:

  • f(x) = 1 / (1 + exp(-x))

其中 x 是函数的输入值。在逻辑回归的情况下,x 用加权和代替。

例如:

  • yhat = 1/(1+exp((x * beta)))

如果问题中的两个类别被标记为 0 和 1,则输出被解释为来自标记为 1 的类别的二项式概率分布函数的概率。

请注意,输出是 0 到 1 之间的数字,可以解释为属于标记为 1 的类的概率。

—第 726 页,人工智能:现代方法,第 3 版,2009 年。

训练数据集中的示例来自更广泛的人群,因此,已知该样本是不完整的。此外,预计在观测中会有测量误差或统计噪声。

模型的参数(β)必须根据从域中提取的观测样本来估计。

估计参数的方法有很多。最常见的有两种框架;它们是:

两者都是涉及搜索不同模型参数的优化过程。

最大似然估计是一个频繁概率框架,它为模型寻找一组参数,使似然函数最大化。我们将在接下来的章节中仔细研究第二种方法。

逻辑回归和对数优势

在我们深入研究如何从数据中估计模型的参数之前,我们需要了解逻辑回归到底在计算什么。

这可能是逻辑回归中最令人困惑的部分,所以我们将慢慢来看。

模型的线性部分(输入的加权和)计算成功事件的对数赔率,特别是样本属于类别 1 的对数赔率。

  • 对数赔率=β0+β1 * x1+β2 * x2+…+βm * XM

实际上,该模型估计了每一级输入变量(所有观测值)的 1 类对数赔率。

什么是赔率和对数赔率?

赌博领域的赔率可能很熟悉。赔率通常表示为赢与输(赢:输),例如,1 比 10 的胜率或胜率表示为 1 : 10。

给定逻辑回归模型预测的成功概率( p ,我们可以将其转换为成功几率,即成功概率除以不成功概率:

  • 成功几率= p/(1–p)

几率的对数是计算出来的,特别是对数基数-e 或自然对数。这个量称为对数优势,也可以称为 logit(逻辑单位),一种度量单位。

  • 对数优势=对数(p/(1–p)

回想一下,这就是逻辑回归的线性部分所计算的:

  • 对数赔率=β0+β1 * x1+β2 * x2+…+βm * XM

通过计算对数赔率的指数,成功的对数赔率可以转换回成功的赔率。

  • 赔率= exp(对数赔率)

或者

  • 赔率= exp(beta 0+beta 1 * x1+beta 2 * x2+…+beta m * XM)

成功的几率可以转换回成功的概率,如下所示:

  • p =赔率/(赔率+ 1)

这接近于我们的逻辑回归模型的形式,除了我们想要将对数优势转换为优势作为计算的一部分。

我们可以这样做,并将计算简化如下:

  • p = 1/(1+exp(-对数优势))

这显示了我们如何从对数赔率到赔率,用逻辑回归模型到 1 类概率,并且这个最终函数形式匹配逻辑函数,确保概率在 0 和 1 之间。

我们可以用 Python 中的一些小例子来具体计算概率、赔率和对数赔率之间的转换。

首先,让我们将成功的概率定义为 80%,即 0.8,并将其转换为赔率,然后再次转换回概率。

下面列出了完整的示例。

# example of converting between probability and odds
from math import log
from math import exp
# define our probability of success
prob = 0.8
print('Probability %.1f' % prob)
# convert probability to odds
odds = prob / (1 - prob)
print('Odds %.1f' % odds)
# convert back to probability
prob = odds / (odds + 1)
print('Probability %.1f' % prob)

运行该示例显示,0.8 被转换为成功概率 4,并再次回到正确的概率。

Probability 0.8
Odds 4.0
Probability 0.8

让我们扩展这个例子,将赔率转换为对数赔率,然后将对数赔率转换回原始概率。这种最终转换实际上是逻辑回归模型或逻辑函数的形式。

下面列出了完整的示例。

# example of converting between probability and log-odds
from math import log
from math import exp
# define our probability of success
prob = 0.8
print('Probability %.1f' % prob)
# convert probability to odds
odds = prob / (1 - prob)
print('Odds %.1f' % odds)
# convert odds to log-odds
logodds = log(odds)
print('Log-Odds %.1f' % logodds)
# convert log-odds to a probability
prob = 1 / (1 + exp(-logodds))
print('Probability %.1f' % prob)

运行该示例,我们可以看到我们的赔率被转换为大约 1.4 的对数赔率,然后被正确地转换回 0.8 的成功概率。

Probability 0.8
Odds 4.0
Log-Odds 1.4
Probability 0.8

现在我们已经掌握了逻辑回归计算的概率,让我们看看最大似然估计。

最大似然估计

最大似然估计,简称 MLE,是估计模型参数的概率框架。

在最大似然估计中,我们希望在给定特定概率分布及其参数(θ)的情况下,最大化观察数据的条件概率( X ),正式表述为:

  • p(X;θ)

其中 X 实际上是从问题域 1 到 n 的所有观测值的联合概率分布。

  • P(x1,x2,x3,…,xn;θ)

这个结果条件概率被称为观察给定模型参数的数据的可能性,并使用符号 L() 来表示可能性函数。例如:

  • l(X;θ)

给定分布参数,联合概率分布可以重申为观察每个例子的条件概率的乘积。将许多小概率相乘可能不稳定;因此,通常将这个问题重述为对数条件概率的总和。

  • 对数和(Xi;θ))

鉴于对数在似然函数中的频繁使用,它被称为对数似然函数。在优化问题中,通常倾向于最小化成本函数,而不是最大化成本函数。因此,使用对数似然函数的负值,通常称为负对数似然函数。

  • 最小化对数和(Xi;θ))

最大似然估计框架可以用作估计回归和分类预测建模的许多不同机器学习模型的参数的基础。这包括逻辑回归模型。

作为最大似然的逻辑回归

我们可以将拟合机器学习模型的问题框架为概率密度估计问题。

具体来说,模型和模型参数的选择被称为建模假设 h ,问题涉及到寻找最能解释数据 Xh 。因此,我们可以找到最大化似然函数的建模假设。

  • 最大化对数和(Xi;h))

监督学习可以被构造成一个条件概率问题,在给定输入的情况下预测输出的概率:

  • P(y | X)

因此,我们可以为监督机器学习定义条件最大似然估计如下:

  • 最大化对数和(Xi;h))

现在我们可以用我们的逻辑回归模型来代替 h

为了使用最大似然,我们需要假设一个概率分布。在逻辑回归的情况下,假设数据样本为二项式概率分布,其中每个例子都是伯努利试验的一个结果。伯努利分布只有一个参数:成功结果的概率( p )。

  • P(y=1) = p
  • p(y = 0)= 1–p

当有两个类别时,最常用的概率分布是二项式分布。5 这个分布有一个参数 p,即事件或特定类别的概率。

—第 283 页,应用预测建模,2013 年。

伯努利分布的期望值(平均值)可以计算如下:

  • 平均值= P(y=1) * 1 + P(y=0) * 0

或者,给定 p:

  • 平均值= p * 1+(1–p)* 0

这种计算看似多余,但它为特定输入的似然函数提供了基础,其中概率由模型( yhat )给出,实际标签由数据集给出。

  • 可能性= yhat * y+(1–yhat)*(1–y)

对于 y=0y=1 两种情况,该函数总是在模型接近匹配类值时返回大概率,在模型较远时返回小概率。

我们可以用一个小的例子来证明这一点,这个例子既可以预测结果,也可以预测每个结果的大小概率。

下面列出了完整的示例。

# test of Bernoulli likelihood function

# likelihood function for Bernoulli distribution
def likelihood(y, yhat):
	return yhat * y + (1 - yhat) * (1 - y)

# test for y=1
y, yhat = 1, 0.9
print('y=%.1f, yhat=%.1f, likelihood: %.3f' % (y, yhat, likelihood(y, yhat)))
y, yhat = 1, 0.1
print('y=%.1f, yhat=%.1f, likelihood: %.3f' % (y, yhat, likelihood(y, yhat)))
# test for y=0
y, yhat = 0, 0.1
print('y=%.1f, yhat=%.1f, likelihood: %.3f' % (y, yhat, likelihood(y, yhat)))
y, yhat = 0, 0.9
print('y=%.1f, yhat=%.1f, likelihood: %.3f' % (y, yhat, likelihood(y, yhat)))

运行该示例将打印类标签( y )和预测概率( yhat )用于具有每个案例的远近概率的案例。

我们可以看到,似然函数在返回模型达到预期结果的概率方面是一致的。

y=1.0, yhat=0.9, likelihood: 0.900
y=1.0, yhat=0.1, likelihood: 0.100
y=0.0, yhat=0.1, likelihood: 0.900
y=0.0, yhat=0.9, likelihood: 0.100

我们可以使用日志更新似然函数,将其转换为对数似然函数:

  • 对数似然=对数(yhat) * y +对数(1–yhat)*(1–y)

最后,我们可以对数据集中所有示例的似然函数求和,以最大化似然性:

  • 最大化 I 与 n 之和 log(yhat _ I)* y _ I+log(1–yhat _ I)*(1–y _ I)

通常的做法是最小化优化问题的成本函数;因此,我们可以反转函数,使负对数似然最小化:

  • 将总和 I 最小化为 n-(log(yhat _ I)* y _ I+log(1–yhat _ I)*(1–y _ I))

计算伯努利分布的对数似然函数的负值相当于计算伯努利分布的交叉熵函数,其中 p() 代表 0 类或 1 类的概率, q() 代表概率分布的估计,在这种情况下通过我们的逻辑回归模型。

  • 交叉熵=-(log(q(class 0))* p(class 0)+log(q(class 1))* p(class 1))

与线性回归不同,没有解决这个优化问题的解析解。因此,必须使用迭代优化算法。

与线性回归不同,我们不能再以封闭形式记下最大似然估计。相反,我们需要使用优化算法来计算它。为此,我们需要导出梯度和黑森。

—第 246 页,机器学习:概率视角,2012。

该函数确实提供了一些有助于优化的信息(具体来说,可以计算一个黑森矩阵),这意味着可以使用利用这些信息的有效搜索过程,例如 BFGS 算法(及其变体)。

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

邮件

文章

摘要

在这篇文章中,你发现了最大似然估计的逻辑回归。

具体来说,您了解到:

  • 逻辑回归是二分类预测建模的线性模型。
  • 模型的线性部分预测属于类别 1 的实例的对数赔率,通过逻辑函数将其转换为概率。
  • 模型的参数可以通过最大化似然函数来估计,该似然函数预测每个例子的伯努利分布的平均值。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。

马尔可夫链蒙特卡罗的温和介绍

原文:machinelearningmastery.com/markov-chai…

概率推断包括使用概率模型估计期望值或密度。

通常,用概率模型直接推断数值是不容易的,相反,必须使用近似方法。

马尔可夫链蒙特卡罗采样提供了一类从高维概率分布中进行系统随机采样的算法。与能够从分布中抽取独立样本的蒙特卡罗采样方法不同,马尔可夫链蒙特卡罗方法抽取下一个样本依赖于现有样本的样本,称为马尔可夫链。这使得算法能够缩小分布的近似数量,即使有大量的随机变量。

在这篇文章中,你会发现一个关于机器学习的马尔可夫链蒙特卡罗的温和介绍。

看完这篇文章,你会知道:

  • 蒙特卡罗采样是无效的,对于高维概率模型来说可能是难以处理的。
  • 马尔可夫链蒙特卡罗提供了一种对高维概率分布进行随机采样的替代方法,其中下一个样本依赖于当前样本。
  • 吉布斯采样和更一般的大都会-黑斯廷斯算法是马尔可夫链蒙特卡罗采样的两种最常见的方法。

用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

A Gentle Introduction to Markov Chain Monte Carlo for Probability

概率马尔可夫链蒙特卡罗的温和介绍穆雷·富比斯特摄,版权所有。

概观

本教程分为三个部分;它们是:

  1. 概率推理的挑战
  2. 什么是马尔可夫链蒙特卡罗
  3. 马尔可夫链蒙特卡罗算法

概率推理的挑战

从概率模型中计算一个量通常被称为概率推断,或简称为推断。

例如,我们可能对计算预期概率、估计密度或概率分布的其他属性感兴趣。这是概率模型的目标,并且所执行的推理的名称通常采用概率模型的名称,例如,贝叶斯推理是用贝叶斯概率模型来执行的。

从感兴趣的模型直接计算期望的量对于除了最普通的概率模型之外的所有模型都是难以处理的。相反,预期的概率或密度必须用其他方法来近似。

对于大多数实际感兴趣的概率模型,精确的推断是难以处理的,因此我们不得不求助于某种形式的近似。

—第 523 页,模式识别与机器学习,2006。

期望的计算通常是许多随机变量的离散分布的和或者许多变量的连续分布的积分,并且难以计算。这个问题在两个概率学派中都存在,尽管对于贝叶斯概率和对模型的后验分布进行积分可能更普遍或更常见。

贝叶斯主义者,有时也是常客,需要整合可能的高维概率分布来推断模型参数或进行预测。贝叶斯需要对给定数据的模型参数的后验分布进行积分,频繁者可能需要对给定参数值的可观测值的分布进行积分。

—第 1 页,实践中的马尔可夫链蒙特卡罗,1996。

典型的解决方案是从概率分布中抽取独立的样本,然后多次重复这个过程来逼近期望的量。这被称为蒙特卡罗采样或蒙特卡罗积分,以摩纳哥拥有许多赌场的城市命名。

蒙特卡罗采样的问题是它在高维空间中不能很好地工作。这首先是因为维数灾难,其中样本空间的体积随着参数(维数)的数量呈指数增长。

其次,或许也是最关键的一点,这是因为蒙特卡罗采样假设从目标分布中抽取的每个随机样本都是独立的,并且可以独立抽取。对于贝叶斯结构化或图形概率模型的推理来说,情况通常不是这样,也不是很难处理。

什么是马尔可夫链蒙特卡罗

高维采样概率分布的解决方案是使用马尔可夫链蒙特卡罗,简称 MCMC。

从高维分布中取样的最流行的方法是马尔可夫链蒙特卡罗或 MCMC

—第 837 页,机器学习:概率视角,2012。

像蒙特卡罗方法一样,马尔可夫链蒙特卡罗大约在第一批计算机开发的同时首次被开发出来,并被用于粒子物理的计算,这是开发原子弹的曼哈顿计划的一部分。

蒙地卡罗

蒙特卡罗是一种随机采样概率分布并逼近期望量的技术。

蒙特卡洛算法。]在许多科学分支中用于估计难以精确计算的量。

—第 530 页,人工智能:现代方法,第 3 版,2009 年。

蒙特卡罗方法通常假设我们可以有效地从目标分布中抽取样本。从抽取的样本中,我们可以估计出作为抽取样本的平均值或方差的和或积分量。

考虑蒙特卡罗采样过程的一个有用方法是考虑复杂的二维形状,例如螺旋。我们不能简单地定义一个函数来描述螺旋,但是我们可以从域中提取样本,并确定它们是否是螺旋的一部分。从该域中提取的大量样本将使我们能够总结螺旋的形状(概率密度)。

马尔可夫链

马尔可夫链是一种生成随机变量序列的系统方法,其中当前值在概率上依赖于先前变量的值。具体来说,选择下一个变量只取决于链中的最后一个变量。

马尔可夫链是一种特殊的随机过程,它处理随机变量序列的特征。特别关注序列的动态和极限行为。

—第 113 页,马尔可夫链蒙特卡罗:贝叶斯推理的随机模拟,2006。

考虑一个包含掷骰子的棋盘游戏,比如蛇和梯子(或者滑槽和梯子)。骰子的滚动在 6 个阶段(整数 1 到 6)具有均匀的概率分布。你在棋盘上有一个位置,但你在棋盘上的下一个位置仅基于当前位置和骰子的随机滚动。你在棋盘上的特定位置形成了一条马尔可夫链。

马尔可夫链的另一个例子是一维随机游走,其中可能的移动是 1,-1,以相等的概率选择,游走中数字线上的下一点仅取决于当前位置和随机选择的移动。

在高级别上,马尔可夫链是根据状态图来定义的,采样算法在状态图上进行随机游走。

—第 507 页,概率图形模型:原理和技术,2009 年。

马尔可夫链蒙特卡罗

结合马尔可夫链和蒙特卡罗这两种方法,通过构建包含蒙特卡罗样本的马尔可夫链,允许对尊重样本之间概率相关性的高维概率分布进行随机采样。

MCMC 本质上是使用马尔可夫链的蒙特卡罗积分。[……]蒙特卡罗积分从所需分布中抽取样本,然后形成样本平均值以逼近预期。马尔可夫链蒙特卡罗通过长时间运行一个巧妙构造的马尔可夫链来绘制这些样本。

—第 1 页,实践中的马尔可夫链蒙特卡罗,1996。

具体来说,MCMC 用于对概率分布执行推断(例如,估计数量或密度),其中不能从分布中提取独立样本,或者不能容易地提取独立样本。

因此,蒙特卡罗采样不能使用。

相反,通过构建马尔可夫链从概率分布中提取样本,其中从概率分布中提取的下一个样本取决于提取的最后一个样本。这个想法是,链条将会停留在(找到平衡)我们推断的期望量上。

然而,我们仍在从目标概率分布中进行采样,目标是逼近期望的数量,因此将所得的样本集合称为蒙特卡罗样本是合适的,例如,抽取的样本范围通常形成一个长马尔可夫链。

在样本之间强加依赖关系的想法起初看起来很奇怪,但如果我们考虑像随机漫步或蛇和梯子游戏这样的领域,其中样本之间的这种依赖关系是必需的,那么这个想法可能更有意义。

马尔可夫链蒙特卡罗算法

有许多马尔可夫链蒙特卡罗算法,在执行每个蒙特卡罗样本时,它们大多定义了不同的马尔可夫链构造方法。

随机游走为样本马尔可夫链的构建提供了一个很好的比喻,但它的效率非常低。考虑我们可能想要计算预期概率的情况;放大数量或密度比在域中徘徊更有效。马尔可夫链蒙特卡罗算法试图仔细利用问题的特性,以便有效地构建链。

构建该序列,使得尽管第一个样本可以从先前产生,但是连续的样本是从可证明越来越接近期望的后验的分布产生的。

—第 505 页,概率图形模型:原理和技术,2009 年。

MCMC 算法对它们的起点很敏感,并且通常需要预热阶段或老化阶段来进入搜索空间中富有成效的部分,之后可以丢弃先前的样本并收集有用的样本。

此外,要知道一个链是否已经收敛并收集了足够多的步骤可能是一项挑战。通常需要非常大量的样品,并且在给定固定数量的步骤的情况下停止运行。

……有必要丢弃一些初始样本,直到马尔可夫链烧入或进入其平稳分布。

—第 838 页,机器学习:概率视角,2012。

最常见的通用马尔可夫链蒙特卡罗算法叫做吉布斯采样;这个采样器的一个更通用的版本叫做 Metropolis-Hastings 算法。

让我们仔细看看这两种方法。

吉布斯采样算法

吉布斯采样算法是一种构建马尔可夫链的方法,其中下一个样本的概率被计算为给定前一个样本的条件概率。

样本是通过一次改变一个随机变量来构造的,这意味着后续样本在搜索空间中非常接近,例如局部接近。因此,链条有卡住的风险。

吉布斯采样背后的思想是,我们依次对每个变量进行采样,条件是分布中所有其他变量的值。

—第 838 页,机器学习:概率视角,2012。

吉布斯采样适用于那些可以计算条件概率的概率模型,例如,分布是离散的而不是连续的。

……Gibbs 采样只适用于某些情况;特别是,我们必须能够从分布 P(Xi | x-i)中取样。虽然对于离散图形模型来说,这个采样步骤很容易,但是在连续模型中,条件分布可能不是具有允许采样的参数形式的分布,因此吉布斯不适用。

—第 515 页,概率图形模型:原理和技术,2009 年。

大都会-黑斯廷斯算法

Metropolis-Hastings 算法适用于那些我们无法直接对所谓的下一个状态概率分布进行采样的概率模型,比如 Gibbs Sampling 使用的条件概率分布。

与吉布斯链不同,该算法不假设我们可以从特定的目标分布生成下一状态样本。

—第 517 页,概率图形模型:原理和技术,2009 年。

相反,Metropolis-Hastings 算法涉及使用被采样的替代或建议概率分布(有时称为核),然后是决定新样本是被链接受还是被丢弃的接受标准。

它们基于马尔可夫链,其对前任的依赖分为两部分:提议和接受提议。提案建议在链条的轨迹中任意进行下一步,通过拒绝链条的不需要的移动,接受确保保持适当的限制方向。

—第 6 页,马尔可夫链蒙特卡罗:贝叶斯推理的随机模拟,2006。

接受标准是概率性的,基于提议分布与真实的下一状态概率分布的不同程度。

Metropolis-Hastings 算法是一种更通用、更灵活的马尔可夫链蒙特卡罗算法,包含了许多其他方法。

例如,如果使用下一步条件概率分布作为建议分布,那么 Metropolis-Hastings 算法通常相当于 Gibbs 采样算法。如果像高斯分布一样使用对称建议分布,则该算法相当于另一种称为 Metropolis 算法的 MCMC 方法。

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

文章

摘要

在这篇文章中,你发现了一个关于机器学习的马尔可夫链蒙特卡罗的温和介绍。

具体来说,您了解到:

  • 蒙特卡罗采样是无效的,对于高维概率模型来说可能是难以处理的。
  • 马尔可夫链蒙特卡罗提供了一种对高维概率分布进行随机采样的替代方法,其中下一个样本依赖于当前样本。
  • 吉布斯采样和更一般的大都会-黑斯廷斯算法是马尔可夫链蒙特卡罗采样的两种最常见的方法。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。

机器学习最大后验概率的温和介绍

原文:machinelearningmastery.com/maximum-a-p…

密度估计是估计来自问题域的观测样本的概率分布的问题。

通常,估计整个分布是很难的,相反,我们很高兴有分布的期望值,如平均值或模式。最大后验概率(简称 MAP)是一种基于贝叶斯的方法,用于估计最能解释观测数据集的分布和模型参数。

这种灵活的概率框架可用于为许多机器学习算法提供贝叶斯基础,包括分别用于预测数值和类别标签的线性回归和逻辑回归等重要方法,并且与最大似然估计不同,明确允许系统地纳入关于候选模型的先验信念。

在这篇文章中,你会发现最大后验估计的温和介绍。

看完这篇文章,你会知道:

  • 最大后验估计是解决密度估计问题的概率框架。
  • MAP 包括计算观察给定模型的数据的条件概率,该概率由关于模型的先验概率或信念加权。
  • MAP 为机器学习的最大似然估计提供了另一种概率框架。

用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

A Gentle Introduction to Maximum a Posteriori (MAP) for Machine Learning

机器学习最大后验概率(MAP)的温和介绍吉勒姆·维尔鲁特摄,版权所有。

概观

本教程分为三个部分;它们是:

  1. 密度估计
  2. 最大后验概率
  3. 地图和机器学习

密度估计

一个常见的建模问题涉及如何估计数据集的联合概率分布。

例如,给定来自域( x1,x2,x3,…,xn )的观察样本( X ,其中每个观察都是从具有相同概率分布(所谓的独立同分布,即,即,或接近于它)的域中独立得出的。

密度估计包括选择一个概率分布函数和该分布的参数,最好地解释观测数据的联合概率分布( X )。

通常估计密度太具挑战性;相反,我们对目标分布的点估计感到满意,例如平均值。

有许多技术可以解决这个问题,尽管有两种常见的方法:

  • 最大后验概率,一种贝叶斯方法。
  • 最大似然估计,一种频率方法。

这两种方法都将问题框架为优化,并涉及到搜索最能描述观测数据的分布和分布参数集。

最大似然估计中,我们希望在给定特定概率分布及其参数的情况下,从联合概率分布中观测数据的概率最大化,正式表述为:

  • p(X;θ)

或者

  • P(x1,x2,x3,…,xn;θ)

这种产生的条件概率被称为在给定模型参数的情况下观察数据的可能性。

最大似然估计的目标是找到使似然函数最大化的一组参数(θ,例如,产生最大似然值。

  • 最大化 P(X;θ)

另一种与此密切相关的方法是从贝叶斯概率的角度考虑优化问题。

最大化可能性的一个流行替代方法是最大化参数的贝叶斯后验概率密度。

—第 306 页,信息论,推理和学习算法,2003。

最大后验概率

回想一下,贝叶斯定理提供了一种计算条件概率的原则性方法。

它包括计算一个结果给定另一个结果的条件概率,使用这种关系的倒数,陈述如下:

  • P(A | B) = (P(B | A) * P(A)) / P(B)

我们正在计算的量通常被称为给定 BA 的后验概率,而 P(A) 被称为 A 的先验概率。

可以去掉 P(B) 的归一化常数,可以证明后验与给定的 A 乘以前验的 B 的概率成正比。

  • P(A | B)与 P(B | A) * P(A)成正比

或者,简单地说:

  • P(A | B) = P(B | A) * P(A)

这是一个有用的简化,因为我们对估计概率不感兴趣,而是对优化一个量感兴趣。一个成比例的数量就足够了。

现在,我们可以将该计算与我们对估计分布和参数(θ)的期望联系起来,该分布和参数最好地解释了我们的数据集( X ),正如我们在上一节中所描述的那样。这可以表述为:

  • P(θ| X)= P(X |θ)* P(θ)

在θ范围内最大化这个量解决了用于估计后验概率的中心趋势(例如,分布的模型)的优化问题。因此,这种技术被称为“最大后验估计,或简称 MAP 估计,有时简称为“最大后验估计

  • 最大化 P(X |θ)* P(θ)

我们通常不计算完全后验概率分布,事实上,对于许多感兴趣的问题,这可能是不容易处理的。

……寻找 MAP 假设通常比贝叶斯学习容易得多,因为它需要解决一个优化问题,而不是一个大的求和(或积分)问题。

—第 804 页,人工智能:现代方法,第 3 版,2009 年。

相反,我们在计算一个点估计,比如分布的一个矩,就像模式,最常见的值,它与正态分布的平均值相同。

希望进行点估计的一个常见原因是,对于大多数感兴趣的模型,涉及贝叶斯后验的大多数操作都是难以处理的,而点估计提供了一个易于处理的近似。

—第 139 页,深度学习,2016。

:这与最大似然估计非常相似,增加了分布和参数上的先验概率。

事实上,如果我们假设θ的所有值都是同样可能的,因为我们没有任何先验信息(例如,统一的先验),那么两个计算是等价的。

由于这种等价性,对于许多机器学习算法来说,最大似然估计和最大似然估计往往收敛到同一个优化问题。情况并非总是如此;如果最大似然估计和最大似然估计优化问题的计算不同,则为算法找到的最大似然估计和最大似然估计解也可能不同。

……最大似然假设可能不是 MAP 假设,但如果假设先验概率一致,那么它就是。

—第 167 页,机器学习,1997。

地图和机器学习

在机器学习中,最大后验概率优化提供了一个贝叶斯概率框架,用于将模型参数拟合到训练数据,并提供了一个可能更常见的最大似然估计框架的替代和同级框架。

给定数据,最大后验概率(MAP)学习选择一个最有可能的假设。仍然使用假设先验,并且该方法通常比完全贝叶斯学习更容易处理。

—第 825 页,人工智能:现代方法,第 3 版,2009 年。

一个框架并不比另一个好,正如前面提到的,在许多情况下,两个框架从不同的角度构建了同一个优化问题。

相反,MAP 适用于存在一些先验信息的问题,例如,可以设置有意义的先验来权衡不同分布和参数或模型参数的选择。在没有这种先验的情况下,最大似然估计更为合适。

贝叶斯方法可以用来确定给定数据的最可能假设——最大后验概率(MAP)假设。这是最佳假设,因为没有其他假设更有可能。

—第 197 页,机器学习,1997。

事实上,在最大似然估计之前添加先验可以被认为是最大似然估计计算的一种正则化。这种洞察力允许在 MAP 贝叶斯推理的框架下解释其他正则化方法(例如,使用输入加权和的模型中的 L2 范数)。例如,L2 是一种偏差或先验,它假设一组系数或权重具有较小的平方和值。

……特别是,L2 正则化相当于权重具有高斯先验的 MAP 贝叶斯推断。

—第 236 页,深度学习,2016。

我们可以通过将优化问题重新框架为在候选建模假设(中的 h )上执行,而不是在更抽象的分布和参数(θ)上执行,来使 MAP 和机器学习之间的关系更加清晰;例如:

  • 最大化 P(X | h) * P(h)

在这里,我们可以看到,我们想要一个模型或假设( h )来最好地解释观察到的训练数据集( X )并且先验( P(h) )是我们关于假设被期望有多有用的信念,一般来说,不管训练数据如何。优化问题包括估计每个候选假设的后验概率。

我们可以通过使用贝叶斯定理计算每个候选假设的后验概率来确定 MAP 假设。

—第 157 页,机器学习,1997。

和最大似然法一样,优化问题的求解取决于模型的选择。对于更简单的模型,如线性回归,有解析解。对于更复杂的模型,如逻辑回归,需要使用一阶和二阶导数的数值优化。对于更棘手的问题,可能需要随机优化算法。

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

文章

摘要

在这篇文章中,你发现了对最大后验估计的温和介绍。

具体来说,您了解到:

  • 最大后验估计是解决密度估计问题的概率框架。
  • MAP 包括计算观察给定模型的数据的条件概率,该概率由关于模型的先验概率或信念加权。
  • MAP 为机器学习的最大似然估计提供了另一种概率框架。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。

蒙特卡罗采样的温和介绍

原文:machinelearningmastery.com/monte-carlo…

蒙特卡罗方法是随机采样概率分布的一类技术。

在许多问题领域中,描述或估计概率分布是相对简单的,但是计算一个期望的量是困难的。这可能是由于许多原因,如域的随机性质或随机变量的指数数量。

相反,期望的量可以通过使用随机采样来近似,称为蒙特卡罗方法。这些方法最初是在第一台计算机被创造出来的时候使用的,并且在科学和工程的所有领域,包括人工智能和机器学习,都很普遍。

在这篇文章中,你将发现采样概率分布的蒙特卡罗方法。

看完这篇文章,你会知道:

  • 通常,我们不能用概率来计算期望的量,但是我们可以直接或间接地定义随机变量的概率分布。
  • 蒙特卡罗采样从概率分布中随机采样的一类方法。
  • 蒙特卡罗采样为许多机器学习方法提供了基础,例如重采样、超参数调整和集成学习。

用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

A Gentle Introduction to the Monte Carlo Sampling for Probability

概率蒙特卡罗采样的温和介绍地中海巡航指南拍摄的照片,保留部分权利。

概观

本教程分为三个部分;它们是:

  1. 取样的需要
  2. 什么是蒙特卡罗方法?
  3. 蒙特卡罗方法的例子

取样的需要

概率中有许多问题,更广泛地说,在机器学习中,我们不能直接计算解析解。

事实上,可能有一种观点认为,对于大多数实际的概率模型来说,精确的推断可能是难以处理的。

对于大多数实际感兴趣的概率模型,精确的推断是难以处理的,因此我们不得不求助于某种形式的近似。

—第 523 页,模式识别与机器学习,2006。

期望的计算通常是离散分布的和或连续分布的积分,并且难以计算。由于许多原因,计算可能是难以处理的,例如大量的随机变量、域的随机性质、观测中的噪声、缺少观测等等。

在这类问题中,通常可以直接或通过计算模拟间接定义或估计随机变量的概率分布。

可以使用采样代替直接计算数量。

采样提供了一种灵活的方法,可以以更低的成本逼近许多和和积分。

—第 590 页,深度学习,2016。

可以从概率分布中随机抽取样本,用于近似期望的数量。

这种从概率分布中随机采样的一般技术被称为蒙特卡罗方法。

什么是蒙特卡罗方法?

蒙特卡罗方法,简称 MC,是一类随机采样概率分布的技术。

使用蒙特卡罗方法随机采样概率分布有三个主要原因;它们是:

  • 估计密度,采集样本以近似目标函数的分布。
  • 近似一个量,如一个分布的平均值或方差。
  • 优化一个功能,定位一个最大化或最小化目标功能的样本。

蒙特卡罗方法是以摩纳哥赌场的名字命名的,大约在第一台计算机和曼哈顿计划开发第一颗原子弹的时候,它首先被开发出来解决粒子物理问题。

这被称为蒙特卡罗近似法,以欧洲一座以豪华赌场闻名的城市命名。蒙特卡罗技术最早是在统计物理领域发展起来的——尤其是在原子弹研发期间——但现在也被广泛应用于统计和机器学习。

—第 52 页,机器学习:概率视角,2012 年。

绘制样本可能像计算随机选择事件的概率一样简单,也可能像运行计算模拟一样复杂,后者通常被称为蒙特卡罗模拟。

收集多个样本并用于近似所需的数量。

根据统计学给出的大数定律,进行的随机试验越多,近似量就越精确。

…大数定律指出,如果样本 x(i)是 i.i.d,那么平均值几乎肯定会收敛到期望值

—第 591 页,深度学习,2016。

因此,样本的数量提供了对被近似的量的准确率的控制,通常受到绘制样本的计算复杂性的限制。

通过生成足够的样本,我们可以达到任何我们喜欢的准确率水平。主要问题是:我们如何有效地从概率分布中生成样本,尤其是在高维情况下?

—第 815 页,机器学习:概率视角,2012 年。

另外,给定中心极限定理,样本的分布将形成正态分布,其平均值可以作为近似量,方差用于提供该量的置信区间。

中心极限定理告诉我们,平均值的分布[…]收敛于正态分布[…]这使得我们可以利用正态密度的累积分布来估计估计值[…]周围的置信区间。

—第 592 页,深度学习,2016。

蒙特卡罗方法是根据抽取样本的方式或对采样过程施加的约束来定义的。

蒙特卡罗采样方法的一些例子包括:直接采样、重要性采样拒绝采样

  • 直接采样。在没有先验信息的情况下直接对分布进行采样。
  • 重要性采样。从目标分布的更简单近似中取样。
  • 剔除取样。从更广泛的分布中采样,并且只考虑采样分布区域内的样本。

这是一个巨大的话题,有许多书专门讨论这个话题。接下来,让我们用一些熟悉的例子来具体说明蒙特卡罗采样的思想。

蒙特卡罗采样的例子

我们无时无刻不在使用蒙特卡罗方法而不去考虑它。

例如,当我们定义硬币翻转的伯努利分布,并通过从该分布中取样来模拟硬币翻转时,我们正在执行蒙特卡罗模拟。此外,当我们从整数{1,2,3,4,5,6}的均匀分布中取样来模拟骰子的滚动时,我们正在执行蒙特卡罗模拟。

当我们从域中收集随机数据样本并使用直方图或密度估计方法估计数据的概率分布时,我们也使用蒙特卡罗方法。

在一系列科学学科中,有许多使用蒙特卡罗方法的例子。

例如,蒙特卡罗方法可用于:

  • 计算复杂游戏中对手移动的概率。
  • 计算未来天气事件的概率。
  • 计算特定条件下车辆碰撞的概率。

这些方法用于解决应用概率问题中难以推断的问题,例如从概率图形模型中取样。

与此相关的是贝叶斯模型中使用的顺序蒙特卡罗方法的思想,这些方法通常被称为粒子滤波器

粒子滤波是一种基于蒙特卡罗或模拟的递归贝叶斯推理算法。

—第 823 页,机器学习:概率视角,2012。

蒙特卡罗方法在人工智能和机器学习中也很普遍。

许多用于实现机器学习目标的重要技术都是基于从一些概率分布中抽取样本,并使用这些样本来形成一些期望量的蒙特卡罗估计。

—第 590 页,深度学习,2016。

它们为通过模拟(如机器人)估计人工智能问题的结果可能性提供了基础。更简单地说,蒙特卡罗方法用于解决棘手的集成问题,例如在渲染计算机生成的场景时,在计算机图形的路径跟踪中发射随机光线。

在机器学习中,蒙特卡罗方法为重采样技术提供了基础,如用于估计数量的自举方法,例如有限数据集上模型的准确率。

bootstrap 是一种简单的蒙特卡罗技术,用于近似采样分布。这在估计量是真实参数的复函数的情况下特别有用。

—第 192 页,机器学习:概率视角,2012。

当调整模型时,模型超参数的随机采样是一种蒙特卡罗方法,用于克服诸如小数据样本中的有限大小和噪声以及学习算法中的随机方差等挑战的集成模型也是如此。

  • 重采样算法。
  • 随机超参数调谐。
  • 集成学习算法。

蒙特卡罗方法也为随机或随机优化算法提供了基础,例如流行的模拟退火优化技术

蒙特卡罗算法,其中模拟退火是一个例子,被用于许多科学分支,以估计难以准确计算的数量。

—第 530 页,人工智能:现代方法,第 3 版,2009 年。

  • 随机优化算法

蒙特卡罗采样的实例

我们可以用一个实例来制作蒙特卡罗采样混凝土。

在这种情况下,我们将有一个定义随机变量概率分布的函数。我们将使用均值为 50、标准差为 5 的高斯分布,并从该分布中抽取随机样本。

假设我们不知道这个随机变量的概率分布形式,我们想对函数进行采样,得到概率密度的概念。我们可以绘制一个给定大小的样本,并绘制一个直方图来估计密度。

normal() NumPy 函数可用于从具有指定平均值(μ)、标准偏差(σ)和样本大小的高斯分布中随机抽取样本。

为了让这个例子更有趣,我们将用不同大小的样本重复这个实验四次。我们预计,随着样本大小的增加,概率密度将更好地逼近目标函数的真实密度,给定大数定律。

下面列出了完整的示例。

# example of effect of size on monte carlo sample
from numpy.random import normal
from matplotlib import pyplot
# define the distribution
mu = 50
sigma = 5
# generate monte carlo samples of differing size
sizes = [10, 50, 100, 1000]
for i in range(len(sizes)):
	# generate sample
	sample = normal(mu, sigma, sizes[i])
	# plot histogram of sample
	pyplot.subplot(2, 2, i+1)
	pyplot.hist(sample, bins=20)
	pyplot.title('%d samples' % sizes[i])
	pyplot.xticks([])
# show the plot
pyplot.show()

运行该示例会创建四个不同大小的样本,并为每个样本绘制直方图。

我们可以看到,10 和 50 的小样本量并不能有效地捕捉目标函数的密度。我们可以看到 100 个样本更好,但是直到 1000 个样本,我们才清楚地看到熟悉的高斯概率分布的钟形。

这突出了需要绘制许多样本,甚至对于简单的随机变量,以及随着绘制的样本数量增加近似准确率的好处。

Histogram Plots of Differently Sized Monte Carlo Samples From the Target Function

来自目标函数的不同大小蒙特卡罗样本的直方图

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

文章

摘要

在这篇文章中,你发现了采样概率分布的蒙特卡罗方法。

具体来说,您了解到:

  • 通常,我们不能用概率来计算期望的量,但是我们可以直接或间接地定义随机变量的概率分布。
  • 蒙特卡罗采样从概率分布中随机采样的一类方法。
  • 蒙特卡罗采样为许多机器学习方法提供了基础,例如重采样、超参数调整和集成学习。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。

使用 AIC、BIC 和 MDL 的概率模型选择

原文:machinelearningmastery.com/probabilist…

最后更新于 2020 年 8 月 28 日

模型选择是从一组候选模型中选择一个的问题。

通常选择在等待测试数据集上表现最好的模型,或者使用重采样技术来估计模型表现,例如 k 倍交叉验证

模型选择的另一种方法涉及使用概率统计测量,该测量试图量化训练数据集上的模型表现和模型的复杂性。示例包括阿卡克和贝叶斯信息标准以及最小描述长度。

这些信息标准统计的好处是,它们不需要等待测试集,尽管一个限制是,它们没有考虑模型的不确定性,并可能最终选择过于简单的模型。

在这篇文章中,你将发现机器学习模型选择的概率统计。

看完这篇文章,你会知道:

  • 模型选择是从一组候选模型中选择一个的挑战。
  • Akaike 和 Bayesian Information Criterion 是基于模型的对数似然性和复杂性对模型进行评分的两种方法。
  • 最小描述长度提供了另一种信息论的评分方法,可以证明等同于 BIC。

用我的新书机器学习概率启动你的项目,包括分步教程和所有示例的 Python 源代码文件。

我们开始吧。

Probabilistic Model Selection Measures AIC, BIC, and MDL

概率模型选择测量 AIC、BIC 和 MDL 图片由 Guilhem Vellut 提供,保留部分权利。

概观

本教程分为五个部分;它们是:

  1. 模型选择的挑战
  2. 概率模型选择
  3. 阿卡克信息标准
  4. 贝叶斯信息准则
  5. 最小描述长度

模型选择的挑战

模型选择是在给定数据集上拟合多个模型并选择其中一个模型的过程。

模型选择:评估不同模型的表现,以选择最佳模型。

—第 222 页,统计学习的要素,2016。

这可以应用于无监督学习,例如选择聚类模型,或者有监督学习,例如为回归或分类任务选择预测模型。它也可能是建模的子任务,例如给定模型的特征选择。

有许多常见的方法可以用于模型选择。例如,在监督学习的情况下,三种最常见的方法是:

  • 训练、验证和测试数据集。
  • 重采样方法。
  • 概率统计。

模型选择的最简单可靠的方法包括在训练集上拟合候选模型,在验证数据集中调整它们,并根据所选的度量(如准确性或误差)选择在测试数据集中表现最佳的模型。这种方法的一个问题是它需要大量的数据。

重采样技术试图实现与模型选择的训练/val/测试方法相同的效果,尽管使用的数据集很小。一个例子是 K 折交叉验证,其中一个训练集被分成许多训练/测试对,并对每个训练/测试对拟合和评估一个模型。对每个模型重复这一过程,并选择 k 倍平均得分最好的模型。这种方法和以前的方法的一个问题是只评估模型表现,而不考虑模型的复杂性。

模型选择的第三种方法试图将模型的复杂性和模型的表现结合成一个分数,然后选择最小化或最大化分数的模型。

我们可以将这种方法称为统计或概率模型选择,因为评分方法使用概率框架。

概率模型选择

概率模型选择(或“信息标准”)为候选模型之间的评分和选择提供了一种分析技术。

根据模型在训练数据集上的表现和模型的复杂性对模型进行评分。

  • 车型表现。候选模型在训练数据集上的表现如何。
  • 模型复杂性。训练后的候选模型有多复杂。

模型表现可以使用概率框架来评估,例如最大似然估计框架下的对数似然。模型复杂性可以被评估为模型中的自由度或参数的数量。

历史上已经提出了各种“信息标准”,试图通过增加惩罚项来纠正最大似然偏差,以补偿更复杂模型的过拟合。

—第 33 页,模式识别与机器学习,2006。

概率模型选择方法的一个好处是不需要测试数据集,这意味着所有的数据都可以用来拟合模型,并且将用于领域预测的最终模型可以直接评分。

概率模型选择方法的一个局限性是,不能在一系列不同类型的模型中计算相同的一般统计量。相反,必须为每个模型仔细推导度量。

应该注意的是,AIC 统计是为模型之间的预先计划的比较而设计的(与自动搜索期间许多模型的比较相反)。

—第 493 页,应用预测建模,2013 年。

这些选择方法的另一个限制是它们没有考虑模型的不确定性。

然而,这种标准没有考虑模型参数的不确定性,实际上它们倾向于支持过于简单的模型。

—第 33 页,模式识别与机器学习,2006。

有三种统计方法来估计给定模型与数据集的匹配程度以及模型的复杂程度。每一个都可以被显示为彼此相等或成比例,尽管每一个都来自不同的框架或研究领域。

它们是:

  • 阿卡克信息标准(AIC)。源于常客概率。
  • 贝叶斯信息标准(BIC)。源自贝叶斯概率。
  • 最小描述长度。源自信息论。

可以使用模型和数据的对数似然性来计算每个统计量。对数似然来自最大似然估计,这是一种根据训练数据集寻找或优化模型参数的技术。

最大似然估计中,我们希望在给定特定概率分布及其参数(θ)的情况下,最大化观测数据的条件概率( X ),正式表述为:

  • p(X;θ)

其中 X 实际上是从问题域 1 到 n 的所有观测值的联合概率分布。

  • P(x1,x2,x3,…,xn;θ)

给定分布参数,联合概率分布可以重申为观察每个例子的条件概率的乘积。将许多小概率相乘可能不稳定;因此,通常将这个问题重述为自然对数条件概率的总和。

  • 对数和(Xi;θ))

鉴于对数在似然函数中的频繁使用,它通常被称为对数似然函数。

常见预测建模问题的对数似然函数包括回归(如线性回归)的均方误差和二分类(如逻辑回归)的对数损失(二元交叉熵)。

在接下来的部分中,我们将仔细研究三个统计数据:AIC、BIC 和 MDL。

阿卡克信息标准

阿卡克信息标准,简称 AIC,是一种评分和选择模型的方法。

它以该方法的开发者 Hirotugu Akaike 命名,并且可能被证明具有信息论基础和基于频率者的推断。

这是从一个经常性框架中推导出来的,不能被解释为边际可能性的近似值。

—第 162 页,机器学习:概率视角,2012。

逻辑回归的 AIC 统计定义如下(摘自“统计学习的要素”):

  • AIC = -2/N * LL + 2 * k/N

其中 N 为训练数据集中的样本数, LL 为模型在训练数据集中的对数似然, k 为模型中的参数数。

如上定义的分数被最小化,例如选择具有最低 AIC 的模型。

要使用 AIC 进行模型选择,我们只需在考虑的模型集中选择给出最小 AIC 的模型。

—第 231 页,统计学习的要素,2016。

与 BIC 方法(如下)相比,AIC 统计对复杂模型的惩罚更少,这意味着它可能会更加重视训练数据集的模型表现,并反过来选择更复杂的模型。

我们看到 AIC 的点球比 BIC 少。这导致 AIC 选择更复杂的模型。

—第 162 页,机器学习:概率视角,2012。

贝叶斯信息准则

贝叶斯信息准则,简称 BIC,是一种对模型进行评分和选择的方法。

它因其来源的研究领域而得名:贝叶斯概率和推理。像 AIC 一样,它适用于最大似然估计框架下的模型。

逻辑回归的 BIC 统计量计算如下(摘自“统计学习的要素”):

  • BIC = -2 * LL + log(N) * k

其中 log() 的底数 e 称为自然对数, LL 为模型的对数似然, N 为训练数据集中的样本数, k 为模型中的参数数。

如上定义的分数被最小化,例如选择具有最低 BIC 的模型。

计算的数量与 AIC 不同,尽管可以显示与 AIC 成正比。与 AIC 不同的是,BIC 对模型的处罚更多的是因为它的复杂性,这意味着更复杂的模型得分更低(更高),反过来,被选中的可能性也更小。

请注意,与 AIC […]相比,这更加不利于模型的复杂性。

—第 217 页,模式识别与机器学习,2006。

重要的是,贝叶斯概率框架下的 BIC 推导意味着,如果候选模型的选择包括数据集的真实模型,那么 BIC 将选择真实模型的概率随着训练数据集的大小而增加。这不能说是 AIC 的分数。

……给定一系列模型,包括真实模型,当样本量 N ->无穷大时,BIC 选择正确模型的概率接近 1。

—第 235 页,统计学习的要素,2016。

BIC 的缺点是,对于较小的、代表性较低的训练数据集,更有可能选择过于简单的模型。

最小描述长度

最小描述长度,简称 MDL,是一种评分和选择模型的方法。

它因其起源的研究领域而得名,即信息论。

信息论关注的是噪声信道上信息的表示和传输,因此,它测量的是像熵这样的量,熵是从随机变量或概率分布中表示一个事件所需的平均位数。

从信息论的角度来看,我们可能希望传递预测(或者更准确地说,它们的概率分布)和用于生成它们的模型。预测目标变量和模型都可以用在噪声信道上传输它们所需的比特数来描述。

最小描述长度是最小位数,或者表示数据和模型所需的位数总和的最小值。

最小描述长度原则建议选择最小化这两个描述长度之和的假设。

—第 173 页,机器学习,1997。

MDL 统计计算如下(取自“机器学习”):

  • CDM = l(h)+l(d | h)

其中 h 是模型, D 是模型做出的预测, L(h) 是表示模型所需的位数, L(D | h) 是表示训练数据集中模型的预测所需的位数。

如上定义的分数被最小化,例如选择具有最低 MDL 的模型。

编码所需的位数( D | h )和编码所需的位数( h )可以计算为负对数似然;例如(摘自“统计学习的要素”):

  • MDL =-log(P(θ))–log(P(y | X,θ))

或者给定输入值( X )和模型参数(θ)的模型参数的负对数似然( y )和目标值的负对数似然。

这种最小化模型及其预测编码的愿望与奥卡姆剃刀的概念有关,奥卡姆剃刀寻求最简单(最不复杂)的解释:在这种情况下,预测目标变量的最不复杂的模型。

MDL 原则的立场是,对于一组数据来说,最好的理论是最小化理论的大小加上指定与理论相关的异常所需的信息量…

—第 198 页,数据挖掘:实用机器学习工具与技术,2016 年第 4 版。

MDL 计算与 BIC 非常相似,在某些情况下可以显示为等效。

因此,作为对数后验概率的近似值而导出的 BIC 准则,也可视为通过最小描述长度进行(近似)模型选择的一种手段。

—第 236 页,统计学习的要素,2016。

线性回归的实例

我们可以用一个算例来具体说明 AIC 和 BIC 的计算。

在本节中,我们将使用一个测试问题并拟合一个线性回归模型,然后使用 AIC 和 BIC 度量来评估该模型。

重要的是,AIC 和 BIC 对于线性回归模型的具体函数形式先前已经被导出,使得例子相对简单。在为您自己的算法调整这些示例时,为您的模型和预测问题找到合适的计算推导或者自己考虑推导计算是很重要的。

在本例中,我们将使用make _ returnalism()sci kit-learn 函数提供的测试回归问题。该问题将有两个输入变量,需要预测目标数值。

...
# generate dataset
X, y = make_regression(n_samples=100, n_features=2, noise=0.1)
# define and fit the model on all data

我们将在整个数据集上直接拟合一个线性回归()模型

...
# define and fit the model on all data
model = LinearRegression()
model.fit(X, y)

一旦拟合,我们可以报告模型中的参数数量,给定问题的定义,我们期望是三个(两个系数和一个截距)。

...
# number of parameters
num_params = len(model.coef_) + 1
print('Number of parameters: %d' % (num_params))

线性回归模型的似然函数可以显示为与最小二乘函数相同;因此,我们可以通过均方误差度量来估计模型的最大似然。

首先,模型可用于估计训练数据集中每个示例的结果,然后均方误差()Sklearn 函数可用于计算模型的均方误差。

...
# predict the training set
yhat = model.predict(X)
# calculate the error
mse = mean_squared_error(y, yhat)
print('MSE: %.3f' % mse)

将所有这些结合在一起,下面列出了定义数据集、拟合模型以及报告模型的参数数量和最大似然估计的完整示例。

# generate a test dataset and fit a linear regression model
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# generate dataset
X, y = make_regression(n_samples=100, n_features=2, noise=0.1)
# define and fit the model on all data
model = LinearRegression()
model.fit(X, y)
# number of parameters
num_params = len(model.coef_) + 1
print('Number of parameters: %d' % (num_params))
# predict the training set
yhat = model.predict(X)
# calculate the error
mse = mean_squared_error(y, yhat)
print('MSE: %.3f' % mse)

:考虑到算法或评估程序的随机性,或数值准确率的差异,您的结果可能会有所不同。考虑运行该示例几次,并比较平均结果。

如我们所料,运行该示例首先报告模型中的参数数量为 3,然后报告 MSE 约为 0.01。

Number of parameters: 3
MSE: 0.010

接下来,我们可以修改示例来计算模型的 AIC。

跳过推导,普通最小二乘线性回归模型的 AIC 计算可计算如下(摘自“《统计识别模型新面貌》”,1974 年)。):

  • AIC = n * LL + 2 * k

其中 n 是训练数据集中的示例数量, LL 是使用自然对数的模型的对数似然性(例如,均方误差的对数), k 是模型中的参数数量。

下面的 calculate_aic() 函数实现了这一点,以 n 、原始均方误差( mse )和 k 为参数。

# calculate aic for regression
def calculate_aic(n, mse, num_params):
	aic = n * log(mse) + 2 * num_params
	return aic

然后可以更新该示例,以利用该新函数并计算模型的 AIC。

下面列出了完整的示例。

# calculate akaike information criterion for a linear regression model
from math import log
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# calculate aic for regression
def calculate_aic(n, mse, num_params):
	aic = n * log(mse) + 2 * num_params
	return aic

# generate dataset
X, y = make_regression(n_samples=100, n_features=2, noise=0.1)
# define and fit the model on all data
model = LinearRegression()
model.fit(X, y)
# number of parameters
num_params = len(model.coef_) + 1
print('Number of parameters: %d' % (num_params))
# predict the training set
yhat = model.predict(X)
# calculate the error
mse = mean_squared_error(y, yhat)
print('MSE: %.3f' % mse)
# calculate the aic
aic = calculate_aic(len(y), mse, num_params)
print('AIC: %.3f' % aic)

运行该示例会像以前一样报告参数数量和均方误差,然后报告 AIC。

:考虑到算法或评估程序的随机性,或数值准确率的差异,您的结果可能会有所不同。考虑运行该示例几次,并比较平均结果。

在这种情况下,据报道 AIC 值约为-451.616。为了选择更好的型号,该值可以最小化。

Number of parameters: 3
MSE: 0.010
AIC: -451.616

我们也可以用 BIC 而不是 AIC 的计算来探索同样的例子。

跳过推导,普通最小二乘线性回归模型的 BIC 计算可计算如下(此处取):

  • BIC = n * LL + k * log(n)

其中 n 是训练数据集中的示例数量, LL 是使用自然对数(例如均方误差的对数)的模型的对数似然性, k 是模型中的参数数量, log() 是自然对数。

下面的 calculate_bic() 函数实现了这一点,以 n 、原始均方误差( mse )和 k 为参数。

# calculate bic for regression
def calculate_bic(n, mse, num_params):
	bic = n * log(mse) + num_params * log(n)
	return bic

然后可以更新该示例,以利用该新函数并计算模型的 BIC。

下面列出了完整的示例。

# calculate bayesian information criterion for a linear regression model
from math import log
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# calculate bic for regression
def calculate_bic(n, mse, num_params):
	bic = n * log(mse) + num_params * log(n)
	return bic

# generate dataset
X, y = make_regression(n_samples=100, n_features=2, noise=0.1)
# define and fit the model on all data
model = LinearRegression()
model.fit(X, y)
# number of parameters
num_params = len(model.coef_) + 1
print('Number of parameters: %d' % (num_params))
# predict the training set
yhat = model.predict(X)
# calculate the error
mse = mean_squared_error(y, yhat)
print('MSE: %.3f' % mse)
# calculate the bic
bic = calculate_bic(len(y), mse, num_params)
print('BIC: %.3f' % bic)

运行该示例会像以前一样报告参数数量和均方误差,然后报告 BIC。

:考虑到算法或评估程序的随机性,或数值准确率的差异,您的结果可能会有所不同。考虑运行该示例几次,并比较平均结果。

在这种情况下,据报道 BIC 值约为-450.020,非常接近-451.616 的 AIC 值。同样,为了选择更好的型号,该值可以最小化。

Number of parameters: 3
MSE: 0.010
BIC: -450.020

进一步阅读

如果您想更深入地了解这个主题,本节将提供更多资源。

报纸

应用程序接口

文章

摘要

在这篇文章中,你发现了机器学习模型选择的概率统计。

具体来说,您了解到:

  • 模型选择是从一组候选模型中选择一个的挑战。
  • Akaike 和 Bayesian Information Criterion 是基于模型的对数似然性和复杂性对模型进行评分的两种方法。
  • 最小描述长度提供了另一种信息论的评分方法,可以证明等同于 BIC。

你有什么问题吗? 在下面的评论中提问,我会尽力回答。