1. 聚类问题(Clustering Problem)
-
聚类是将一组对象根据它们的相似性进行分组,使得同一组内的对象相比于其他组的对象更加相似。
-
聚类是一种无监督学习任务,即在没有事先给定类别标签的情况下,根据相似性对对象进行分组。这与分类(有监督学习)问题不同,分类是基于已知的类别标签进行分类的。
-
聚类问题分为硬聚类(hard clustering)和软聚类(soft clustering),前者将每个对象明确地进行划分,如K-means算法,而后者每个对象可以以某种概率或权重属于多个簇。现实中,研究者可能更感兴趣的是一些具有连续性的聚类分配(软聚类),因为硬聚类的离散结果可能不符合实际需求。这就需要构建一种概率模型来处理具有多个簇的复杂数据。
2. 混合模型(Mixture Model)
- 混合模型不止使用一个单一参数模型,而是包含 K K K个参数模型的概率密度函数。 p ( y i ∣ π , θ ) = ∑ j = 1 K π j p ( y i ∣ θ j ) p(y_i|\pmb{\pi},\pmb{\theta})=\sum_{j=1}^K\pi_jp(y_i|\theta_j) p(yi∣π,θ)=∑j=1Kπjp(yi∣θj)。每一个样本 y i y_i yi都从这样一个加权的概率分布中抽样而来,所以 y \pmb{y} y 的边际似然函数为: ∏ i = 1 n p ( y i ∣ π , θ ) = ∏ i = 1 n { ∑ j = 1 K π j p ( y i ∣ θ j ) } \prod_{i=1}^np(y_i|\pmb{\pi},\pmb{\theta})=\prod_{i=1}^n\{\sum_{j=1}^K\pi_jp(y_i|\theta_j)\} ∏i=1np(yi∣π,θ)=∏i=1n{∑j=1Kπjp(yi∣θj)}。
【举个例子】:下图为一元混合高斯模型示意图:
- 模型的概率密度函数(pdf): p ( y i ∣ π , θ ) p(y_i|\pmb{\pi},\pmb{\theta}) p(yi∣π,θ) 是 K K K个独立的参数模型的加权组合。其中, { ( π j , θ j ) , j = 1 , ⋯ , K } \{(\pi_j,\theta_j),j=1,\cdots,K\} {(πj,θj),j=1,⋯,K} 分别是 K K K个模型的参数
- 混合模型引入隐变量 z z z 来表示数据属于哪一个聚类。
3. 混合模型的生成过程
-
Step 1:我们先生成分类隐变量 z ∈ { 1 , ⋯ , K } z\in\{1,\cdots,K\} z∈{1,⋯,K},并且 Pr ( z = j ) = π j \Pr(z=j)=\pi_j Pr(z=j)=πj
-
Step 2:然后我们生成 y ∣ z ∼ p ( y ∣ θ z ) y|z\sim p(y|\theta_z) y∣z∼p(y∣θz)。于是我们可以得到 y , z y,z y,z 的联合分布: p ( y , z ) = p ( y ∣ z ) Pr ( z ) p(y,z)=p(y|z)\Pr(z) p(y,z)=p(y∣z)Pr(z) 于是 y y y 的边际似然函数: p ( y ) = ∑ j = 1 K p ( y , z = j ) = ∑ j = 1 K p ( y ∣ z = j ) Pr ( z = j ) p(y)=\sum_{j=1}^Kp(y,z=j)=\sum_{j=1}^Kp(y|z=j)\Pr(z=j) p(y)=∑j=1Kp(y,z=j)=∑j=1Kp(y∣z=j)Pr(z=j)
-
Pr ( z = j ) = π j \Pr(z=j)=\pi_j Pr(z=j)=πj 表示在没有观察数据点时,数据点属于簇 j j j 的先验概率
-
观察到数据点 y y y 后,我们希望通过贝叶斯定理来计算数据点属于簇 j j j 的后验概率: Pr ( z = j ∣ y ) = p ( y ∣ z = j ) Pr ( z = j ) p ( y ) = p ( y ∣ z = j ) Pr ( z = j ) ∑ l = 1 K p ( y ∣ z = l ) Pr ( z = l ) = p ( y ∣ z = j ) π j ∑ l = 1 K p ( y ∣ z = l ) π l \Pr(z=j|y)=\frac{p(y|z=j)\Pr(z=j)}{p(y)}=\frac{p(y|z=j)\Pr(z=j)}{\sum_{l=1}^Kp(y|z=l)\Pr(z=l)}=\frac{p(y|z=j)\pi_j}{\sum_{l=1}^Kp(y|z=l)\pi_l} Pr(z=j∣y)=p(y)p(y∣z=j)Pr(z=j)=∑l=1Kp(y∣z=l)Pr(z=l)p(y∣z=j)Pr(z=j)=∑l=1Kp(y∣z=l)πlp(y∣z=j)πj
4. 高斯混合模型(GMM)
4.1 已知参数 π , μ , σ 2 \pmb{\pi},\pmb{\mu},\pmb{\sigma^2} π,μ,σ2 更新 z \pmb{z} z
-
p ( y ∣ π , μ , σ 2 ) = ∑ j = 1 K π j N ( y ∣ μ j , σ j 2 ) p(y|\pmb{\pi},\pmb{\mu},\pmb{\sigma^2})=\sum_{j=1}^K\pi_j\mathcal{N}(y|\mu_j,\sigma_j^2) p(y∣π,μ,σ2)=∑j=1KπjN(y∣μj,σj2):边际似然,其中 N ( y ∣ μ j , σ j 2 ) = 1 2 π σ 2 exp { − ( y − μ ) 2 2 σ 2 } \mathcal{N}(y|\mu_j,\sigma_j^2)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\{-\frac{(y-\mu)^2}{2\sigma^2}\} N(y∣μj,σj2)=2πσ21exp{−2σ2(y−μ)2}
-
Pr ( z = j ) = π j \Pr(z=j)=\pi_j Pr(z=j)=πj:先验,从第 j j j 个混合组件中抽样的概率
p ( y ∣ z = j ) = N ( y ∣ μ j , σ j 2 ) p(y|z=j)=\mathcal{N}(y|\mu_j,\sigma_j^2) p(y∣z=j)=N(y∣μj,σj2):条件似然
⇒ p ( z = j ∣ y ) = p ( y ∣ z = j ) Pr ( z = j ) p ( y ) \Rightarrow p(z=j|y)=\frac{p(y|z=j)\Pr(z=j)}{p(y)} ⇒p(z=j∣y)=p(y)p(y∣z=j)Pr(z=j)
4.2 已知 z \pmb{z} z 更新参数 π , μ , σ 2 \pmb{\pi},\pmb{\mu},\pmb{\sigma^2} π,μ,σ2
-
现在我们有观测数据 y = { y 1 , ⋯ , y n } \pmb{y}=\{y_1,\cdots,y_n\} y={y1,⋯,yn},似然函数 L ( π , μ , σ 2 ∣ y ) = ∏ i = 1 n p ( y ∣ π , μ , σ 2 ) = ∏ i = 1 n { ∑ j = 1 K π j N ( y ∣ μ j , σ j 2 ) } L(\pmb{\pi},\pmb{\mu},\pmb{\sigma^2}|\pmb{y})=\prod_{i=1}^np(y|\pmb{\pi},\pmb{\mu},\pmb{\sigma^2})=\prod_{i=1}^n\{\sum_{j=1}^K\pi_j\mathcal{N}(y|\mu_j,\sigma_j^2)\} L(π,μ,σ2∣y)=∏i=1np(y∣π,μ,σ2)=∏i=1n{∑j=1KπjN(y∣μj,σj2)} 。
注意到,似然函数是一个求和累乘的形式,我们很难通过最大似然估计推导出 π ^ M L E , μ ^ M L E , σ ^ M L E \pmb{\hat{\pi}}_{MLE},\pmb{\hat{\mu}}_{MLE},\pmb{\hat{\sigma}}_{MLE} π^MLE,μ^MLE,σ^MLE
-
假设我们知道每一个观测变量 y i y_i yi 的类别 z i z_i zi, ( y i , z i ) (y_i,z_i) (yi,zi) 的联合分布有如下形式: p ( y i , z i ∣ π , μ , σ 2 ) = Pr ( z i ) p ( y i ∣ z i ) = π z i N ( y i ∣ μ z i , σ z i 2 ) p(y_i,z_i|\pmb{\pi},\pmb{\mu},\pmb{\sigma^2})=\Pr(z_i)p(y_i|z_i)=\pi_{z_i}\mathcal{N}(y_i|\mu_{z_i},\sigma_{z_i}^2) p(yi,zi∣π,μ,σ2)=Pr(zi)p(yi∣zi)=πziN(yi∣μzi,σzi2)
联合对数似然:
log p ( y , z ) = ∑ i = 1 n log p ( y i , z i ) = ∑ i = 1 n { log π z i + log N ( y i ∣ μ z i , σ z i 2 ) } = ∑ i = 1 n { log π z i − ( y i − μ z i ) 2 2 σ z i 2 − 1 2 log ( 2 π σ z i 2 ) } \begin{aligned} \log p(\pmb{y},\pmb{z})&=\sum_{i=1}^n\log p(y_i,z_i)\\ &=\sum_{i=1}^n\{\log \pi_{z_i}+\log \mathcal{N}(y_i|\mu_{z_i},\sigma_{z_i}^2)\}\\ &=\sum_{i=1}^n\{\log \pi_{z_i}-\frac{(y_i-\mu_{z_i})^2}{2\sigma_{z_i}^2}-\frac{1}{2}\log (2\pi\sigma_{z_i}^2)\} \end{aligned} logp(y,z)=i=1∑nlogp(yi,zi)=i=1∑n{logπzi+logN(yi∣μzi,σzi2)}=i=1∑n{logπzi−2σzi2(yi−μzi)2−21log(2πσzi2)} -
记 T = [ τ i j ] i = 1 , j = 1 n , K ∈ R n × K \Tau=[\tau_{ij}]_{i=1,j=1}^{n,K}\in \R^{n\times K} T=[τij]i=1,j=1n,K∈Rn×K, τ i j \tau_{ij} τij 表示第 i i i 个观测数据属于第 j j j 个高斯组件的概率, 定义指示函数:
I ( z i = j ) = { 1 , arg max l z i l = j 0 , arg max l z i l ≠ j I(z_i=j)= \begin{cases} 1,\quad \arg \max\limits_{l} z_{il} = j\\[2ex] 0, \quad \arg \max\limits_{l} z_{il} \neq j \end{cases} I(zi=j)=⎩ ⎨ ⎧1,arglmaxzil=j0,arglmaxzil=j -
则:
log p ( y , z ) = ∑ i = 1 n ∑ j = 1 K I ( z i = j ) ⋅ ( log π j + log N ( y i ∣ μ j , σ j 2 ) ) \begin{aligned} \log p(\pmb{y},\pmb{z})&=\sum_{i=1}^n\sum_{j=1}^K I(z_{i}=j)\cdot(\log \pi_j+\log\mathcal{N}(y_i|\mu_j,\sigma_j^2)) \end{aligned} logp(y,z)=i=1∑nj=1∑KI(zi=j)⋅(logπj+logN(yi∣μj,σj2))
- 通过最大联合对数似然,我们可以得到:
π j ∗ = ∑ i = 1 n I ( z i = j ) n μ j ∗ = ∑ i = 1 n y i ⋅ I ( z i = j ) ∑ i = 1 n I ( z i = j ) σ j 2 ∗ = ∑ i = 1 n ( y i − μ j ∗ ) 2 ⋅ I ( z i = j ) ∑ i = 1 n I ( z i = j ) \begin{aligned} \pi_j^*&=\frac{\sum_{i=1}^n I(z_{i}=j)}{n}\\ \mu_j^*&=\frac{\sum_{i=1}^n y_i\cdot I(z_{i}=j)}{\sum_{i=1}^n I(z_{i}=j)}\\ \sigma_j^{2*}&=\frac{\sum_{i=1}^n (y_i-\mu_j^*)^2\cdot I(z_{i}=j)}{\sum_{i=1}^n I(z_{i}=j)} \end{aligned} πj∗μj∗σj2∗=n∑i=1nI(zi=j)=∑i=1nI(zi=j)∑i=1nyi⋅I(zi=j)=∑i=1nI(zi=j)∑i=1n(yi−μj∗)2⋅I(zi=j)
-
π j ∗ \pi_j^* πj∗: n n n 个观测数据中,属于第 j j j 个高斯组件的样本个数
μ j ∗ \mu_j^* μj∗:第 j j j 个高斯组件的样本均值
σ j 2 ∗ \sigma_j^{2*} σj2∗:第 j j j 个高斯组件的样本方差
4.3 EM算法
由4.1和4.2我们知道,如果我们知道混合高斯模型的参数,我们能够使用贝叶斯定理轻松地进行软聚类;如果我们提前知道每一个样本的类别标签 z \pmb{z} z,我们能够轻松地估计混合高斯模型的参数 π , μ , σ 2 \pmb{\pi},\pmb{\mu},\pmb{\sigma^2} π,μ,σ2。但问题是,我们啥也不知道!然而,我们也许可以构建一个迭代算法,来反复进行4.1和4.2中的过程知道算法收敛。这就是大名鼎鼎的Expectation-Maximization算法,简称EM算法。
- EM算法:
- 初始化参数 ( π , μ , σ 2 ) (\pmb{\pi},\pmb{\mu},\pmb{\sigma^2}) (π,μ,σ2)
- E-step:计算软聚类 τ i j = Pr ( z i = j ∣ π , μ , σ 2 ) = π j N ( y i ∣ μ j , σ j 2 ) ∑ l = 1 K π l N ( y i ∣ μ l , σ l 2 ) \tau_{ij}=\Pr(z_i=j|\pmb{\pi},\pmb{\mu},\pmb{\sigma^2})=\frac{\pi_j\mathcal{N}(y_i|\mu_j,\sigma_j^2)}{\sum_{l=1}^K\pi_l\mathcal{N}(y_i|\mu_l,\sigma_l^2)} τij=Pr(zi=j∣π,μ,σ2)=∑l=1KπlN(yi∣μl,σl2)πjN(yi∣μj,σj2)
- M-step:更新GMM参数:
- π j ( n e w ) = ∑ i = 1 n τ i j n \pi_j^{(new)}=\frac{\sum_{i=1}^n \tau_{ij}}{n} πj(new)=n∑i=1nτij
- μ j ( n e w ) = ∑ i = 1 n y i ⋅ τ i j ∑ i = 1 n τ i j \mu_j^{(new)}=\frac{\sum_{i=1}^n y_i\cdot\tau_{ij}}{\sum_{i=1}^n \tau_{ij}} μj(new)=∑i=1nτij∑i=1nyi⋅τij
- ( σ j 2 ) ( n e w ) = ∑ i = 1 n τ i j ( y i − μ j ( n e w ) ) 2 ∑ i = 1 n τ i j (\sigma_j^2)^{(new)}=\frac{\sum_{i=1}^n \tau_{ij}(y_i-\mu_j^{(new)})^2}{\sum_{i=1}^n \tau_{ij}} (σj2)(new)=∑i=1nτij∑i=1nτij(yi−μj(new))2
- 重复E-step和M-step直到收敛。
EM算法是否收敛到MLE的证明(略)。