【Learning PGM in R】第一章 概率推理

2023-11-18

目录

1.1机器学习

1.1.1监督学习

1.1.2无监督学习和强化学习

1.2概率表示

1.2.1概率计算和随机变量

1.2.2条件概率、联合概率分布和边缘分布

1.3贝叶斯规则

1.4概率图模型基础

1.4.1概率图模型基础理论

1.4.2概率图的表示

1.4.3推断

1.4.4学习

参考文献


PGM( stands for Probabilistic Graphical Models), 是概率图模型的简称。概率图模型,隶属于机器学习。所以文章的第一小节首先介绍了什么是机器学习(Machine Learning )。

机器学习的产生源于我们正处于数据大爆炸的时代中。数据的泛滥(deluge)使人们产生了数据分析的自动化(automated methods)的需求,并希望通过数据分析预测未来,获取知识或者进行决策。而这就是现在的机器学习。同时,数据本身的特征不同,再加上人们对数据处理的需求不同,从而创造出了各式各样丰富的机器学习模型和算法。

1.1机器学习

机器学习研究的问题大体上分为三个:监督学习,无监督学习和强化学习。

1.1.1监督学习

监督学习(predictive or supervised)的目的在于寻找输入x与输出y之间的关系(或是映射mapping,或是模式pattern),此时数据包括输入与输出,训练集D = \left \{ \left ( x_{i},y_{i} \right ) \right \}_{i=1}^{N}N是训练集数据对的数量,X可称作特征( features)、属性(attributions)、协变量(covariates)、解释变量等;Y称作被解释变量(response variables)。而根据Y的不同,监督学习又可以分为:当Y是分类变量(categorical or nominal,如是否下雨问题上,用y=0表示不下雨,用y=1表示下雨),研究的问题就被称作 分类(classification)和模式识别(pattern recognition);当y表示真实的数值(身高,体重等),该类问题称作回归(regression)。而当Y本身具有一定的顺序性(如成绩A-F),该类问题成为有序回归(ordinal regression)。监督学习也是目前机器学习领域最常用,最泛化的部分。

1.1.2无监督学习和强化学习

无监督学习(descriptive or unsupervised)与监督学习最大的区别子在于,这类问题没有Y,也就是说我们不知道我们要找的映射或者模式是怎样的,同时也没有已知的Y供我们测度(metric)模式的准确性。这类问题我们一般称为知识挖掘(knowledge discovery)。

第三类问题是强化学习(reinforcement learning),在处理该问题时,我们会设置偶然激励(occasional reward)和惩罚信号(punishment signals)来引导模型学习什么是正确的行为。

1.2概率表示

在解决机器学习问题上,不确定性(uncertianty)是一直伴随的。事件发生的结果是不确定的,我们预测的准确性也是不准确的,概率(probability)相关的理论就可以应用到机器学习的问题上,用于表达不确定性以及不确定性的程度。

1.2.1概率计算和随机变量

在进行实验时,我们对实验的结果有一定的预期,这个由实验所有可能输出组成的集合叫做样本空间,记作(donated by)\Omega每一种输出都被记作一个事件,记作\omega。而我们在计算机中储存实验结果时,往往会使用实数代替,也就是样本空间到实数的函数映射,被称为随机变量(random variable)。


如下雨,实验结果可能为Ω={下雨,不下雨}两种,我们将其记作y,y = 1的时候下雨,y = 0的时候不下雨。这时y就是随机变量。


而对于每一个随机变量y,都有唯一确定的概率密度函数(probabilistic density function, pdf for short)与之对应,记作p(y)。一般地,概率分布包括离散型(discreted)分布和连续型(continuous)分布如是否下雨符合0-1离散分布,人的身高服从(falls into)高斯分布(Gaussian distribution)。

1.2.2条件概率、联合概率分布和边缘分布

而在进行概率计算时,我们往往不只单看一个变量。如在考虑下雨问题时,我们会考虑下雨(x)和堵车(y)之间的关系,这种考虑两个或多个事件同时发生的概率,称作联合概率分布,记作P\left ( x,y \right )。如我们会考虑如果昨天下雨了,那么今天会下雨吗?这时,我们设置了一个条件:昨天下雨了。这种在已知其他事件D发生的条件下当前事件x发生的概率叫做条件概率,公式如下:

P\left ( x|D \right ) = \frac{P\left ( x,D \right )}{P\left ( D \right )}

如果我一直增加实验和变量,我们可以写出很长很复杂的条件概率分布和联合概率分布。有没有什么方法可以简化呢?条件独立的概念就被引入进来了。当观测变量x与y之间是独立的时候,联合概率为P\left ( x,y \right ) = p\left ( x \right )*p\left ( y \right )。条件概率为P\left ( x|y\right ) = P(x)这将大大简化运算的复杂程度。

