机器学习 —— 3 聚类(K均值和高斯混合模型)

本文详细介绍了两种无监督学习的聚类算法:K均值(K-means)和高斯混合模型(GMM)。K-means通过迭代更新聚类中心实现样本分类,而GMM利用多个高斯分布拟合数据,每个样本可同时属于多个类别。两种算法都使用EM算法进行参数更新,GMM更灵活地考虑了样本属于各类别的概率。
摘要由CSDN通过智能技术生成



前言

聚类是一种无监督学习方法,把相似的对象通过静态分类的方法分成不同的组别或子集合,使得同一类别或子集中的对象具有相似的属性,在数据挖掘、模式识别、图像分析、数据分 析中具有广泛的应用。


一、K均值算法(K-means)

目标:将所有数据样本聚类成 K K K个类别。即找到 k k k个聚类中心 μ 1 , μ 2 , . . . , μ K \mu_1,\mu_2,...,\mu_K μ1,μ2,...,μK,则每个样本点的聚类类别为与之最近的聚类中心所对应类别。

1.模型定义

数据集中有 N N N个样本: { x 1 , x 2 , . . . , x N } \{x_1, x_2, ...,x_N\} {x1,x2,...,xN},对于每个样本 x n x_n xn,定义其聚类类别 r n , r n ∈ R K r_n, r_n\in \mathbb{R}^K rn,rnRK.
r n r_n rn相当于类别的one-hot表示,是一个 K K K维的向量,即如果 x n x_n xn属于第 k k k个聚类类别,则其第 k k k个维度 r n k = 1 r_{nk}=1 rnk=1,其余维度为 0 0 0。例如 r n = [ 0 , 0 , 1 , 0 ] T r_n=[0,0,1,0]^{\mathrm{T}} rn=[0,0,1,0]T表示聚类类别一共4类,且样本 x n x_n xn属于第3类。
模型的目标函数定义如下:
J = ∑ n = 1 N ∑ k = 1 K r n k ∥ x n − μ k ∥ 2 J=\sum^N_{n=1}\sum^K_{k=1}r_{nk}\parallel \textbf{x}_n - \mu_k \parallel^2 J=n=1Nk=1Krnkxnμk2

2.模型算法

