一文详解大富翁6完整版高斯混合模型原理
本文摘要:文/陈运文 达观数据CEO 什么是高斯混合模型(Gaussian Mixture Model) 高斯混合模型(Gaussian Mixture Model)通常简称GMM,是一种业界广泛使用的聚类算法,该方法使用了高斯分布作为参数模型,并使用了期望最大(Expectation Maximization,简称EM)算

文/陈运文 达观数据CEO

什么是高斯混合模型(Gaussian Mixture Model)

高斯混合模型(Gaussian Mixture Model)通常简称GMM,是一种业界广泛使用的聚类算法,该方法使用了高斯分布作为参数模型,并使用了期望最大(Expectation Maximization,简称EM)算法进行训练。

本文对该方法的原理进行了通俗易懂的讲解,期望读者能够更直观地理解方法原理。文本的最后还分析了高斯混合模型了另一种常见聚类算法K-means的关系,实际上在特定约束条件下,K-means算法可以被看作是高斯混合模型(GMM)的一种特殊形式(达观数据 陈运文)。

1 什么是高斯分布?

高斯分布(Gaussian distribution)有时也被称为正态分布(normal distribution),是一种在自然界大量的存在的、最为常见的分布形式。在提供精确数学定义前,先用一个简单的例子来说明。

如果我们对大量的人口进行身高数据的随机采样,并且将采得的身高数据画成柱状图,将会得到如下图1所示的图形。这张图模拟展示了334个成人的统计数据,可以看出图中最多出现的身高在180cm左右2.5cm的区间里。

图1 由334个人的身高数据构成的正态分布直方图

图1 由334个人的身高数据构成的正态分布直方图

这个图形非常直观的展示了高斯分布的形态。接下来看下严格的高斯公式定义,高斯分布的概率密度函数公式如下:

enter image description here

公式中包含两个参数,参数μ 表示均值,参数 σ表示标准差,均值对应正态分布的中间位置,在本例中我们可以推测均值在180cm附近。标准差衡量了数据围绕均值分散的程度。

学过大学高数的同学应该还记得,正态分布的一个背景知识点是,95%的数据分布在均值周围2个标准差的范围内。本例中大约20到30左右是标准差参数的取值,因为大多数数据都分布在120cm到240cm之间。

上面的公式是概率密度函数,也就是在已知参数的情况下,输入变量指x,可以获得相对应的概率密度。还要注意一件事,就是在实际使用前,概率分布要先进行归一化,也就是说曲线下面的面积之和需要为1,这样才能确保返回的概率密度在允许的取值范围内。

如果需要计算指定区间内的分布概率,则可以计算在区间首尾两个取值之间的面积的大小。另外除了直接计算面积,还可以用更简便的方法来获得同样的结果,就是减去区间x对应的累积密度函数(cumulative density function,CDF)。因为CDF表示的是数值小于等于x的分布概率。

回到之前的例子来评估下参数和对应的实际数据。假设我们用柱状线来表示分布概率,每个柱状线指相应身高值在334个人中的分布概率,用每个身高值对应的人数除以总数(334)就可以得到对应概率值,图2用左侧的红色线(Sample Probability)来表示。

如果我们设置参数μ =180,σ =28,使用累积密度函数来计算对应的概率值——右侧绿色线(Model Probability),可以肉眼观察到模型拟合的精度。

图2 对给定用户,身高分布的采样概率用红色柱状图表示,高斯模型在参数μ=180,σ=28时计算出的概率用绿色柱状图表示

图2 对给定用户,身高分布的采样概率用红色柱状图表示,高斯模型在参数μ=180,σ=28时计算出的概率用绿色柱状图表示

观察图2可以看出,刚才咱们猜测的均值参数180和标准差参数28拟合的效果很不错,虽然可能稍微偏小了一点点。当然我们可以不断调校参数来拟合得更好些,但是更准确的办法是通过算法来生成它们,这个过程就被称为模型训练(model training)。最常用的方法是期望最大(EM)算法,下文会进行详细讲解。

顺便一提,采样的数据和全体数据的分布多少总是存在一定差异的。这里首先假设了采集的334个用户的数据能代表全体人口的身高分布。另外我们还假定了隐含的数据分布是高斯分布,并以此来绘制分布曲线,并以此为前提预估潜在的分布情况。如果采集越来越多的数据,通常身高的分布越来越趋近于高斯(尽管仍然有其他不确定因素),模型训练的目的就是在这些假设前提下尽可能降低不确定性(达观数据 陈运文)。

2 期望最大与高斯模型训练

模型的EM训练过程,直观的来讲是这样:我们通过观察采样的概率值和模型概率值的接近程度,来判断一个模型是否拟合良好。然后我们通过调整模型以让新模型更适配采样的概率值。反复迭代这个过程很多次,直到两个概率值非常接近时,我们停止更新并完成模型训练。

现在我们要将这个过程用算法来实现,所使用的方法是模型生成的数据来决定似然值,即通过模型来计算数据的期望值。通过更新参数μ和σ来让期望值最大化。这个过程可以不断迭代直到两次迭代中生成的参数变化非常小为止。该过程和k-means的算法训练过程很相似(k-means不断更新类中心来让结果最大化),只不过在这里的高斯模型中,我们需要同时更新两个参数:分布的均值和标准差

3 高斯混合模型(GMM)

高斯混合模型是对高斯模型进行简单的扩展,GMM使用多个高斯分布的组合来刻画数据分布。

举例来说:想象下现在咱们不再考察全部用户的身高,而是要在模型中同时考虑男性和女性的身高。假定之前的样本里男女都有,那么之前所画的高斯分布其实是两个高斯分布的叠加的结果。相比只使用一个高斯来建模,现在我们可以用两个(或多个)高斯分布(陈运文):

enter image description here

该公式和之前的公式非常相似,细节上有几点差异。首先分布概率是K个高斯分布的和,每个高斯分布有属于自己的μ和σ 参数,以及对应的权重参数,权重值必须为正数,所有权重的和必须等于1,以确保公式给出数值是合理的概率密度值。换句话说如果我们把该公式对应的输入空间合并起来,结果将等于1。

回到之前的例子,女性在身高分布上通常要比男性矮,画成图的话如图3。

图3 男性和女性身高的概率分布图

图3 男性和女性身高的概率分布图

大富翁游戏:一文详解大富翁6完整版高斯混合模型原理