机器学习中的概率模型

2025年6月24日 | 阅读 8 分钟

机器学习中的概率模型是现实世界过程的数学表示,它包含不确定或随机变量。概率建模的目标是根据数据或先验知识来估计系统可能结果的概率。

概率模型用于各种机器学习任务,如分类、回归、聚类和降维。一些流行的概率模型包括

  • 高斯混合模型 (GMMs)
  • 隐马尔可夫模型 (HMMs)
  • 贝叶斯网络
  • 马尔可夫随机场 (MRFs)

概率模型允许表达不确定性,这使得它们特别适合数据经常存在噪声或不完整性的现实应用。此外,这些模型可以在新数据可用时进行更新,这在许多动态和演变系统中非常有用。

为了更好地理解,我们将使用kaggle上的OSIC肺纤维化问题来实施概率模型。

问题陈述:“在此比赛中,您将根据患者的肺部CT扫描图像预测患者肺功能的下降严重程度。您将根据肺活量计的输出来确定肺功能,肺活量计用于测量吸入和呼出的空气量。挑战在于利用机器学习技术,以图像、元数据和基线 FVC 作为输入进行预测。”

导入库

EDA

让我们来看看这三个不同患者的肺功能下降情况。

输出

Probabilistic Model in Machine Learning

肺容量在下降是显而易见的。但正如我们所见,它们因病例而异,患者之间差异很大。

建立模型

是时候发挥想象力了。这个表格数据集可以以多种方式建模。以下是我们可能会用到的一些工具

  • 隐马尔可夫模型
  • 高斯过程
  • 变分自编码器

在我们仍在学习的过程中,我们将从尝试最简单的模型——线性回归开始。然而,我们将变得更复杂一些。以下是我们的假设

  • 线性回归的参数(α 和 β)是每个患者特有的。因此,我们将能够为每个患者预测其 FVC 在任何一周的曲线(或多条曲线),并由此推断出相应的参数。
  • 然而,这些变量并非完全独立。所有患者都遵循一个基本模型。
  • 它们都有不同的均值和方差,并且呈正态分布。
  • 这些均值和方差取决于基线测量(基线周、FVC 和百分比),以及患者的年龄、性别和吸烟状况。
  • 在这一点上,我们将变得更加复杂,假设这些参数也是从 CT 扫描中发现的潜在变量的函数。不过,这将在稍后进行。

我们的模型由下图所示的贝叶斯网络表示

Probabilistic Model in Machine Learning

该模型背后的逻辑

  • FVCij是我们感兴趣的观测变量。在任何一周 j(-12≤j≤133)时,患者的 FVC 被假定为正态分布,其均值为 αii j,方差为 σi2(所请求的置信度)。
  • αi,即每个患者 i 的下降函数的截距,在逻辑上是 FVCib(患者 i 的基线测量值)和 ωib(测量基线 FVC 的周数)的函数。我们假设它服从正态分布,均值为 FVCibib βint,方差为 σint
  • βi,即每个患者 i 的下降函数的斜率,在逻辑上是 Ai(患者年龄)、性别和吸烟状况的函数。我们假设它服从正态分布,均值为 αs+Ai βcs,方差为 σs。我们考虑了六种不同的 β_cs:吸烟女性、吸烟男性、前吸烟女性、前吸烟男性、从未吸烟女性和从未吸烟男性。
  • 为了简化起见,我们暂时省略了 Percent 随机变量。我们将在第二个版本中包含它。
  • 最后,我们对先验 βint、αs、σi、σint 和 σs 一无所知。我们将前两个建模为正态分布,后三个建模为半正态分布。

数学模型规范

Probabilistic Model in Machine Learning

简单数据预处理

输出

Probabilistic Model in Machine Learning

输出

Probabilistic Model in Machine Learning

在 PyMC3 中建模

拟合模型

输出

Probabilistic Model in Machine Learning

我们仅采样了 4000 个不同的模型,这些模型都能解释数据。

检查模型

让我们看一下我们开发的生成模型。

输出

Probabilistic Model in Machine Learning

似乎我们的模型为每个患者学习了独特的 alpha 和 beta。

检查一些患者

PyMC3 包含一个非常强大的可视化工具 ArviZ。尽管如此,我们还是使用了 Seaborn 和 Matplotlib。

输出

Probabilistic Model in Machine Learning

这里绘制了每个患者拥有的 4000 个不同模型中的 100 个。拟合的回归线用绿色表示,标准差用黄色表示。让我们把它们整合起来!

(迭代并)使用模型

现在让我们使用我们的生成模型。

简单数据预处理

输出

Probabilistic Model in Machine Learning

输出

Probabilistic Model in Machine Learning

后验预测

PyMC3 提供了两种方法来对未见过的、已隐藏的数据进行预测。第一步涉及使用 theano.shared 变量。我们只需要写 4-5 行代码即可完成。我们进行了测试,并且它运行完美,但为了更好地理解,我们还将使用第二种方法。

虽然它比 4-5 行代码稍微长一些,但我们发现它更具启发性。PyMC3 的开发者在 Luciano Paz 的这个回答中解释了该概念。我们将使用第一个模型上学习到的参数的分布作为先验,构建第二个模型来预测隐藏数据上的 FVC。根据贝叶斯方法,当我们收集新数据时,我们会不断更新我们的模型。

输出

Probabilistic Model in Machine Learning

输出

Probabilistic Model in Machine Learning

来吧!每一点都有 4000 个预测!

生成最终预测

输出

Probabilistic Model in Machine Learning

注意:我们生成最终预测是为了能够将其提交给比赛进行评估。

结论

本质上,概率模型就是一个包含不确定性的模型。在机器学习中,这通常涉及使用概率分布来表示系统中不同变量之间的关系。例如,在分类任务中,概率模型可能会表示某个输入属于每个可能类的概率。


下一主题最大池化