目标函数中包含有类别中心 μ \mu μ和样本所属类别 r n r_n rn这两类可更新的参数,可以利用EM算法对其进行更新:
首先随机初始化 K K K个聚类中心 μ 1 \mu_1 μ1 μ K \mu_K μK,然后使用EM算法循环更新参数:

  1. Expectation Step:在当前给定的聚类中心的条件下,计算并更新每个样本的期望类别:
    r n k = { 1 , k = arg min ⁡ j ∥ x n − μ j ∥ 0 , e l s e r_{nk}=\left\{ \begin{aligned} 1 & , & k=\argmin_j \parallel \textbf{x}_n-\mu_j \parallel \\ 0 & , & else \end{aligned} \right. rnk=10,,k=jargminxnμjelse

  2. Maximization Step:在当前给定的样本聚类类别条件下,按照最优化准则生成 μ 1 \mu_1 μ1 μ k \mu_k μk
    将目标函数对参数 μ k \mu_k μk求偏导并置零:
    ∂ J ∂ μ k = 2 ∑ n = 1 N r n k ( x n − μ k ) = 0 \frac{\partial J}{\partial \mu_k} = 2\sum^N_{n=1}r_{nk}(\textbf{x}_n-\mu_k)=0 μkJ=2n=1Nrnk(xnμk)=0 得到:
    μ k = ∑ n r n k x n ∑ n r n k \mu_k=\frac{\sum_nr_{nk}\textbf{x}_n}{\sum_nr_{nk}} μk=nrnknrnkxn用该公式更新 μ 1 \mu_1 μ1 μ k \mu_k μk

可通过观察目标函数 J J J的值判断是否收敛
在这里插入图片描述

二、高斯混合模型(GMM - Gaussian Mixture Model)

高斯混合模型的基本原理是将 K K K不同的高斯分布赋予不同的权重,相加在一起组成一个复杂的分布。理论上如果 K K K值以及权重的的选取得当,高斯混合模型可以拟合任何分布。

1.与K-means的异同

GMM与K-means的思想大致相同,即都需要寻找 K K K聚类中心,将所有样本进行分类。但K-means中每个聚类中心仅仅对应一个固定的点(只有均值 μ \mu μ这一个参数),每个样本只属于一个聚类类别,即距离它最近的聚类中心所对应的类别;而GMM中每个聚类中心对应的是一个高斯分布(拥有均值 μ \mu μ和方差 σ 2 \sigma^2 σ2这两个参数),因为高斯分布的定义域是全体实数,因此每个样本将同时属于 K K K个聚类类别,但对应的概率不同,分类时选择概率最高的分布对应的聚类类别即可。

2.模型定义

对于 N N N个样本: { x 1 , x 2 , . . . , x N } \{x_1,x_2,...,x_N\} {x1,x2,...,xN},定义样本服从的分布为
p ( x ) = ∑ k = 1 K p ( z k ) p ( x ∣ z k ) p(x) = \sum_{k=1}^Kp(z_k)p(x|z_k) p(x)=k=1Kp(zk)p(xzk) 上式相当于一个全概率公式,其中

  • z k z_k zk:表示第 k k k个聚类类别
  • p ( z k ) p(z_k) p(zk):表示第 k k k个聚类类别的概率,在高斯分布中记为 π k \pi_k πk并且满足所有类别的概率之和等于1,即 ∑ k = 1 K p ( z k ) = ∑ k = 1 K π k = 1 \sum^K_{k=1}p(z_k)=\sum^K_{k=1}\pi_k=1 k=1Kp(zk)=k=1Kπk=1
  • p ( x ∣ z k ) p(x|z_k) p(xzk):第 k k k个类别的高斯分布,定义为 N ( x ∣ μ k , Σ k ) \mathcal{N}(x|\mu_k,\Sigma_k) N(xμk,Σk)

因此可以将上述样本分布改写为:
p ( x ∣ π , μ , Σ ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) , s . t . ∑ k = 1 K π k = 1 p(x|\pi,\mu,\Sigma)=\sum^K_{k=1}\pi_k\mathcal{N}(x|\mu_k,\Sigma_k) ,\quad s.t.\sum^K_{k=1}\pi_k=1 p(xπ,μ,Σ)=k=1KπkN(xμk,Σk),s.t.k=1Kπk=1从这个式子中可以更好的看出,高斯混合模型实际上就是用 K K K个不同的加权和形成的分布来拟合真实的样本分布。那么模型中一共有三类参数需要学习:每个类别的权重 π k \pi_k πk,每个类别的均值 μ k \mu_k μk,每个类别的方差 Σ k \Sigma_k Σk

3.模型算法

(1) 几个定义

定义聚类类别 z k z_k zk的后验分布 γ ( z k ) \gamma(z_k) γ(zk)
γ ( z k ) = p ( z k ∣ x ) = p ( z k ) p ( x ∣ z k ) ∑ i = 1 K p ( z i ) p ( x ∣ z i ) = π k N ( x ∣ μ k , Σ k ) ∑ i = 1 K π i N ( x ∣ μ i , Σ i ) \begin{aligned} \gamma(z_k) & = p(z_k|x) \\ & = \frac{p(z_k)p(x|z_k)}{\sum^K_{i=1}p(z_i)p(x|z_i)} \\ & = \frac{\pi_k \mathcal{N}(x|\mu_k,\Sigma_k)}{\sum^K_{i=1}\pi_i \mathcal{N}(x|\mu_i,\Sigma_i)} \end{aligned} γ(zk)=p(zkx)=i=1Kp(zi)p(xzi)p(zk)p(xzk)=i=1KπiN(xμi,Σi)πkN(xμk,Σk)这样就可以通过后验分布计算样本 x i x_i xi属于聚类类别 k k k的概率 γ ( z i k ) \gamma(z_{ik}) γ(zik),可以将其看做是样本 x i x_i xi的类别标签:
γ ( z i k ) = π k N ( x i ∣ μ k , Σ k ) ∑ i = 1 K π i N ( x i ∣ μ i , Σ i ) \gamma(z_{ik}) = \frac{\pi_k \mathcal{N}(x_i|\mu_k,\Sigma_k)}{\sum^K_{i=1}\pi_i \mathcal{N}(x_i|\mu_i,\Sigma_i)} γ(zik)=i=1KπiN(xiμi,Σi)πkN(xiμk,Σk)
定义 N k N_k Nk为属于第 k k k个聚类类别的样本数量(或期望):
N k = ∑ i = 1 N γ ( z i k ) N_k=\sum^N_{i=1}\gamma(z_{ik}) Nk=i=1Nγ(zik) 总样本数量 N N N可以改写为:
N = ∑ k = 1 K ∑ i = 1 N γ ( z i k ) N=\sum^K_{k=1}\sum^N_{i=1}\gamma(z_{ik}) N=k=1Ki=1Nγ(zik)


(2) 求解推导

对于类别权重 π k \pi_k πk,类别均值 μ k \mu_k μk,以及类别方差 Σ k , \Sigma_k, Σk,这三类参数,依旧采用EM算法进行更新学习:
首先写出对数似然函数:
ln ⁡ L ( x ∣ π , μ , Σ ) = ln ⁡ ∏ i = 1 N p ( x i ∣ π , μ , Σ ) = ln ⁡ ∏ i = 1 N ∑ k = 1 K π k N ( x i ∣ μ k , Σ k ) = ∑ i = 1 N ln ⁡ ∑ k = 1 K π k N ( x i ∣ μ k , Σ k ) = ∑ i = 1 N ln ⁡ ∑ k = 1 K π k ( 2 π ) − D 2 Σ k − 1 2 exp ⁡ { − 1 2 ( x i − μ k ) T Σ k − 1 ( x i − μ k ) } \begin{aligned} \ln L(x| \pi,\mu,\Sigma) & = \ln \prod^N_{i=1}p(x_i|\pi,\mu,\Sigma) \\ & = \ln \prod^N_{i=1}\sum^K_{k=1}\pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k) \\ & = \sum^N_{i=1} \ln \sum^K_{k=1}\pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k) \\ & = \sum^N_{i=1} \ln \sum^K_{k=1}\pi_k(2\pi)^{-\frac{D}{2}}\Sigma_k^{-\frac{1}{2}} \exp \left\{-\frac{1}{2}(x_i-\mu_k)^{\mathrm{T}}\Sigma^{-1}_k(x_i-\mu_k)\right\} \end{aligned} lnL(xπ,μ,Σ)=lni=1Np(xiπ,μ,Σ)=lni=1Nk=1KπkN(xiμk,Σk)=i=1Nlnk=1KπkN(xiμk,Σk)=i=1Nlnk=1Kπk(2π)2DΣk21exp{21(xiμk)TΣk1(xiμk)}

