type
status
date
slug
summary
tags
category
icon
password

引入

最近的工作中接触到了高斯混合模型(GMM)在设备故障预警中的应用,GMM相比于我过去所接触到的机器学习、深度学习算法还是有比较大的区别的。它是一种统计模型,原理无法像决策树一样,简单地用语言来描述。
因此,啃公式读论文肯定是免不了的了。但是本文只涉及原理的解释,不涉及公式的推导,比较适合需要对GMM进行落地而不需要深入了解的同学。

正态分布

一元正态分布

正态分布(中国大陆作正态分布,香港作正态分布,台湾作常态分布,英语:Normal distribution),又名高斯分布(英语:Gaussian distribution)、正规分布,是一个非常常见的连续概率分布。
notion image
若随机变量服从一个平均数为,标准差为的正态分布,则记为:
则其概率密度函数(PDF)为:
什么叫概率密度函数呢?首先要理解连续型随机变量的概念。例如,我们想测定的一个设备的转速,这个转速的取值不是离散的,即不可能把所有转速的可能值一个一个列举出来,只能划定一个转速区间,可以取这个区间上的任意一点。那么,就属于连续型随机变量。
当然,在这个区间内的取值,也不是处处都概率相同的。机器运行时的转速可能从-1000 rpm(反转)到+1000 rpm(正转),但是在正常工况下,转速都在±500 rpm之间,偶尔会有超载运行的情况。假设机器运行时的转速符合正态分布,我们如果想要得到机器运行在+350 rpm下的概率,就可以使用概率密度函数来计算,即
换句话说,如果机器目前运行在了-780 rpm,我们也可以通过概率密度函数来计算出一个概率,通过上方标准正态分布的概率密度函数图像可知,越往两边,概率密度是越小的,即机器运行在-780 rpm的概率是较小的。如果机器长时间运行在这个转速下,我们就要考虑是不是机器出问题了。
高斯分布通常用于许多工程和科学学科的模型中, 其受欢迎的原因不仅在于其非常理想的计算特性,还因为它能够逼近许多自然发生的现实世界的数据——这要归功于大数定律
在数学与统计学中,大数定律(英语:Law of large numbers)又称大数法则、大数律,是描述相当多次数重复实验的结果的定律。根据这个定律知道,样本数量越多,则其算术平均值就有越高的机率接近期望值。
当然,实际应用中,我们肯定不能只用一个正态分布和单一的变量来诊断机器运行的工况。

多元正态分布

多变量正态分布亦称为多变量高斯分布。它是单维正态分布向多维的推广。
机器运行的工况体现于多个变量中,变量之间存在关联,密不可分,共同体现了机器运行的工况。因此在确定这些变量的分布时,不能单独地计算每个一个变量的分布参数。这时候就可以使用多元正态分布
我们将观测到的个变量组成行向量,这个行向量的概率密度函数为:
为协方差矩阵的行列式。协方差矩阵的计算方式如下:
对于每一个,它的期望值是,即。协方差矩阵的第项为:
期望值怎么算?如果x是在概率空间中的随机变量,那么它的期望值的定义是:
当然,我们在采集机器运行的数据时采集的都是一个一个数据点,因此虽然这个随机变量x是一个连续随机变量,但是我们观测到的是它离散的值,因此在计算的时候就变成的简单的求所有离散值的平均值了。

高斯混合模型

高斯混合模型(Gaussian Mixture Model,GMM)是单一高斯概率密度函数的延伸,就是用多个高斯概率密度函数(正态分布曲线)精确地量化变量分布,是将变量分布分解为若干基于高斯概率密度函数(正态分布曲线)分布的统计模型。
高斯混合模型是个单一正态概率密度函数组成而成的模型,它解决了单一的正态分布无法准确描述复杂情况的缺陷。例如在机器正常运行的工况下,也可以细分为很多不同的小工况:设备启停,定频运行,增减负载等。这些小工况的特征不尽相同,但是都属于正常运行的工况。
notion image
如上图所示,图a可以看作是所有正常运行工况下的特征点,难以用单一的正态分布准确描述;而图b中通过将特征点分为3类,使用3个正态分布来描述这些特征点,更好的描述了这个问题。
高斯混合模型的概率分布表示如下:
其中,为混合模型中正态分布模型的数量,为观测数据属于第个子模型的概率为第个子模型的PDF。

最大期望算法

最大期望算法(Expectation-maximization algorithm,EM算法,又译期望最大化算法)在统计中被用于寻找,依赖于不可观察的隐性变量的概率模型中,参数的最大似然估计。
在学习EM算法之前,我们需要先了解一下似然性和极大似然估计的概念。

似然性