此外还有个重要的边缘化概念,即当X,Y不是独立的时候,当我们已知X,Y的联合概率分布,为了得到x的分布,我们会将Y通过加和或积分的方式积分掉,从而获得X的边缘分布。公式如下,当Y是离散型随机变量时,联合分布P(X,Y)的边缘分布P(X)为:

P(X) = \sum_{y}P(X,y)

如果Y是连续值,边缘化就写作积分的形式:

P(X) = \int_{y}P(X,y) dy

1.3贝叶斯规则

贝叶斯公式的基本形式就是由条件概率和边缘分布演化来的。我们都知道条件概率为P(X|Y) = \frac{P(X,Y)}{P(Y)}或是P(Y|X) = \frac{P(X,Y)}{P(X)},简单变换后,我们可以得到P(X,Y) = P(Y|X)*P(X)。此外,根据边缘化理论,P(Y) = \sum_{x}P(X,Y) = \sum_{x}(P(Y|X)*P(X)),所以,最终贝叶斯公式为:

P(X|Y) = \frac{P(X,Y)}{P(Y)}=\frac{P(Y|X)*P(X)}{\sum_{x}(P(Y|X)*P(X))}

为什么要用这样的形式呢?联系一下我们实际的任务,并且转换一下公式的符号。假设我们在求解掷硬币正面反面的概率,用\Theta表示掷硬币的结果,0代表反面,1代表正面,P(\theta=1)表示掷硬币为正面的概率。假设我们已经进行了n次实验,实验数据集记为DD = \{\theta_{1},\theta_{2},...,\theta_{n}\}^{N}_{i=1}.此时,我们先假定一个P(\theta=1),假设为0.5,在已知数据集D(即进行了n次实验)的情况下P(\theta=1)更改为(这里我复杂了式子的表达,以便大家理解贝叶斯公式):

P(\Theta=1|D) = \frac{\sum_{\theta_{i}=1}P(D|\theta=1)*P(\theta=1)}{\sum_{\theta_{i}}(P(D|\theta)*P(\theta))}

 首先我们可以看到,分子上面的P(\theta=1)是提前假定的,这叫做先验分布(prior distribution),给定了这样的先验分布后,数据集D发生的概率为P(D|\theta=1),记作似然率(likelihood)。观察到了这样的D,\Theta的分布会发生变化,新的P(\theta)(其实是P(\theta|D))就可以计算出来了,被称为后验分布(posterior distribution)。

1.4概率图模型基础

我们已经知道,将概率的理论应用到机器学习问题中表示不确定性是自然而然的事情。而用图表示概率模型,可以更好的表达现实问题。由于现实世界的复杂度,我们观测的变量往往是高维多元的,随着研究问题中的变量的不断增加,记录每一种结果需要的值正在以指数级的速度增长。


如,假设我们有10个二元变量,储存可能出现的结果需要2^10= 1024个值,如果有20个变量,那么就需要2^20 = 1048576个值。假设变量本身是连续性分布,假设变量数量继续增加......


此外,变量间的关系变得逐渐复杂,变量间的依赖关系也造成了建模的困难。因此,机器学习引入了图论的相关知识,通过图来描述研究问题,可以迅速理清变量间的依赖关系,并根据条件独立的性质使得表达式最简化。

1.4.1概率图模型基础理论

回顾贝叶斯规则部分,通过简单变换,我们得到联合概率分布P(X,Y) = P(Y|X)*P(X),这里变量只有X,Y。我们假设变量集X=\left \{ x_{1} ,x_{2} ,......,x_{n} \right \}_{i=1}^{N},此时有

P\left \{ x_{1}, x_{2}, ......,x_{n}\right \} = \prod _{i=1}^{N}P\left ( x_{i}|x_{-i} \right )

其中,x_{-i} = \left \{ x_{1} , x_{2} ,...... x_{i-1} , x_{i+1} ,...... x_{n} \right \}。这就是著名的链式法则(Product Rule or Chain Rule)。

假设有数据集D=\left \{ X,Y \right \},其中,通过将联合概率分布积分获得的边缘分布

P\left ( x_{i} \right ) = \int P\left ( x_{i} ,y_{j}\right )dy_{j}=\sum _{j=1}^{N}P\left ( x_{i},y_{j} \right )

 这就是和法则(Sum Rule)。通过两种法则获得的贝叶斯法则(Bayesian Rule),被称为和积变换

P(x_{i}|y_{j}) = \frac{P(x_{i},y_{j})}{P(y_{j})} =\frac{P(y_{j}|x_{i})*P(x_{i})}{\sum _{i=1}^{N}P(y_{j}|x_{i})P(x_{i})}= \frac{P(y_{j}|x_{i})*P(y_{j})}{\int P(y_{j}|x_{i})P(x_{i})dx_{i}}