μ k \mu_k μk求偏导:
∂ ∂ μ k ln ⁡ L ( x ∣ π , μ , Σ ) = − ∑ i = 1 N ∂ ∂ μ k ln ⁡ ∑ k = 1 K π k N ( x i ∣ μ k , Σ k ) = − ∑ i = 1 N π k N ( x i ∣ μ k , Σ k ) ∑ k = 1 K π k N ( x i ∣ μ k , Σ k ) ⋅ Σ − 1 ( x i − μ k ) = − ∑ i = 1 N γ ( z i k ) ⋅ Σ − 1 ( x i − μ k ) \begin{aligned} \frac{\partial}{\partial \mu_k}\ln L(x| \pi,\mu,\Sigma) & = -\sum^N_{i=1}\frac{\partial}{\partial \mu_k} \ln \sum^K_{k=1}\pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k) \\ & = -\sum^N_{i=1} \frac{\pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k)}{\sum^K_{k=1}\pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k)} \cdot \Sigma^{-1}(x_i-\mu_k) \\ & = -\sum^N_{i=1}\gamma(z_{ik})\cdot \Sigma^{-1}(x_i-\mu_k) \end{aligned} μklnL(xπ,μ,Σ)=i=1Nμklnk=1KπkN(xiμk,Σk)=i=1Nk=1KπkN(xiμk,Σk)πkN(xiμk,Σk)Σ1(xiμk)=i=1Nγ(zik)Σ1(xiμk)导数置零得:
μ k = ∑ i = 1 N γ ( z i k ) x i ∑ i = 1 N γ ( z i k ) = 1 N k ∑ i = 1 N γ ( z i k ) x i \mu_k=\frac{\sum^N_{i=1}\gamma(z_{ik})x_i}{\sum^N_{i=1}\gamma(z_{ik})} = \frac{1}{N_k}\sum^N_{i=1}\gamma(z_{ik})x_i μk=i=1Nγ(zik)i=1Nγ(zik)xi=Nk1i=1Nγ(zik)xi

