前言
极大似然估计:只是一种概率论在统计学的应用,它是参数估计的方法之一。说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,则可通过极大似然估计来估计模型的参数。
参数估计:通过若干次试验,观察其结果,利用结果推出参数的大概值。
最大似然估计:已知某个参数能使这个样本出现的概率最大,我们当然不会再去选择其他小概率的样本,所以干脆就把这个参数作为估计的真实值。
高斯分布
高斯分布(Gaussian distribution)有时也被称为正态分布(normal distribution),是一种在自然界大量的存在的、最为常见的分布形式。
其概率密度函数为:
$$f\left( x\right) =\dfrac {1}{\sqrt {2\pi }\sigma }\exp \left( -\dfrac {\left( x-\mu \right)^2 }{2\sigma ^{2}}\right)$$
如果随机变量服从的正态分布,记作$X\sim N\left( \mu ,\sigma ^{2}\right)$
可见高斯分布包含两个参数,参数μ表示均值,参数σ表示标准差。
高斯混合模型(GMM)
高斯混合模型是对高斯模型进行简单的扩展,GMM使用多个高斯分布的组合来刻画数据分布。每个高斯模型就代表了一个类(一个Cluster)。
混合高斯模型定义为
$$p\left( x\right) =\sum ^{k}_{i=1}\pi _{k}p\left( x{\rm{|}}{\theta _k}\right)$$
其中 K 为模型的个数;$π_k$ 为第 k 个高斯的权重;$p(x {\rm{|}}{\theta _k})$ 则为第 k 个高斯概率密度,其均值为$μ_k$,方差为$σ_k$。对此概率密度的估计就是要求出 $π_k$、$μ_k$ 和 $σ_k$ 各个变量。当求出$p(x)$的表达式后,求和式的各项的结果就分别代表样本 x 属于各个类的概率。
对于一个高斯分布,我们可以使用极大似然估计来估计 $μ_k$ 和 $σ_k$,但问题是存在很多高斯分布,我们空有许多样本点,却无法知道 $π_k$ (我们需要使用GMM模型对样本分类,因此不知道每个样本属于哪个类,自然也就不知道类的权重 $π_k$)。那么究竟如何进行参数估计呢?GMM通常使用最大期望( Expectation Maximum,简称EM)进行参数评估。
EM算法(Expectation maximization,期望最大化)
引入一个二进制向量指标$s = { {s_k}} {\rm{,}}\;k = 1{\rm{,}}2{\rm{,}} \cdots {\rm{,}}K$来代表$x$属于哪个集群
$$s_k = 1\ \ if\ x\ belong\ to\ k_{th}\ pattern\ ,otherwire\ 0 $$
这里$p({s_{k}} = 1) = {w_k}$,是$x$ 的先验概率,模型可改写为:
$$p(x) = \sum \limits^K _ {k = 1} p({s_{k}} = 1)p(x{\rm{|}}{\theta _k})$$
后验概率分布$p({s_{nk}} = 1{\rm{|}}x)$ 可以通过贝叶斯推断如下计算
EM算法(Expectation-Maximization algorithm)分两步,第一步先求出要估计参数的粗略值,第二步使用第一步的值最大化似然函数。因此要先求出GMM的似然函数。
- 定义分量数目K,对每个分量k设置$π_k$,$μ_k$和$\sigma_k$的初始值,然后计算对数似然函数$p(\boldsymbol{x}|\boldsymbol{\pi}, \boldsymbol{\mu}, \boldsymbol{\sigma}) = \sum_{k=1}^K\pi_k \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\sigma}_k)$。
- E step:根据当前的$π_k$,$μ_k$和$\sigma_k$计算后验概率$p({s_{nk}} = 1{\rm{|}}x)$。
$$p({s_{nk}} = 1{\rm{|}}x) = \frac{\pi_ k\mathcal{N}(\boldsymbol{x}_ n| \boldsymbol{\mu}_ n, \boldsymbol{\sigma} _ n)}{\sum _{j=1}^K \pi _ j \mathcal{N}(\boldsymbol{x} _ n| \boldsymbol{\mu} _ j, \boldsymbol{\sigma} _ j)}$$
- M step :根据E step中计算的$p({s_{nk}} = 1{\rm{|}}x)$再计算新的$π_k$,$μ_k$和$\sigma_k$
$$\boldsymbol{\mu}_k^{new} = \frac{1}{N_k} \sum_{n=1}^N p({s_{nk}} = 1{\rm{|}}x) \boldsymbol{x}_n$$
$$\boldsymbol{\sigma}_k^{new} = \frac{1}{N_k} \sum_{n=1}^N p({s_{nk}} = 1{\rm{|}}x) (\boldsymbol{x}_n - \boldsymbol{\mu}_k^{new}) (\boldsymbol{x}_n - \boldsymbol{\mu}_k^{new})^T $$
$$\pi_k^{new} = \frac{N_k}{N}$$
注:以上3式为分别为似然函数对$π_k$,$μ_k$和$\sigma_k$求导并令倒数为0得到。
其中:
$$N_k = \sum_{n=1}^N p({s_{nk}} = 1{\rm{|}}x)$$
- 计算对数似然函数
$$\ln p(\boldsymbol{x}|\boldsymbol{\pi}, \boldsymbol{\mu}, \boldsymbol{\sigma}) = \sum_{n=1}^N \ln \left[\sum_{k=1}^K \pi_k \mathcal{N}(\boldsymbol{x}_k| \boldsymbol{\mu}_k, \boldsymbol{\sigma}_k)\right]$$ - 检查参数是否收敛或对数似然函数是否收敛,若不收敛,则返回第2步。
GMM模型的简单使用
使用sklearn中的isrs数据集与GMM模型进行简单使用。代码如下
输出结果
正确率为 0.9066666666666666
从预测结果可看出,黄色与绿色重叠部分存在部分样本分类错误,整体分类准确率为90%。