为了简化模型,概率图模型具有以下假设

假设1.变量之间相互独立。因此P\left \{ x_{1}, x_{2}, ......,x_{n}\right \} = \prod _{i=1}^{N}P\left ( x_{i} \right )。(朴素贝叶斯的重要假设)。但是这样的假设太强了,很多现实情况并不符合,可用性不强。因此我们对条件进行了放松:

假设2.马尔可夫性(Markov Property)给定当前时刻的情况下,将来与过去无关。(马尔科夫链的重要假设)即x_{j}\perp x_{i+1}|x_{i},j< i。但其实这个假设依旧太单调了。因此我们开始再次放宽假设。

假设3.条件独立性假设,记作X_{A}\perp X_{B}|X_{C},意思是在给定X_{C}的情况下,X_{A}X_{B}互相独立。其中,X_{A}X_{B}X_{C}都是变量集合且互不相交。

假设3这是概率图模型的重要假设,借助概率图模型,我们可以直观地看出变量间的条件独立性。

 概率图模型的内容主要包括表示(representation),推断(inference)和学习(learning)。

1.4.2概率图的表示

概率图使用节点(node)来表示变量。节点与节点之间的(edge)代表随机变量间的关系。

当这个边有箭头时,箭头起点的节点为父节点pa(x_{i}),箭头指向的节点为子节点x_{i},边就表示条件概率P(x_{i}|pa(x_{i})),由有向边和节点组成的图称为有向图(Directed Graph)也称为贝叶斯网络(Bayesian Network),常用于变量间的因果分析。而当这个边的没有箭头时,就是无向图(Undirected Graph),也称为马尔可夫网络(Markov Network)。

1.4.3推断

推断,即给定已知数据的情况下,求变量的概率分布。根据方法最终得到的分布是否精确又分为精确推断不确定性推断。近似推断中又包括确定性近似(如变分推断)和随机近似(如MCMC)。

1.4.4学习

学习,概率图中分为结构学习(structure learning)和参数学习(parameter learning)。结构学习,给定的数据可以学习哪种图结构更符合数据集。参数学习是在概率分布的模型已经假定好的情况下,估计出模型中参数的值。而在参数学习中,当数据不是完备的(complete data),我们需要引入EM算法进行参数估计。

参考文献

[1]David Bellot. Learning Probabilistic Graphical Models in R. Packt Publishing, 2016

[2]Murphy, K.P.. Machine Learning A Probailistic Perspective. The MIT Press, 2012

参考视频:

【机器学习】【白板推导系列】【合集 1~23】_哔哩哔哩_bilibili

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Learning PGM in R】第一章 概率推理 的相关文章

  • pandas-新手使用教程

    Pandas 是 Python 语言的一个扩展程序库 用于数据分析 下面将针对该模块进行讲解 一 导入模块 导入pandas模块 import pandas as pd 二 导入数据 常见用法 创建数据框 pd DataFrame 从CSV
  • C# --- Case Study

    C Case Study C Mongo数据库事务的应用 C 如何解析Json文件并注入MongoDB C MongoDB如何安全的替换Collection C netcore MVC项目框架结构 with MongoDB