Σ k \Sigma_k Σk求偏导:
∂ ∂ Σ k ln ⁡ L ( x ∣ π , μ , Σ ) = − ∑ i = 1 N ∂ ∂ Σ k ln ⁡ ∑ k = 1 K π k N ( x i ∣ μ k , Σ k ) = ∑ i = 1 N − 1 2 Σ k − 1 ⋅ π k N ( x i ∣ μ k , Σ k ) + 1 2 Σ k − 1 ( x i − μ k ) ( x i − μ k ) T Σ k − 1 ⋅ π k N ( x i ∣ μ k , Σ k ) ∑ k = 1 K π k N ( x i ∣ μ k , Σ k ) = − 1 2 ∑ i = 1 N { γ ( z i k ) [ Σ k − 1 − Σ k − 1 ( x i − μ k ) ( x i − μ k ) T Σ k − 1 ] } \begin{aligned} \frac{\partial}{\partial \Sigma_k}\ln L(x| \pi,\mu,\Sigma) & = -\sum^N_{i=1}\frac{\partial}{\partial \Sigma_k} \ln \sum^K_{k=1}\pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k) \\ & = \sum^N_{i=1} \frac{-\frac{1}{2}\Sigma^{-1}_k \cdot \pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k) + \frac{1}{2}\Sigma^{-1}_k(x_i-\mu_k)(x_i-\mu_k)^{\mathrm{T}}\Sigma^{-1}_k\cdot\pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k)}{\sum^K_{k=1}\pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k)} \\ & = -\frac{1}{2}\sum^N_{i=1}\{\gamma(z_{ik})[\Sigma^{-1}_k - \Sigma^{-1}_k(x_i-\mu_k)(x_i-\mu_k)^{\mathrm{T}}\Sigma^{-1}_k]\} \end{aligned} ΣklnL(xπ,μ,Σ)=i=1NΣklnk=1KπkN(xiμk,Σk)=i=1Nk=1KπkN(xiμk,Σk)21Σk1πkN(xiμk,Σk)+21Σk1(xiμk)(xiμk)TΣk1πkN(xiμk,Σk)=21i=1N{γ(zik)[Σk1Σk1(xiμk)(xiμk)TΣk1]} 导数置零得:
Σ k = 1 ∑ i = 1 N γ ( z i k ) ∑ i = 1 N γ ( z i k ) ( x i − μ k ) ( x i − μ k ) T = 1 N k ∑ i = 1 N γ ( z i k ) ( x i − μ k ) ( x i − μ k ) T \begin{aligned} \Sigma_k & = \frac{1}{\sum^N_{i=1}\gamma(z_{ik})}\sum^N_{i=1}\gamma(z_{ik})(x_i-\mu_k)(x_i-\mu_k)^{\mathrm{T}} \\ & = \frac{1}{N_k}\sum^N_{i=1}\gamma(z_{ik})(x_i-\mu_k)(x_i-\mu_k)^{\mathrm{T}} \end{aligned} Σk=i=1Nγ(zik)1i=1Nγ(zik)(xiμk)(xiμk)T=Nk1i=1Nγ(zik)(xiμk)(xiμk)T

