这一周的内容是关于EM算法的,同时介绍了EM算法在混合高斯模型(Mixture
of Gaussians)上的情况以及在因子分析上的用途。
首先介绍一下,什么是混合模型。
Mixture modes
一个混合模型假设数据是通过下面的过程生成的: *
样本并且:
*
样本可以观测的量是符合某些分布:
例如:非监督学习的手写识别是一个10个伯努利分布的混合模型,财务收益估计采用两个高斯混合模型,正态模型和危机时间分布。
而高斯混合模型为: $$
z^{(i)}\sim Multinomial(\phi)\\
x^{(i)} \sim \mathcal{N}(\mu_j,\Sigma_j)
$$
现在我们面临的问题是如何学习得到?
这要分成两种情况来讨论: -
是已知的,那么这个问题变成了一个监督学习的问题。解决的办法我们之前也学到过,实际上就是generative
learning
algorithm的一种,不过它实际上是二次判别分析的例子,比上面的博客的内容更稍微进了一步,可以看Covariance
Matrix Derivation了解详情。在这个情况下:
- 是未知的,这时候则是属于非监督学习的范畴。我们使用期望最大化(expectation
mamximization),也就是EM算法。
Expectation Maximization
EM算法是一个迭代求解最大似然估计的算法。求解最大似然估计我们已经遇到多次,与其他不同的地方在于,它估计的模型依赖于潜在的变量(latent
variables),这些变量是无法观察的。
首先,我们和往常一样,求数据的log-likelihood:
我们先来看看EM算法的步骤,然后再证明它的正确性: >Initialize θ
Repeat untill convergence {
(E - step ) For each i , set
$Q_i(z^{(i)} ):= p(z^{(i)} |x^{(i)} ; θ) $ Posterior distribution
under
(M - step ) Set
Update parameter θ }
Proof of Correctness
我们将会证明(1)等价于,也就是等式(1)是的一个很紧下界。我们也将会证明这个算法最终会收敛。
定义:
第一步:
我们要说明,是的一个下界,而且当时,这个下界是tight
bound. #### Jensen’s Inequality ####
首先需要回顾一下Jensen不等式。如果是一个convex函数,若为随机变量,则:

注意: *
如果f(x)为concave函数,则.
*
如果f(x)为线性函数,则.
我们知道是一个concave函数,实际上,我们可以将写为:
如何证明是一个tight bound?
继续查看上面的Jensen不等式,想要这个不等式变得更紧一点,一个容易想到的策略是让变为一个常量。因此在这里,最简单的做法就是让后的内容与:
简单取,我们得到:
但是,因为是一个分布,因此我们必须要让。所以的取值就比较容易求得了:
因此,上面的推导同时也就证明了当时,是一个tight
lower bound(取到了等号)。到这里,我们完成了E-step。
第二步,证明收敛。
EM算法会单调增加log-likelihood,也就是,如果作为第t次迭代的参数值,则:
这个证明和的取值息息相关。首先,从之前的推导,我们已经知道了:
观察M-step,既然是让上式取得最大值得到的,那么可以得到:
第一步简单地由Jensen不等式得到(对于任何分布都是成立的)。由此我们便证明了这个算法最终会收敛。
EM for Mixture of Gaussians
现在我们来说明以下高斯混合模型下的EM算法。算法步骤如下: >Repeat
until convergence{
(E - step ) For each i, j , set
(M - step ) Update parameters : assume
$$\phi_j = \frac 1 m \sum_ {i=1}^m
w_j^{(i)};\\
\mu_j = \frac{\sum_ {i=1}^m w_j^{(i)}x^{(i)} }{\sum_ {i=1}^mw_j^{(i)}
};\\
\Sigma_j = \frac{\sum_ {i=1}^mw_j^{(i)}(x^{(i)} - \mu_j)(x^{(i)} -
\mu_j)^T}{\sum_ {i=1}^mw_j^{(i)} }
$$ }
下图是一个利用混合高斯模型EM算法的例子: 
同时在这里我们可以看一下EM算法与Llyod’s k-means算法的比较: 
可以看到,混合高斯模型可以看作是k-means聚类问题的一个“软”版本。 ##
Factor Analysis ##
Example

Figure: Self-ratings on 32 Personality Traits

