注意:该博客来自于论文:A Hierarchical Latent Variable Model for Data Visualization和Automated Hierarchical Mixtures of Probabilistic Principal Component Analyzers,仅用于学习,转载请注明出处。
1 混合PPCA
使用有限混合模型聚类是一种众所周知的方法。在本模型中,假定数据是从混合分量的密度函数中生成的,其中每一个分量的混合密度函数
p
(
t
∣
i
)
p(\mathbf{t} \mid i)
p(t∣i)代表一个cluster。PPCA是一个概率模型,我们用一个single PPCA分布来建立每一个混合的分量。因此观测变量
t
\mathbf{t}
t的概率密度可写成:
p
(
t
)
=
∑
i
=
1
k
0
π
i
p
(
t
∣
μ
i
,
σ
i
2
,
W
i
)
p(\mathbf{t})=\sum_{i=1}^{k_{0}} \pi_{i} p\left(\mathbf{t} \mid \mu_{i}, \sigma_{i}^{2}, \mathbf{W}_{i}\right)
p(t)=i=1∑k0πip(t∣μi,σi2,Wi)
其中,
p
(
t
∣
μ
i
,
σ
i
2
,
W
i
)
p\left(\mathbf{t} \mid \mu_{i}, \sigma_{i}^{2}, \mathbf{W}_{i}\right)
p(t∣μi,σi2,Wi)代表第
i
i
i个component的PPCA密度函数,
k
0
k_0
k0代表component的数量,
π
i
\pi_i
πi表示第
i
i
i个component的混合比例,所有的
π
i
\pi_i
πi服从一个约束:
π
i
≥
0
\pi_{i} \geq 0
πi≥0和
∑
i
=
1
k
0
π
i
=
1
\sum_{i=1}^{k_{0}} \pi_{i}=1
∑i=1k0πi=1。
观测数据的对数似然为:
L = ∑ n = 1 N log { ∑ i = 1 k 0 π i p ( t n ∣ μ i , σ i 2 , W i ) } \mathcal{L}=\sum_{n=1}^{N} \log \left\{\sum_{i=1}^{k_{0}} \pi_{i} p\left(\mathbf{t}_{n} \mid \mu_{i}, \sigma_{i}^{2}, \mathbf{W}_{i}\right)\right\} L=n=1∑Nlog{i=1∑k0πip(tn∣μi,σi2,Wi)}
但是,上述的对数似然很难直接优化,因此我们使用EM算法来寻找局部最大值。如果我们假定一组示性变量 z n i z_{n i} zni(通常为缺失数据),他们具体指定由哪个模型负责生成哪个数据点 t n \mathbf{t}_n tn,然后完全数据的对数似然为:
L c = ∑ n = 1 N ∑ i = 1 k 0 z n i log { π i p ( t n ∣ μ i , σ i 2 , W i ) } \mathcal{L}_{c}=\sum_{n=1}^{N} \sum_{i=1}^{k_{0}} z_{n i} \log \left\{\pi_{i} p\left(\mathbf{t}_{n} \mid \mu_{i}, \sigma_{i}^{2}, \mathbf{W}_{i}\right)\right\} Lc=n=1∑Ni=1∑k0znilog{πip(tn∣μi,σi2,Wi)}
应用EM算法来计算参数 π i , μ i , σ i 2 \pi_{i}, \mu_{i}, \sigma_{i}^{2} πi,μi,σi2和 W i \mathbf{W}_{i} Wi的MLE:
E-step:
属于第
i
i
i个component的数据点
t
n
\mathbf{t}_n
tn的后验概率
R
n
i
R_{n i}
Rni为:
R
n
i
=
E
[
z
n
i
]
=
π
i
p
(
t
n
∣
μ
i
,
σ
i
2
,
W
i
)
p
(
t
n
)
R_{n i}=E\left[z_{n i}\right]=\frac{\pi_{i} p\left(\mathbf{t}_{n} \mid \mu_{i}, \sigma_{i}^{2}, \mathbf{W}_{i}\right)}{p\left(\mathbf{t}_{n}\right)}
Rni=E[zni]=p(tn)πip(tn∣μi,σi2,Wi)
M-step:
π
~
i
=
1
N
∑
n
=
1
N
R
n
i
μ
~
i
=
∑
n
=
1
N
R
n
i
t
n
∑
n
=
1
N
R
n
i
\begin{array}{c} \tilde{\pi}_{i}=\frac{1}{N} \sum_{n=1}^{N} R_{n i} \\ \tilde{\mu}_{i}=\frac{\sum_{n=1}^{N} R_{n i} \mathbf{t}_{n}}{\sum_{n=1}^{N} R_{n i}} \end{array}
π~i=N1∑n=1NRniμ~i=∑n=1NRni∑n=1NRnitn
为了更新
σ
i
2
\sigma_{i}^{2}
σi2和
W
i
\mathbf{W}_{i}
Wi,首先计算加权样本协方差矩阵:
S
i
=
∑
n
=
1
N
R
n
i
(
t
n
−
μ
~
i
)
(
t
n
−
μ
~
i
)
T
∑
n
=
1
N
R
n
i
\mathbf{S}_{i}=\frac{\sum_{n=1}^{N} R_{n i}\left(\mathbf{t}_{n}-\tilde{\mu}_{i}\right)\left(\mathbf{t}_{n}-\tilde{\mu}_{i}\right)^{T}}{\sum_{n=1}^{N} R_{n i}}
Si=∑n=1NRni∑n=1NRni(tn−μ~i)(tn−μ~i)T
然后计算:
σ
M
L
2
=
1
d
−
q
∑
i
=
q
+
1
d
λ
i
W
M
L
=
U
q
(
Λ
q
−
σ
M
L
2
I
)
1
/
2
R
\begin{array}{c} \sigma_{M L}^{2}=\frac{1}{d-q} \sum_{i=q+1}^{d} \lambda_{i} \\ \mathbf{W}_{M L}=\mathbf{U}_{q}\left(\Lambda_{q}-\sigma_{M L}^{2} \mathbf{I}\right)^{1 / 2} \mathbf{R} \end{array}
σML2=d−q1∑i=q+1dλiWML=Uq(Λq−σML2I)1/2R
2 分层混合PPCA
将混合PPCA模型扩展为分层混合PPCA模型。下面的表述也将是非常一般地。我们可以将此分层混合模型应用到任意混合参数密度模型中。
截止目前为止,我们考虑的模型都是:第一层为一个简单的潜变量模型,第二层为
k
0
k_0
k0个component模型的混合。现在将这样的两层混合模型扩展到三层混合模型,那么第三层次一组潜变量模型
G
i
G_i
Gi是由第二层次的第
i
i
i个component模型生成的。那么对应的概率密度可以表述为:
p
(
t
)
=
∑
i
=
1
k
0
π
i
∑
j
∈
g
i
π
j
∣
i
p
(
t
∣
μ
i
,
j
,
σ
i
,
j
2
,
W
i
,
j
)
p(\mathbf{t})=\sum_{i=1}^{k_{0}} \pi_{i} \sum_{j \in g_{i}} \pi_{j \mid i} p\left(\mathbf{t} \mid \mu_{i, j}, \sigma_{i, j}^{2}, \mathbf{W}_{i, j}\right)
p(t)=i=1∑k0πij∈gi∑πj∣ip(t∣μi,j,σi,j2,Wi,j)
其中,
p
(
t
∣
μ
i
,
j
,
σ
i
,
j
2
,
W
i
,
j
)
p\left(\mathbf{t} \mid \mu_{i, j}, \sigma_{i, j}^{2}, \mathbf{W}_{i, j}\right)
p(t∣μi,j,σi,j2,Wi,j)代表一个single PPCA模型,
π
j
∣
i
\pi_{j \mid i}
πj∣i代表的是混合比例,其中,
π
j
∣
i
≥
0
\pi_{j \mid i} \geq 0
πj∣i≥0 and
∑
j
π
j
∣
i
=
1
\sum_{j} \pi_{j \mid i}=1
∑jπj∣i=1。
每一个层次对应一个生成模型,更低的水平代表更精细更更详细的表示。
注意:图片来自Bishop的论文:A Hierarchical Latent Variable Model
for Data Visualization
第三层模型参数的确定同样可以再次被视为数据缺失问题,其中缺失的信息对应于指定哪个模型生成每个数据点的标签。所以当未提供标签信息时,对数似然为:
L = ∑ n = 1 N ln { ∑ i = 1 k 0 π i ∑ j ∈ g i π j ∣ i p ( t n ∣ μ i , j , σ i , j 2 , W i , j ) } L=\sum_{n=1}^{N} \ln \left\{\sum_{i=1}^{k_{0}} \pi_{i} \sum_{j \in g_{i}} \pi_{j \mid i} p(\mathbf{t}_n \mid \mu_{i, j}, \sigma_{i, j}^{2}, \mathbf{W}_{i, j})\right\} L=n=1∑Nln{i=1∑k0πij∈gi∑πj∣ip(tn∣μi,j,σi,j2,Wi,j)}
然而,如果我们给出一组示性变量
z
n
i
z_{ni}
zni,指定每个数据点
t
n
t_n
tn是由第二层上的第
i
i
i个模型生成的,那么对数似然就会变成:
L
=
∑
n
=
1
N
∑
i
=
1
k
0
z
n
i
log
{
π
i
∑
j
∈
g
i
π
j
∣
i
p
(
t
n
∣
μ
i
,
j
,
σ
i
,
j
2
,
W
i
,
j
)
}
L = \sum_{n=1}^{N} \sum_{i=1}^{k_{0}} z_{n i} \log \left\{\pi_{i} \sum_{j \in g_{i}} \pi_{j \mid i} p\left(\mathbf{t}_{n} \mid \mu_{i, j}, \sigma_{i, j}^{2}, \mathbf{W}_{i, j}\right)\right\}
L=n=1∑Ni=1∑k0znilog{πij∈gi∑πj∣ip(tn∣μi,j,σi,j2,Wi,j)}
事实上,对于每个模型 i i i生成数据点 t n t_n tn的后验概率 R n i R_{ni} Rni形式,我们只有从层次结构的第2层获得部分的概率的信息。对上述公式求期望,得到第三层次水平的对数似然:
L = ∑ n = 1 N ∑ i = 1 k 0 R n i log { π i ∑ j ∈ g i π j ∣ i p ( t n ∣ μ i , j , σ i , j 2 , W i , j ) } L = \sum_{n=1}^{N} \sum_{i=1}^{k_{0}} R_{n i} \log \left\{\pi_{i} \sum_{j \in g_{i}} \pi_{j \mid i} p\left(\mathbf{t}_{n} \mid \mu_{i, j}, \sigma_{i, j}^{2}, \mathbf{W}_{i, j}\right)\right\} L=n=1∑Ni=1∑k0Rnilog{πij∈gi∑πj∣ip(tn∣μi,j,σi,j2,Wi,j)}
上述式子同样可以使用EM算法进行最大化,除了E-STEP中模型
(
i
,
j
)
(i,j)
(i,j)生成数据点
t
n
\mathbf{t}_n
tn的后验概率之外,这和一般的混合模型有相同的形式。
R
n
i
,
j
=
R
n
i
R
n
j
∣
i
R_{n i, j}=R_{n i} R_{n j \mid i}
Rni,j=RniRnj∣i
其中,
R
n
j
∣
i
=
π
j
∣
i
p
(
t
n
∣
μ
i
,
j
,
σ
i
,
j
2
,
W
i
,
j
)
∑
k
∈
g
i
π
k
∣
i
p
(
t
∣
μ
i
,
k
,
σ
i
,
k
2
,
W
i
,
k
)
R_{n j \mid i}=\frac{\pi_{j \mid i} p\left(\mathbf{t}_{n} \mid \mu_{i, j}, \sigma_{i, j}^{2}, \mathbf{W}_{i, j}\right)}{\sum_{k \in g_{i}} \pi_{k \mid i} p\left(\mathbf{t} \mid \mu_{i, k}, \sigma_{i, k}^{2}, \mathbf{W}_{i, k}\right)}
Rnj∣i=∑k∈giπk∣ip(t∣μi,k,σi,k2,Wi,k)πj∣ip(tn∣μi,j,σi,j2,Wi,j)
M-step中,混合系数和均值的更新公式为:
π ~ j ∣ i = ∑ n R n i , j Σ n R n i μ ~ i , j = ∑ n R n i , j t n ∑ n R m i , j \begin{array}{l} \tilde{\pi}_{j \mid i}=\frac{\sum_{n} R_{n i, j}}{\Sigma_{n} R_{n i}} \\ \tilde{\mu}_{i, j}=\frac{\sum_{n} R_{n i, j} \mathbf{t}_{n}}{\sum_{n} R_{m i, j}} \end{array} π~j∣i=ΣnRni∑nRni,jμ~i,j=∑nRmi,j∑nRni,jtn
缺失数据的
z
n
i
,
j
z_{ni,j}
zni,j的后验期望为:
⟨
x
n
i
,
j
⟩
=
M
i
,
j
−
1
W
i
,
j
T
(
t
n
−
μ
~
i
,
j
)
⟨
x
n
i
,
j
x
n
i
,
j
T
⟩
=
σ
i
,
j
2
M
i
,
j
−
1
+
⟨
x
n
i
,
j
⟩
⟨
x
n
i
,
j
T
⟩
\begin{array}{c} \left\langle\mathbf{x}_{n i, j}\right\rangle=\mathbf{M}_{i, j}^{-1} \mathbf{W}_{i, j}^{\mathrm{T}}\left(\mathbf{t}_{n}-\tilde{\mu}_{i, j}\right) \\ \left\langle\mathbf{x}_{n i, j} \mathbf{x}_{n i, j}^{\mathrm{T}}\right\rangle=\sigma_{i, j}^{2} \mathbf{M}_{i, j}^{-1}+\left\langle\mathbf{x}_{n i, j}\right\rangle\left\langle\mathbf{x}_{n i, j}^{\mathrm{T}}\right\rangle \end{array}
⟨xni,j⟩=Mi,j−1Wi,jT(tn−μ~i,j)⟨xni,jxni,jT⟩=σi,j2Mi,j−1+⟨xni,j⟩⟨xni,jT⟩
W
~
i
,
j
=
[
∑
n
R
n
i
,
j
(
t
n
−
μ
~
i
,
j
)
⟨
x
n
i
,
j
T
⟩
[
∑
n
R
n
i
,
j
⟨
x
n
i
,
j
x
n
i
,
j
T
⟩
]
−
1
σ
~
i
,
j
2
=
1
d
∑
n
R
n
i
,
j
{
∑
n
R
n
i
,
j
∥
t
n
−
μ
~
i
,
j
∥
2
−
2
∑
n
R
n
i
,
j
⟨
x
n
i
,
j
T
\
W
~
i
,
j
T
(
t
n
−
μ
~
i
,
j
)
+
∑
n
R
n
i
,
j
Tr
[
⟨
x
n
i
,
j
x
n
i
,
j
T
⟩
W
~
i
,
j
T
W
~
i
,
j
]
}
\begin{array}{c} \tilde{\mathbf{W}}_{i, j}=\left[\sum_{n} R_{n i, j}\left(\mathbf{t}_{n}-\widetilde{\boldsymbol{\mu}}_{i, j}\right)\left\langle\mathbf{x}_{n i, j}^{\mathrm{T}}\right\rangle\left[\sum_{n} R_{n i, j}\left\langle\mathbf{x}_{n i, j} \mathbf{x}_{n i, j}^{\mathrm{T}}\right\rangle\right]^{-1}\right. \\ \tilde{\sigma}_{i, j}^{2}=\frac{1}{d \sum_{n} R_{n i, j}}\left\{\sum_{n} R_{n i, j}\left\|\mathbf{t}_{n}-\tilde{\mu}_{i, j}\right\|^{2}\right. \\ -2 \sum_{n} R_{n i, j}\left\langle\mathbf{x}_{n i, j}^{\mathrm{T}} \backslash \tilde{\mathbf{W}}_{i, j}^{\mathrm{T}}\left(\mathbf{t}_{n}-\widetilde{\boldsymbol{\mu}}_{i, j}\right)\right. \\ \left.+\sum_{n} R_{n i, j} \operatorname{Tr}\left[\left\langle\mathbf{x}_{n i, j} \mathbf{x}_{n i, j}^{\mathrm{T}}\right\rangle \tilde{\mathbf{W}}_{i, j}^{\mathrm{T}} \tilde{\mathbf{W}}_{i, j}\right]\right\} \end{array}
W~i,j=[∑nRni,j(tn−μ
i,j)⟨xni,jT⟩[∑nRni,j⟨xni,jxni,jT⟩]−1σ~i,j2=d∑nRni,j1{∑nRni,j∥tn−μ~i,j∥2−2∑nRni,j⟨xni,jT\W~i,jT(tn−μ
i,j)+∑nRni,jTr[⟨xni,jxni,jT⟩W~i,jTW~i,j]}
我们可以将E-step替换进M-step方程来获得更新公式:
W
~
i
,
j
=
S
i
,
j
W
i
,
j
(
σ
i
,
j
2
I
+
M
i
,
j
−
1
W
i
,
j
T
S
i
,
j
W
i
,
j
)
−
1
σ
~
i
,
j
2
=
1
d
Tr
(
S
i
,
j
−
S
i
,
j
W
i
,
j
M
i
,
j
−
1
W
~
i
,
j
T
)
\begin{array}{c} \tilde{\mathbf{W}}_{i, j}=\mathbf{S}_{i, j} \mathbf{W}_{i, j}\left(\sigma_{i, j}^{2} \mathbf{I}+\mathbf{M}_{i, j}^{-1} \mathbf{W}_{i, j}^{\mathrm{T}} \mathbf{S}_{i, j} \mathbf{W}_{i, j}\right)^{-1} \\ \tilde{\sigma}_{i, j}^{2}=\frac{1}{d} \operatorname{Tr}\left(\mathbf{S}_{i, j}-\mathbf{S}_{i, j} \mathbf{W}_{i, j} \mathbf{M}_{i, j}^{-1} \tilde{\mathbf{W}}_{i, j}^{\mathrm{T}}\right) \end{array}
W~i,j=Si,jWi,j(σi,j2I+Mi,j−1Wi,jTSi,jWi,j)−1σ~i,j2=d1Tr(Si,j−Si,jWi,jMi,j−1W~i,jT)
其中,
S
i
,
j
=
1
N
i
,
j
∑
n
R
n
i
,
j
(
t
n
−
μ
~
i
,
j
)
(
t
n
−
μ
~
i
,
j
)
T
\mathbf{S}_{i, j}=\frac{1}{N_{i, j}} \sum_{n} R_{n i, j}\left(\mathbf{t}_{n}-\widetilde{\boldsymbol{\mu}}_{i, j}\right)\left(\mathbf{t}_{n}-\widetilde{\boldsymbol{\mu}}_{i, j}\right)^{\mathrm{T}}
Si,j=Ni,j1n∑Rni,j(tn−μ
i,j)(tn−μ
i,j)T
N
i
,
j
=
∑
n
R
n
i
,
j
N_{i, j}=\sum_{n} R_{n i, j}
Ni,j=n∑Rni,j
S i , j \mathbf{S}_{i, j} Si,j被解释为responsibility-weighted的协方差矩阵。
对于这种分层建模的技术,可以直接扩展到其他任何的参数族。
3 自动分层混合PPCA
3.1 建立分层和决定什么时候进行分裂clusters
我们按照如下构造分层结构:
在每一层上,我们对每一个cluster执行一个阶次设别检验来观察是否该cluster应该在下一层分割成两个子clusters。特别地,我们采用分层的混合PPCA模型,
g
i
g_i
gi中有两个子clusters。然后,我们基于一种标准评价的测度来比较原来的cluster和它的两个子clusters,如果两个子clusters的结果优于原来的cluster,那么我们就用这两个子clusters来替换原来的cluster,如果原来的cluster优于两个子clusters,那么原来的cluster就不能分割成两个子clusters,我们直接将原来的cluster直接复制到第三层。我们只考虑三层模型,不考虑更低层次的模型了。我们重复这个过程,直到第三层所有的单个cluster都不能分割成两个子clusters或者clusters的数量达到最大
K
m
a
x
K_{max}
Kmax为止。
这引导我们:应该采用什么样的标准来进行分割呢??
这个问题类似于如何确定混合模型中的clusters的数量,这是一个比较困难的任务。我们使用积分分类似然(ICL)准则:
I C L = L c − m log ( N ) / 2 I C L=\mathcal{L}_{c}-m \log (N) / 2 ICL=Lc−mlog(N)/2
L c \mathcal{L}_{c} Lc是上述提到的完全的对数似然, m m m代表需要估计的模型的参数的个数, N N N代表样本量, k k k代表混合的component的个数, m m m随 k k k的变化而变化。
在此,我们选择用 R n i R_{ni} Rni来替换 z n i z_{ni} zni,这代表混合问题中‘soft’聚类解。这个标准成为 ICL-BICin (McLachlan & Peel, 2000) 并且他们演示这个标准优于BIC和AIC准则。
通过最大化ICL来选择clusters的数量。ICL看起来很像BIC,但是它并不是惩罚观测对数似然,而是惩罚完全数据对数似然函数的期望 L c \mathcal{L}_{c} Lc, L c \mathcal{L}_{c} Lc的期望等于 L + ∑ n = 1 N ∑ i = 1 k 0 R n i log R n i \mathcal{L}+\sum_{n=1}^{N} \sum_{i=1}^{k_{0}} R_{n i} \log R_{n i} L+∑n=1N∑i=1k0RnilogRni(也就是似然函数减去模糊分类矩阵的估计熵)。ICL测量的是观测数据对数似然减去clusters重叠程度再减去模型参数复杂性的惩罚。
让我们总结一下我们用于计算单个PPCA组分及其两个子类ICL的表达式:
第 i i i个component的ICL为:
∑ n = 1 N R n i log { π i p ( t n ∣ μ i , σ i 2 , W i ) } − m 1 log ( N ) 2 \sum_{n=1}^{N} R_{n i} \log \left\{\pi_{i} p\left(\mathbf{t}_{n} \mid \mu_{i}, \sigma_{i}^{2}, \mathbf{W}_{i}\right)\right\}-\frac{m_{1} \log (N)}{2} n=1∑NRnilog{πip(tn∣μi,σi2,Wi)}−2m1log(N)
第
i
i
i个component的两个子类的ICL为:
∑
n
=
1
N
∑
j
=
1
2
R
n
i
,
j
log
{
π
i
,
j
p
(
t
n
∣
μ
i
,
j
,
σ
i
,
j
2
,
W
i
,
j
)
}
−
m
2
log
(
N
)
2
\begin{array}{r} \sum_{n=1}^{N} \sum_{j=1}^{2} R_{n i, j} \log \left\{\pi_{i, j} p\left(\mathbf{t}_{n} \mid \mu_{i, j}, \sigma_{i, j}^{2}, \mathbf{W}_{i, j}\right)\right\}- \frac{m_{2} \log (N)}{2} \end{array}
∑n=1N∑j=12Rni,jlog{πi,jp(tn∣μi,j,σi,j2,Wi,j)}−2m2log(N)
m 1 m_1 m1和 m 2 m_2 m2表示第 i i i个component及其两个子类的自有参数的个数。
3.2 决定每个component的主子空间的维度
我们介绍了一种类似于传统主成分分析降维技术的简单而快速的方法。
q
i
=
argmin
1
<
q
<
d
(
∑
j
=
1
q
λ
j
trace
(
S
i
)
>
90
%
)
q_{i}=\operatorname{argmin}_{1<q<d}\left(\frac{\sum_{j=1}^{q} \lambda_{j}}{\operatorname{trace}\left(S_{i}\right)}>90 \%\right)
qi=argmin1<q<d(trace(Si)∑j=1qλj>90%)
λ
i
\lambda_i
λi是
S
i
S_i
Si的特征值。