似然性,则是用于在已知某些观测所得到的结果时,对有关事物之性质的参数进行估值,也就是说已观察到某事件后,对相关参数进行猜测。
例如,我们投掷一枚硬币,正面(Head)朝上的概率为,则连续投掷两次,正面朝上的概率为
在统计学中,我们更关心已知一系列投掷的结果时,关于单独投掷一次硬币时正面朝上的概率(即)为何。举例来说,我们投掷的不是一枚“公平的硬币”,是不知道的。这时候我们投掷了3次硬币,其中2次正面朝上,1次背面朝上,那么我们能否根据实验结果去逆推出的值?
如果无法推理出的值,我们能否知道的可能性有多大?的可能性又有多大?或者说,比较,哪个比较有可能?
我们用事件来代表“投掷了3次硬币,其中2次正面朝上,1次背面朝上”这个事实,是我们所要确定的参数,使用联合概率计算可得,事件的似然函数就为:
如果,那么;如果,那么。显然,时,看到2次正面朝上的概率比较大,即似然性更大,因此可以合理猜测更可能是0.6而不是0.5。注意,单独看0.375和0.432这两个数字是没有意义的,因为似然性并不是概率,并不是一定介于0和1之间,所有可能的的似然性加起来也不是1。似然性只有在比较中才存在意义。

极大似然估计

得到了似然函数,我们就可以通过计算似然性,来了解当参数改变时,似然性怎么变化,用来寻找最大可能性的值会是多少。
notion image
对于上文所述的投掷硬币的例子,我们可以绘制从0到1变化时,似然性变化的图像。通过计算可知,最大似然性发生在。所以当我们掷了三次硬币得到两次正面,最合理的猜测应该是。但是可能实际上,但是我们无法知道这件事,只能对我们观测到的事件做出最合理的猜测

简单示例

还是以投掷硬币为例,现在有两种硬币A和B,投掷5次硬币,每次使用的硬币分别为BAABA,得到的结果如下图所示:
notion image
因为我们知道每次投掷硬币的类型和投掷的结果,我们可以简单的计算两种硬币朝上的概率
但是如果我们不知道每次投掷的类型,只知道每次投掷的结果,这时候想去计算出就比较困难了。我们多了一个隐变量,代表每次投掷所使用的硬币类型。如果我们想要计算(极大似然估计),就必须知道,即正面朝上多的,就是大的;但是我们想要计算的话,就必须知道每次使用的硬币类型是什么,这样就陷入了一个循环当中。
解决这个矛盾的方法就是使用最大期望算法,即EM算法来解决这个问题。算法的步骤如下:
首先,初始化
对于第一轮投掷的结果HTTTHHTHTH(5H5T,记为事件)来说,如果这枚硬币是A,则发生的概率为;如果硬币是B,则发生的概率为,那么该轮使用硬币A和硬币B的概率分别为:
同理,我们可以计算出其他4轮使用两种硬币的概率,如下表所示:
Round
Coin A
Coin B
1
0.45
0.55
2
0.80
0.20
3
0.73
0.27
4
0.35
0.65
5
0.65
0.35
这一步我们估计出了的概率分布,这就是EM算法中的E-Step
然后根据以上我们得到的每轮使用硬币类型的概率,我们可以得出硬币A和硬币B在每一轮中的期望值。还是看第一轮5H5T,硬币A的贡献为:
硬币B的贡献为:
同理,求出每一轮每种硬币的期望:
Round
Coin A
Coin B
1
2.25H,2.25T
2.75H,2.75T
2
7.20H,0.80T
1.80H,0.20T
3
5.84H,1.46T
2.16H,0.54T
4
1.40H,2.10T
2.60H,3.90T
5
4.55H,1.95T
2.45H,1.05T
Total
21.24H,8.56T
11.76H,8.44T
然后使用极大似然估计来估计新的
这一步就是EM算法中的M-Step
notion image
然后重复E-Step和M-Step,直到收敛或达到预期的目标。如上图所示,10次迭代后最终的值为

与GMM的结合

上述简单示例中,我们将硬币分为两类,其实就是对应GMM中。将EM算法推广到GMM的思路如下:
首先初始化参数:
  • 数据属于第k个子模型的概率
  • 数据期望
  • 协方差矩阵
其中可以取标准正态分布值。
进入E-Step,计算每个数据来自子模型的概率:
然后进入M-Step,计算所需参数:
重复计算直至收敛,但是需要注意的是,EM算法找到的不保证是全局最大值,可能是局部最大值,可以尝试初始化不同的参数进行迭代

参考资料

  1. 维基百科
  1. 高斯混合模型 | 机器之心
  1. 高斯混合模型(GMM) - 知乎
  1. 高斯混合模型(GMM)介绍以及学习笔记_JamesJuZhang的博客-CSDN博客
  1. 【机器学习】EM——期望最大(非常详细) - 知乎
  1. Tutorial on Expectation Maximization (Example)
工业大数据分析算法(一):传统统计分析类工业大数据分析指南笔记