Figure: Pairwise correlation plot of 32 variables from 240
participants
Factor Analysis Terminology
首先介绍几个因子分析中的术语。
observed randam variables
factor
is the hidden (latent) construct that “causes” the observed
variables.
factor loading $ Λ ^{nk}$: the degree to which
variable
is “caused” by the factors.
are the mean and error vectors.
这一些解释我认为用中文翻译的有点别扭,所以就写成了英文。
下面是一个factor loading Λ的例子:
Matrix of factor loading Λ for personality test data
| variable |
factor1 |
factor2 |
factor3 |
factor4 |
| distant |
0.59 |
0.27 |
0 |
0 |
| talkative |
-0.50 |
-0.51 |
0 |
0.27 |
| careless |
0.46 |
-0.47 |
0.11 |
0.14 |
| hardworking |
-0.46 |
0.33 |
-0.14 |
0.35 |
| kind |
-0.488 |
0.222 |
0 |
0 |
| … |
… |
… |
… |
… |

Figure: Visualize loading of the first two factors

Figure: Visualize loading of the first two factors, rotated to align
with axes
实际上因子分析也是一个混合模型,这里有可观察的变量:,以及潜在变量,.
因子分析模型定义了一个联合分布:
$$
z \sim \mathcal N(0,I)\\
\epsilon \sim \mathcal N (0,\Psi)\\
x = \mu + \wedge z + \epsilon
$$
其中
是一个对角矩阵,,并且互相独立,
。
给定了,如何得到参数?
EM for factor analysis
应该比较容易看出这个问题是可以用EM来解决的。下面写出迭代步骤: >
Initialize µ,Λ,Ψ
Repeat untill convergence {
(E-step) For each i , set
z is a continuous variable
(M-step) Set
首先,我们需要把写成模型参数的形式。
我们的随机变量,其中:
我们知道
,因为$
z N(0,I)$。同时我们也可以得到:
所以可以得到:
如果想要得到,需要比较长的推导。如果不在乎的过程的话可以直接跳过。
####
’s
derivation ####
为了得到,我们需要计算(的左上角),(的右上角)以及$
= [(x − [x])(x − [x])^T] $(右下角)。
首先,因为,我们可以轻易得到:。此外:
在最后一步中,我们利用了$ [zz^T] =
Cov(z)
[z^T] = [z] [] = 0$,因为他们是独立的。最后:
最后我们就得到了:
#### E-step ####
E-step不难理解,因为后验分布:,根据EM算法可以得到:
$$
\mu_ {z^{(i)}\vert x^{(i)} } = \wedge^T(\wedge\wedge^T +
\Psi)^{-1}(x^{(i)}-\mu)\\
\Sigma_ {z^{(i)}\vert x^{(i)} } = I - \wedge^T(\wedge\wedge^T +
\Psi)^{-1}\wedge\\
Q_i(z^{(i)}) = \frac{1}{(2\pi)^{k/2}\vert \Sigma_ {z^{(i)}\vert x^{(i)}
}\vert^{1/2} }\exp\left(-\frac{1}{2}(z^{(i)} - \mu_ {z^{(i)}\vert
x^{(i)} })^T\Sigma^{-1}_ {z^{(i)}\vert x^{(i)} }(z^{(i)} - \mu_
{z^{(i)}\vert x^{(i)} })\right)
$$
M-step
我们可以知道: $$
\int_ {z^{(i)} }Q_i(z^{(i)}) \log
\frac{p(x^{(i)},z^{(i)};\mu,\wedge,\Psi)}{Q_i(z^{(i)})}dz^{(i)} \\
=\mathbb{E}_ {z\sim Q_i}[\log p(x^{(i)}|z^{(i)};\mu,\wedge,\Psi) + \log
p(z^{(i)})−\log Q_i(z^{(i)})]
$$ 所以(3)也就等价于:
因为,我们可以得到:
即: $$
p(x^{(i)}|z^{(i)};\mu,\wedge,\Psi)\\
=\frac{1}{(2\pi)^{n/2}\vert \Psi\vert^{1/2}
}\exp\left(-\frac{1}{2}(x^{(i)} - \mu-\wedge z^{(i)})^T\Psi^{-1}(x^{(i)}
- \mu-\wedge z^{(i)})\right)
$$
我们通过来最大化(4)。
与混合高斯模型的对比
- 混合高斯模型假设有足够的数据和相对较少的随机变量,也就是当或者,是奇异矩阵。
- 而因子分析在的时候通过允许模型误差来处理。
与PCA的关系
- 他们都能找到低纬度潜在的子空间。
- PCA可以用来做数据压缩,或者去除冗余数据,它减少了可以观察的数据间的联系。
- 因子分析适合来做数据勘探,来找到观测数据中的独立,共同因子。
- 因子分析允许噪声具有任意的对角协方差矩阵,而PCA假设噪声是球形的。
总之,这节课上的还是很懵逼的。
参考资料: EM
algorithm,factor
analysis