随机推荐

  • 积分获取方式的两点优化建议

    积分获取是积分体系运营中的一个重要环节 也是针对用户运营的一个开端 如果积分获取做的不到位 那么商家就没法对用户的行为进行引导 也就没法实现商家的预期目标 整个积分体系就相当于白忙活了 这一点商家要特别的注意 在积分体系运营中 商家对于积分
  • 网课-cnn

    图像识别中遇到的问题可能有图片特征的纬度过高 1000 1000像素的图片 特征维度是1000 1000 3 如果你要输入3百万的数据量就意味着特征向量的维度高达三百万 也许有1000个隐藏单元 而所有的权值组成的矩阵W 1 如果使用标准的
  • git第一次配置ssh key,clone代码出错解决方法

    错误 The authenticity of host can t be established ED25519 key fingerprint is SHA256 k4ViHJBFryacGI BqHphyjDBaRLwt5eSGRMJG
  • vue table合并行 动态列名

    需求 1 合并行 相同数据合并 2 根据后端返回数据动态显示列名 我这个业务需求是 每年增加一列 也就是列名不是固定的 后端返回数据每年会多一条数据 根据返回数据显示列名 实现 html
  • 论文阅读 StyleCLIP:《StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery》

    论文地址 https arxiv org pdf 2103 17249 pdf 文章目录 摘要 1 介绍 2 相关工作 2 1 视觉与语言 2 2 潜空间图像处理 3 StyleCLIP文本驱动操作 4 潜在优化 5 潜在映射 6 全局方向
  • 解密蓝牙mesh系列

    转载自 蓝牙技术联盟 蓝牙mesh网络 友谊篇 低功耗蓝牙 Bluetooth Low Energy 是全球最具节能性的短距离无线通信技术之一 其低功耗的特性广受开发者和消费者赞誉 随着蓝牙mesh网络的推出 开发者可能想知道蓝牙mesh网
  • Python3 如何优雅地使用正则表达式(详解五)

    非捕获组命名组 精心设计的正则表达式可能会划分很多组 这些组不仅可以匹配相关的子串 还能够对正则表达式本身进行分组和结构化 在复杂的正则表达式中 由于有太多的组 因此通过组的序号来跟踪和使用会变得困难 有两个新的功能可以帮你解决这个问题 非
  • 线性稳压器基础知识

    1 1 什么是线性稳压器 线性稳压器的工作原理是 采用一个压控电流源以强制在稳压器输出端上产生一个固定 电压 控制电路连续监视 检测 输出电压 并调节电流源 根据负载的需求 以把输 出电压保持在期望的数值 电流源的设计极限限定了稳压器在仍然
  • C++输入输出(一)

    C 并没有专门的输入输出函数 他们都存在于库中 如果要使用cout cin和getline 需要导入iostream库 如果要是用其他的输入输出方式 需要导入cstdio库 一 cout流输出 这个输出方式我们很早就学过了 他的使用方式如下
  • Home Assistant 南方电网 计算电费

    目录 1 China Southern Power Grid Statistics集成 2 获取当月用电情况 3 计算电费然后在UI上显示 3 效果 1 China Southern Power Grid Statistics集成 链接 2
  • ANSYS WORKBENCH 后处理 之 提取截面查看云图

    这是一个结果的云图 现在想要查看管道某横截面的云图 步骤1右键coordinate systems 创建一个坐标系步骤2更改新建坐标轴属性 步骤3新建一个surface 定义中选择刚才创建的坐标系步骤4右键solution 选择刚才创建的面
  • c++的char[]和char*的区别

    大家先来看这道测试题 char str1 abc char str2 abc const char str3 abc const char str4 abc const char str5 abc const char str6 abc c
  • docker命令自动补全

    很多命令都会提供一个bash complete的脚本 在执行该命令时 敲tab可以自动补全参数 会极大提高生产效率 docker亦如此 如 yum install docker后 会有一个文件 usr share bash completi
  • Linux搭建gitlab以及汉化

    注 请使用管理员权限的用户 执行如下操作 文章目录 GitLab搭建 一 安装并配置必要的依赖关系 1 安装ssh 3 启动SSH服务 4 安装防火墙 如果已经安装了防火墙并且已经在运行状态 则可直接进行第6步 5 开启防火墙 6 添加ht
  • 【OpenGL学习】Shader和Shader类的抽象

    Shader 本节学习OpenGL中Shader的使用并将其抽象为类 简要介绍OpenGL所使用的着色器语言GLSL 一 什么是Shader 参考维基百科中对Shader的定义 着色器 维基百科 自由的百科全书 wikipedia org
  • 【终极版】java连接oracle数据库三种方式(上篇)

    很多小伙伴都对java连接oracle数据库的操作弄的稀里糊涂 今天我就贴出终极版 一举解决所有的连接方式 上篇主要是解决利用驱动连接的方式 我是小順 请大家关注我 我会给大家发更多的工具 JAR包 import java sql Conn
  • Mac 电脑python 升级3.7版本

    转自 https www jianshu com p 5f55997ab719 官网下载python3 7 并且安装https www python org downloads mac osx 本人电脑有多个版本的python 为了体验新版
  • ffmpeg推流参考文章

    https www cnblogs com leisure chn p 10623968 html https www bilibili com read cv12294853 基于M3568平台移植nginx https z zlg cn
  • Docker笔记:基本概念、镜像、容器、仓库以及数据卷的使用

    什么是docker docker 是一个开源的应用容器引擎 可以使用docker将应用程序和依赖打包到一个镜像之中 可以非常方便的移植到其他机器上运行 使用docker构建打包我们的应用 build 之后可以像集装箱一样很方便的传输到别的机
  • 【Learning PGM in R】第一章 概率推理

    目录 1 1机器学习 1 1 1监督学习 1 1 2无监督学习和强化学习 1 2概率表示 1 2 1概率计算和随机变量 1 2 2条件概率 联合概率分布和边缘分布 1 3贝叶斯规则 1 4概率图模型基础 1 4 1概率图模型基础理论 1 4