π k \pi_k πk求偏导:
由于模型对 π \pi π具有限制条件: ∑ k = 1 K π k = 1 \sum^K_{k=1}\pi_k=1 k=1Kπk=1,因此需要引入拉格朗日乘子 λ ( ∑ k = 1 K π k − 1 ) \lambda(\sum^K_{k=1}\pi_k-1) λ(k=1Kπk1),再进行求导:
∂ ∂ Σ k [ ln ⁡ L ( x ∣ π , μ , Σ ) − λ ( ∑ k = 1 K π k − 1 ) ] = ∑ i = 1 N N ( x i ∣ μ k , Σ k ) ∑ k = 1 K π k N ( x i ∣ μ k , Σ k ) − λ = 1 π k ( ∑ i = 1 N N ( x i ∣ μ k , Σ k ) ⋅ π k ∑ k = 1 K π k N ( x i ∣ μ k , Σ k ) − λ ⋅ π k ) = 1 π k ( ∑ i = 1 N γ ( z i k ) − λ ⋅ π k ) \begin{aligned} \frac{\partial}{\partial \Sigma_k}[\ln L(x| \pi,\mu,\Sigma) - \lambda(\sum^K_{k=1}\pi_k-1)] & = \sum^N_{i=1}\frac{\mathcal{N}(x_i|\mu_k,\Sigma_k)}{\sum^K_{k=1}\pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k)} - \lambda \\ & = \frac{1}{\pi_k}\left( \sum^N_{i=1} \frac{\mathcal{N}(x_i|\mu_k,\Sigma_k) \cdot \pi_k}{\sum^K_{k=1}\pi_k\mathcal{N}(x_i|\mu_k,\Sigma_k)} - \lambda \cdot \pi_k \right) \\ & = \frac{1}{\pi_k} \left( \sum^N_{i=1} \gamma(z_{ik}) - \lambda \cdot \pi_k \right) \\ \end{aligned} Σk[lnL(xπ,μ,Σ)λ(k=1Kπk1)]=i=1Nk=1KπkN(xiμk,Σk)N(xiμk,Σk)λ=πk1(i=1Nk=1KπkN(xiμk,Σk)N(xiμk,Σk)πkλπk)=πk1(i=1Nγ(zik)λπk) 导数置零,求得 λ \lambda λ
∑ i = 1 N γ ( z i k ) − λ ⋅ π k = 0 ∑ k = 1 K λ ⋅ π k = ∑ k = 1 K ∑ i = 1 N γ ( z i k ) λ = ∑ k = 1 K ∑ i = 1 N γ ( z i k ) \sum^N_{i=1} \gamma(z_{ik}) - \lambda \cdot \pi_k = 0 \\ \sum^K_{k=1}\lambda \cdot \pi_k = \sum^K_{k=1}\sum^N_{i=1} \gamma(z_{ik}) \\ \lambda = \sum^K_{k=1}\sum^N_{i=1} \gamma(z_{ik}) i=1Nγ(zik)λπk=0k=1Kλπk=k=1Ki=1Nγ(zik)λ=k=1Ki=1Nγ(zik)所以最终得到:
π k = ∑ k = 1 K λ ⋅ π k ∑ k = 1 K ∑ i = 1 N γ ( z i k ) = N k N \pi_k=\frac{\sum^K_{k=1}\lambda \cdot \pi_k}{ \sum^K_{k=1}\sum^N_{i=1} \gamma(z_{ik})} = \frac{N_k}{N} πk=k=1Ki=1Nγ(zik)k=1Kλπk=NNk


(3) EM算法更新

首先随机初始化所有参数: π k , μ k , Σ k \pi_k,\mu_k,\Sigma_k πk,μk,Σk,其中 k = 1 , 2 , . . . , K k=1,2,...,K k=1,2,...,K,之后利用EM算法进行迭代更新。

  1. Expectation Step:根据当前给定的参数 π k , μ k , Σ k \pi_k,\mu_k,\Sigma_k πk,μk,Σk计算所有样本的后验概率 γ ( z i k ) \gamma(z_{ik}) γ(zik)
    γ ( z i k ) = π k N ( x i ∣ μ k , Σ k ) ∑ i = 1 K π i N ( x i ∣ μ i , Σ i ) \gamma(z_{ik}) = \frac{\pi_k \mathcal{N}(x_i|\mu_k,\Sigma_k)}{\sum^K_{i=1}\pi_i \mathcal{N}(x_i|\mu_i,\Sigma_i)} γ(zik)=i=1KπiN(xiμi,Σi)πkN(xiμk,Σk)

  2. Maximization Step:在当前给定的样本聚类类别条件下,按照最优化准则生成 μ 1 \mu_1 μ1 μ k \mu_k μk
    { μ k = 1 N k ∑ i = 1 N γ ( z i k ) x i Σ k = 1 N k ∑ i = 1 N γ ( z i k ) ( x i − μ k ) ( x i − μ k ) T π k = N k N \left\{ \begin{aligned} \mu_k & = \frac{1}{N_k}\sum^N_{i=1}\gamma(z_{ik})x_i \\ \Sigma_k & = \frac{1}{N_k}\sum^N_{i=1}\gamma(z_{ik})(x_i-\mu_k)(x_i-\mu_k)^{\mathrm{T}} \\ \pi_k & = \frac{N_k}{N} \end{aligned} \right. μkΣkπk=Nk1i=1Nγ(zik)xi=Nk1i=1Nγ(zik)(xiμk)(xiμk)T=NNk

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值