1:问题介绍
有N个数据$\overrightarrow{X}$={x1,x2,…,xn},每个数据时D维的,根据K个高斯分布(每个被称作Component)将数据聚成K个类。
由中心极限定理知大量的独立随机变量之和具有近似于正态的分布,所以我们认为每个xi独立同正态分布,又$\vec X$是D维的,则多元高斯模型:
2:引入隐藏随机变量$\overrightarrow {Z}$
思想:我们要从 GMM 的分布中随机地取一个点的话,实际上可以分为两步:首先随机地在这 个 Component 之中选一个,每个 Component 被选中的概率实际上就是它的系数 ,选中了 Component 之后,再单独地考虑从这个 Component 的分布中选取一个点就可以了──这里已经回到了普通的 Gaussian 分布,转化为了已知的问题。
实际上就是$\overrightarrow {Z}$一个K维的二元随机变量,表示每一个点属于哪一个Component的。
(1):$\overrightarrow{Z}$是一个K维的二元随机变量满足1-of- K representation
$\overrightarrow{Z}$中只有一个zk为1,其余均为0,例如K=6,z3 =1,于是$\overrightarrow{Z}$ 表示为(0,0,1,0,0,0)T
$z_k\in \left\{ 0,1\right\}$并且$\begin{matrix} \sum_{k} z_k=1 \end{matrix}$ 并令$p(z_k=1)=\pi_k$,$\pi_k$满足:$0\leq \pi_k \leq 1$ 并且 $\sum_{k=1}^{K} \pi_k $ = 1
那么p(Z)为:
$p(\overrightarrow{Z}) = \prod_{k=1}{K}\pi_k^{z_k}$
(2)我们认定在给定zk下X的条件概率为高斯分布,则有
$p(\overrightarrow{X}|z_k=1)=\mathcal{N}(x|\mu_k, \Sigma_k)$那么得到x和z的联合分布,在通过边缘分布得到
$p(\vec X)=\sum_{\vec Z} p(\vec Z)p(\vec X | \vec Z)$
=$\sum_{k=1}^{K}\pi_k \mathcal{N}(x|\mu_k, \Sigma_k)$
这样我们就可以用$\vec X$,$vec Z$的联合分布来代替$p(vec X)$
(3)估计数据X由每个 Component 生成的概率(并不是每个 Component 被选中的概率):即Z在给定X下的条件概率,利用贝叶斯公式得到
3:参数估计
因为我们不知道参数,所以就是进行参数估计,一般采取数理统计中的极大似然函数去估计参数
通常取对数的似然估计函数
4:应用EM
由于上式对数函数里面又有加和,我们没法直接用求导解方程的办法直接求得最大值。所以利用EM思想来做
(1):初始化$\mu_k$,$\Sigma_k$等参数
(2):E步
利用现有参数得到
(3):M步
重新估计参数
(4):评估log 似然函数是否收敛,否则转到第二步
E步的思想就是,如果是第一步,则先选一个初始参数值,否则利用当前的参数值,计算出数据由每个Component生成的概率
M步的思想就是
估计每个 Component 的参数:现在我们假设上一步中得到的 就是正确的“数据 由 Component 生成的概率”,亦可以当做该 Component 在生成这个数据上所做的贡献,或者说,我们可以看作 这个值其中有 这部分是由 Component 所生成的。集中考虑所有的数据点,现在实际上可以看作 Component 生成了 这些点。由于每个 Component 都是一个标准的 Gaussian 分布,可以很容易分布求出最大似然所对应的参数值
https://blog.sciencenet.cn/blog-796597-643966.html
上一篇:
算法学习(六):最近邻分类器(KNN)下一篇:
算法学习(八):关联分析