多元高斯分布/高斯过程全解析
大纲
- 公式推导
- 参数估计
- 高斯分布运算
- 高斯分布性质
- 高斯过程(Gaussian process)
- 高斯混合模型
概念区分
- 边缘分布(marginal distribution)和联合分布
- 概率密度函数和概率分布函数
1. 多元高斯分布公式推导
首先我们知道一元高斯分布是:
其中,
现在进行推导。为了简单起见,假设所有变量都是相互独立的,即对于概率分布函数
假设有很多变量
由于
接下来,为了推出文章开篇的高维公式,我们要想办法得到协方差矩阵
对于二维的向量
协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。简单来讲,协方差就是衡量两个变量相关性的变量。当协方差为正时,两个变量呈正相关关系(同增同减);当协方差为负时,两个变量呈负相关关系(一增一减)。 而协方差矩阵,只是将所有变量的协方差关系用矩阵的形式表现出来而已。通过矩阵这一工具,可以更方便地进行数学运算。协方差公式为:
这样矩阵中之中每个元素
当, 两个变量独立时, 为0:
由于
则
这样一来,我们已经推出了公式的左半部分,下面,开始处理右面的 exp 函数。
原始的高维高斯函数的 exp 函数为:
接下来根据这个二维的例子,将原始的 exp() 展开:
展开到最后,发现推出了原公式。说明原公式
2. 参数估计
如果给定了很多数据点,并且知道它们服从某个高斯分布,我们要求高斯分布的参数(
取对数后求导,令导数为 0 得到似然方程。
得到
多维高斯分布时,假如有
在计算样本协方差矩阵时,我们要使用无偏估计,即将分母由
3. 高斯分布运算
3.1 一元高斯分布相乘
假设
则高斯分布的参数:
上式可写为如下形式,从而推广至
新函数等价于正态分布
3.2 多元高斯分布相乘
3.3 高斯分布相加
两个高斯分布函数直接相加,很明显不是一个高斯函数。如果两个满足高斯分布的随机变量相加,那么他们的和还是一个高斯分布。具体的,如果
需要用到卷积运算:
所以,Z的概率密度函数为:
当
法二:使用特征函数证明
高斯分布的特征函数为:
所以,
3.4 高斯线性模型
高斯线性系统推导如下:
下面对
通过配方可以得到:
下面对
利用联合高斯分布的推断结论,可以得到:
可以推知:
因此
4. 高斯分布性质
多元正态分布有4种等价的定义。
定义1--由标准正态随机向量线性组合得到
设
性质1--特征函数
在概率论中,任何随机变量的特征函数(ch.f)完全定义了它的概率分布。在实直线上,它由以下公式给出,其中X是任何具有该分布的随机变量:
阶原点矩:
阶中心矩: 可见特征函数包含了分布函数的所有矩(moment),也就是包含了分布函数的所有特征。
所以,特征函数其实是随机变量的分布的另外一种描述方式。
假设某连续随机变量的概率密度函数为 ,那么可知: ,特征函数为: 特征函数把分布函数换到另外一个坐标系,也可以获得一些计算的好处:
- 假如我们不知道分布函数,但是通过实验算出了期望、方差、偏度、峰度等,那么可以用特征函数去代替分布函数
- 两个分布函数的卷积
通过特征函数更换坐标系后,可以变为更容易计算的乘法: - 通过对
求导,可以简单求出各阶矩:
由定义1得到的随机向量
其中
证明:首先考虑一维标准正态分布的特征函数为
根据独立性有
进而根据 X 的定义得到
其中
定义2--由特征函数定义
如果随机向量 X 的特征函数具有如下形式
性质2--正态随机向量任意线性变换仍服从正态分布
设
推论--子向量的均值与协方差:
设
则有
注意:
性质3--多元正态 任意线性组合为一元正态
设
证明:
当 X 为 p 元正态分布,由性质2知
反之,如果对任意
进而考察 X 的特征函数得到
刚好等于多元正态的特征函数,由特征函数与分布的一一对应得到结论.
定义3--任意线性组合为正态
如果
性质4--联合密度函数
如果
定义4--密度函数
如果
则称
注意:定义4要求
5. 高斯条件分布和独立性
仅讨论
定理1--正态随机向量的独立性等价于协方差为0矩阵
定理2--条件分布
设
其中
证明:从回归的角度会比较容易理解,理论依据是,在均方意义下,线性回归的结果就是条件期望。将 X 中心化后做回归
那么
因此条件期望就是
下面考虑条件方差的计算。做回归后得到的误差项
由此可以自然地得到下面的推论:
问:如果是三个子向量,给定其中两个,求另一个的条件分布呢?
答:把给定的两个看做一个子向量就可以。
条件数字特征
就是刚刚推导的东西的定义
(1)条件期望(Conditional Expectation),回归系数(regression coefficient),偏相关系数(Partial correlation coefficient)
设
根据定理2有
称为条件期望(Conditional Expectation),记作
区分
:
:一个数
:随机变量,关于 Y 的函数,没有固定的 y 值
: y 的函数 f(y) ,对于给定的 y ,有唯一确定值与之对应
全期望公式(Law of total expectation)
设为离散型随机变量,下列期望和条件期望均存在,则 若
为连续型随机变量,则 若 Y 为离散型随机变量,则
离散型的证明如下:
一个特殊情况:若
是一个样本空间的有限集或可列集,则
为了定义偏回归系数,将条件方差矩阵的元素具体表示为
称
(2)全相关系数(了解)
设
为
(3)最佳预测
记
也就是在均方准则下,条件期望是最优预测,证明方法就是加一项减一项,往证交叉项为0.
5.2 高斯边缘分布
如果联合分布
我们主要研究联合分布的指数项二次型,这次考虑涉及到
其中
上式中与
上面只提出了关于
均值为:
前文介绍过分块矩阵逆矩阵的恒等式,那么可以得出:
最后可以得出边缘概率
边缘概率分布:
5.3 混合高斯分布
通过将更基本的概率分布(高斯分布)进行线性组合叠加,然后形式化为概率模型,被称为混合模型。高斯分布的线性组合可以给出相当复杂的概率密度形式。通过使用足够多的高斯分布,并且调节它们的均值和方差以及线性组合的系数、几乎所有的连续概率密度能够以任意的精度近似。考虑
称为混合高斯分布,每个高斯概率密度
根据概率的加和规则和乘积规则,边缘概率密度为:
这和上面的混合高斯分布公式是等价的,把
后验概率
令
因为该对数似然函数中对数里含有求和式,不能像一元高斯分布那样可以求得封闭的解析解,可以通过迭代数值优化方法以及期望最大化方法来求解。
6. 高斯过程
6.1 简介
高斯过程(Gaussian process, GP) 是一个概率统计学上的概念,更确切的说应该是随机过程(Stochastic process)中一个特殊例子。
在高斯过程中,连续输入空间中每个点都是与一个正态分布的随机变量相关联。此外,这些随机变量的每个有限集合都有一个多元正态分布。高斯过程的分布是所有那些(无限多个)随机变量的联合分布,正因如此,它是连续域(例如时间或空间)的分布。
【定义】 对于一个连续域
GP可以被mean和covariance function共同唯一决定其表达式,具体的,
这里
import numpy as np def gaussian_kernel(x1, x2, l=1.0, sigma_f=1.0): m, n = x1.shape[0], x2.shape[0] dist_matrix = np.zeros((m, n), dtype=float) for i in range(m): for j in range(n): dist_matrix[i][j] = np.sum((x1[i] - x2[j]) ** 2) return sigma_f ** 2 * np.exp(- 0.5 / l ** 2 * dist_matrix) train_X = np.array([1, 3, 7, 9]).reshape(-1, 1)#转换为4*1矩阵形式 print(gaussian_kernel(train_X, train_X)) #4*4矩阵,当 i=j 时,就是自身的方差
6.2 高斯过程回归
我们知道,高斯分布有一个很好的特性,那就是高斯分布的联合概率、边缘概率、条件概率仍然是满足高斯分布的,假设:
那么如果我们把这个
那么依据高斯分布的性质,我们知道下列条件分布依然是一个高维的高斯分布:
也就是说,设置了高斯过程的先验参数,一旦我们拿到一些观测值,那么就可以对高斯过程的均值函数和核函数进行修正,得到一个修正后的后验高斯过程,而更新后验参数的信息就来自于观测值。
构建先验分布
GP超参数的估计
将高斯过程对比高维高斯分布,我们把均值向量替换成均值函数,把协方差矩阵替换成核函数,就能够得到高斯过程基于观测值的后验过程的参数表达式:
我们的一组观测值,他们的时刻对应一个向量
那么余下的所有非观测点,在连续域上我们定义为
首先,联合分布显然是满足无限维高斯分布的:
从这个联合分布所派生出来的条件概率
类比我们就可以写成表达式:
以下例子中,高斯过程先验我们设置均值函数为
import matplotlib.pyplot as plt import numpy as np #高斯核函数 def gaussian_kernel(x1, x2, l=0.5, sigma_f=0.2): m, n = x1.shape[0], x2.shape[0] dist_matrix = np.zeros((m, n), dtype=float) for i in range(m): for j in range(n): dist_matrix[i][j] = np.sum((x1[i] - x2[j]) ** 2) return sigma_f ** 2 * np.exp(- 0.5 / l ** 2 * dist_matrix) #生成观测值,取sin函数没有别的用意,单纯就是为了计算出Y def getY(X): X = np.asarray(X) Y = np.sin(X)*0.4 + np.random.normal(0, 0.05, size=X.shape) return Y.tolist() #根据观察点X,修正生成高斯过程新的均值和协方差 def update(X, X_star): X = np.asarray(X) X_star = np.asarray(X_star) K_YY = gaussian_kernel(X, X) # K(X,X) K_ff = gaussian_kernel(X_star, X_star) # K(X*, X*) K_Yf = gaussian_kernel(X, X_star) # K(X, X*) K_fY = K_Yf.T # K(X*, X) 协方差矩阵是对称的,因此分块互为转置 K_YY_inv = np.linalg.inv(K_YY + 1e-8 * np.eye(len(X))) # (N, N) mu_star = K_fY.dot(K_YY_inv).dot(Y) cov_star = K_ff - K_fY.dot(K_YY_inv).dot(K_Yf) return mu_star, cov_star f, ax = plt.subplots(2, 1, sharex=True,sharey=True) #绘制高斯过程的先验 X_pre = np.arange(0, 10, 0.1) mu_pre = np.array([0]*len(X_pre)) Y_pre = mu_pre cov_pre = gaussian_kernel(X_pre, X_pre) uncertainty = 1.96 * np.sqrt(np.diag(cov_pre))#取95%置信区间 ax[0].fill_between(X_pre, Y_pre + uncertainty,Y_pre - uncertainty, alpha=0.1) ax[0].plot(X_pre, Y_pre, label="expection") ax[0].legend() #绘制基于观测值的高斯过程后验 X = np.array([1, 3, 7, 9]).reshape(-1, 1)#4*1矩阵 Y = getY(X) X_star = np.arange(0, 10, 0.1).reshape(-1, 1) mu_star, cov_star = update(X, X_star) Y_star = mu_star.ravel() uncertainty = 1.96 * np.sqrt(np.diag(cov_star))#取95%置信区间 ax[1].fill_between(X_star.ravel(), Y_star + uncertainty, Y_star - uncertainty, alpha=0.1) ax[1].plot(X_star, Y_star, label="expection") ax[1].scatter(X, Y, label="observation point", c="red", marker="x") ax[1].legend() plt.show()
-
优点
- (采用 RBF 作为协方差函数)具有平滑性质,能够拟合非线性数据
- 高斯过程回归天然支持得到模型关于预测的不确定性(置信区间),直接输出关于预测点值的概率分布
- 通过最大化边缘似然这一简洁的方式,高斯过程回归可以在不需要交叉验证的情况下给出比较好的正则化效果
-
缺点
- 高斯过程是一个非参数模型,每次的 inference 都需要对所有的数据点进行(矩阵求逆)。对于没有经过任何优化的高斯过程回归,n 个样本点时间复杂度大概是
,空间复杂度是 ,在数据量大的时候高斯过程变得 intractable - 高斯过程回归中,先验是一个高斯过程,likelihood 也是高斯的,因此得到的后验仍是高斯过程。在 likelihood 不服从高斯分布的问题中(如分类),需要对得到的后验进行 approximate 使其仍为高斯过程
- RBF 是最常用的协方差函数,但在实际中通常需要根据问题和数据的性质选择恰当的协方差函数
- 高斯过程是一个非参数模型,每次的 inference 都需要对所有的数据点进行(矩阵求逆)。对于没有经过任何优化的高斯过程回归,n 个样本点时间复杂度大概是
References
多元高斯分布完全解析 -知乎
高斯分布相乘、积分整理
多维高斯分布 -博客园
多维正态分布的最大似然估计 -博客园
高斯性质:多元统计分析第01讲--多元正态分布及参数估计(随机向量,多元正态分布定义,条件分布和独立性)-知乎
高斯条件分布:多元统计分析第02讲(条件分布,随机阵的正态分布,参数估计)
高斯边缘分布:深入理解高斯分布
- 高斯过程
通俗理解: 什么是Gaussian process? —— 说说高斯过程与高斯分布的关系
从贝叶斯的角度理解高斯过程回归 -知乎
代码通俗:如何通俗易懂地介绍 Gaussian Process?
| 另一种代码实现(Cholesky分解)
Sum of normally distributed random variables
第三章·随机向量 ----概率论与数理统计
条件期望与全期望公式
汇总型:
prml -gitbook
Gaussian Processes for Machine Learning.pdf
本文作者:Rayinfos
本文链接:https://www.cnblogs.com/rayinfos/p/17814095.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步