EM算法及其应用: K-means 与 高斯混合模型

EM算法及其应用(一)

EM算法及其应用(二): K-means 与 高斯混合模型



上一篇阐述了EM算法的主要原理,这一篇来看其两大应用 —— K-means 与 高斯混合模型,主要由EM算法的观点出发。



K-means


K-means的目标是将样本集划分为K个簇,使得同一个簇内样本的距离尽可能小,不同簇之间的样本距离尽可能大,即最小化每个簇中样本与质心的距离。K-means属于原型聚类(prototype-based clustering),原型聚类指聚类结构能通过一组原型刻画,而原型即为样本空间中具有代表性的点。在K-means中,这个原型就是每个簇的质心 μ


从EM算法的观点来看,K-means的参数就是每个簇的质心 μ,隐变量为每个样本的所属簇。如果事先已知每个样本属于哪个簇,则直接求平均即可得到 μ 。但现实中不知道的情况下,则需要运用EM的思想:


假设要k个簇,先随机选定k个点作为质心{μ1,μ2μk}

  1. 固定μk,将样本划分到距离最近的μk所属的簇中。若用rnk表示第n个样本所属的簇,则

rnk={1ifk=argminj||xnμj||20otherwise


2. 固定rnk,根据上一步的划分结果重新计算每个簇的质心。由于我们的目标是最小化每个簇中样本与质心的距离,可将目标函数表示为 J=n=1Nrnk||xnμk||2,要最小化J则对μk求导得 2n=1Nrnk(xnμk)=0,则 μk=nrnkxnnrnk 即簇中每个样本的均值向量。

上面两步分别更新rnkμk就对应了EM算法中的E步和M步。和EM算法一样,K-means每一步都最小化目标函数 J,因而可以保证收敛到局部最优值,但在非凸目标函数的情况下不能保证收敛到全局最优值。另外,K-means对每个样本进行“硬分配(hard assignment)”,即只归类为一个簇,然而某些样本可能处于簇与簇的边界处,将这些样本强行分到其中一个簇可能并不能反映确信度。后文的高斯混合模型可进行“软分配(soft assignment)”, 即对每个样本所划分的簇进行概率估计。


最后总结一下K-means算法的优缺点:

优点

  1. 可解释性比较强。
  2. 调参的参数仅为簇数k。
  3. 相对于高斯混合模型而言收敛速度快,因而常用于高斯混合模型的初始值选择。K-means 的时间复杂度为 O(NKI) ,簇数 K 和 迭代次数 I 通常远小于N,所以可优化为 O(N) ,效率较高。

缺点

  1. 对离群点敏感。

  2. K值难以事先选取,交叉验证不大适合,因为簇越多,目标函数 n=1Nrnk||xnμk||2 就越小。常采用的方法有:一、“拐点法”,如下图 K=3 就是一个拐点。

二、 加上正则化系数 λ ,使得 n=1N(rnk||xnμk||2)+λK 最小。
3. 无法保证收敛到全局最优值,常使用不同的初始值进行多次试验。也可以通过 K-means++ 算法优化,核心思想是选取与已有质心距离较远的点作为初始值。

  1. 只能发现球状的簇。

  2. 由于采用欧氏距离,无法直接计算类别型变量。




高斯混合模型


高斯混合模型同样多用于聚类,与K-means不同的是其采用概率模型来表达聚类原型。
首先回顾一下高斯分布(Gaussian Distribution):对于随机变量x,其概率密度函数可表示为:

N(x|μ,σ2)=12πσ2e(xμ)22σ2

x为n维随机向量,则多元高斯分布(Multivariate Gaussian Distribution)为:

N(x|μ,Σ)=1(2π)n2|Σ|12e12(xμ)TΣ1(xμ)

其中μ为n维均值向量,Σn×n的协方差矩阵,|Σ|Σ的行列式。


很多时候我们发现单个高斯分布无法很好地描述数据的性质,如下图数据分成了两个簇,如果使用两个高斯分布明显能更好地描述其结构。


因此沿着这个思路就诞生了高斯混合模型(Mixture of Gaussians),本质上是k个高斯分布的线性组合,这样灵活性大增,能描述更多样的分布:

(1.1)p(x)=k=1KπkN(x|μk,Σk)

其中0πk1为混合系数(mixing coefficients),满足k=1Kπk=1


由于本文的主角是EM算法,所以下面以EM算法的角度来看待高斯混合模型。

回忆EM算法是一种对含有隐变量的概率模型参数的极大似然估计。通常隐变量Z未知,而实际知晓的只有观测数据X。而对于高斯混合模型来说,观测数据是这样产生的:先依照πk选择第k个高斯分模型,然后依照其概率密度函数进行采样生成相应的样本。

可以看到在经过上述过程后我们拿到手的只有采样得来的样本,却不知道每个样本来自于哪个分模型,但这样就表示我们获得了高斯混合模型的隐变量。

这里定义K维随机向量 z=[z1z2zk]z中只有一个zk为1,其余元素为0,即zk={1,数据来自第k个分模型0,否则


这样zk即为高斯混合模型的隐变量,表示样本来自于第k个分模型。


由于p(x)=zp(x,z)=zp(z)p(x|z),对比(1.1)式中高斯混合模型的定义,可将πk视为选择第k个分模型的先验概率,即πk=p(zk=1);而对应的N(x|μk,Σk)=p(x|zk=1)。另外在得到观测数据{x1,x2xn}后,每个xn都对应一个隐变量znk,则运用贝叶斯定理,xn属于第k个分模型的后验概率 (记作γ(znk))为:

γ(znk)=p(znk=1|xn)=p(znk=1)p(xn|znk=1)j=1Kp(znj=1)p(xn|znj=1)(1.2)=πkN(xn|μk,Σk)j=1KπjN(xn|μj,Σj)


下图显示了γ(znk)的作用,图a是依照完全数据的联合分布p(x,z)作图,每个点依照其所属的第k个分模型标记颜色,这类似于“硬分配”; 图b则不考虑隐变量z,仅依照不完全数据x直接作图; 图c则考虑了每个样本来自于各个分模型的后验概率γ(znk),这样一些在簇中间的点的颜色是红蓝绿三种颜色的混合,表明这些点来自于每个簇的概率比较接近,这即为“软分配”。



为了估计参数,如果直接采用极大似然法,则

L(θ)=lnp(X|θ)=lnp(X|π,μ,Σ)=ln[n=1N(k=1KπkN(xn|μk,Σk))]=n=1Nln(k=1Kπk1(2π)n2|Σ|12e12(xμ)TΣ1(xμ))

上式直接求导比较复杂,因为存在“和的对数” ln(k=1KπkN) ,而如果使用EM算法则会方便很多。


先依照上一篇EM算法的流程,写出含Q函数:

(1.3)Q(θ,θ(t))=n=1Nzp(z|xn,π(t),μ(t),Σ(t))ln(xn,z|π,μ,Σ)

(1.2)式可知,(1.3)中第一项 p(znk=1|xn,π(t),μ(t),Σ(t))=γ(znk),表示当前参数下每个样本xn属于第k个分模型的后验概率。而第二项为完全数据的对数似然函数:

ln(xn,z|π,μ,Σ)=lnk=1K[πkN(xn|μk,Σk)]znk=k=1Kznk[lnπk+lnN(xn|μk,Σk)]

由此(1.3)式变为:

n=1Nk=1Kγ(znk)[lnπk+lnN(xn|μk,Σk)](1.4)=n=1Nk=1Kγ(znk)[lnπk+ln(1(2π)n2|Σ|12e12(xnμk)TΣk1(xnμk))]

可以看到上式括号中变成了“对数的和”,这使得求导方便了很多,且求解时式中ln()e()可以相互抵消。


(1.4)式分别对μkΣk求导得:

μk=n=1Nγ(znk)xnn=1Nγ(znk),Σk=n=1Nγ(znk)(xnμk)(xnμk)Tn=1Nγ(znk)

可以看到分模型k的μkΣk是所有样本的加权平均,其中每个样本的权重为该样本属于分模型k的后验概率γ(znk) 。对比上文中K-means的 μk=nrnkxnnrnk,二者形式类似,区别为K-means中的rnk{0,1},而高斯混合模型中γ(znk)为概率估计。


对于混合系数πk,因为有限制条件k=1Kπk=1,因此需要使用拉格朗日乘子法转化为无约束优化问题:

n=1Nk=1Kγ(znk)[lnπk+ln(1(2π)n2|Σ|12e12(xnμk)TΣk1(xnμk))]+λ(k=1Kπk1)

πk求导得,

(1.5)n=1Nγ(znk)πk+λ=0πk=n=1Nγ(znk)λ由于k=1Kπk=1 则k=1Kn=1Nγ(znk)λ=1,λ=N(1.5),πk=n=1Nγ(znk)N

即每个分模型k的混合系数是属于k的样本的平均后验概率,由此运用EM算法能大大简化高斯混合模型的参数估计过程,在中间步只需计算γ(znk)就行了。



高斯混合模型的算法流程

输入: 样本集 X={x1,x2xn}

输出: 高斯混合模型参数 π,μ,Σ

  1. 初始化各个分模型参数 πk,μk,Σk
  2. E步: 依照当前模型参数,计算观测数据xn属于分模型k的后验概率:

γ(znk)=p(znk=1|xn)=πkN(xn|μk,Σk)j=1KπjN(xn|μj,Σj)


3. M步: 根据 γ(znk)计算新一轮参数: μknew=n=1Nγ(znk)xnn=1Nγ(znk) Σknew=n=1Nγ(znk)(xnμknew)(xnμknew)Tn=1Nγ(znk) πknew=n=1Nγ(znk)N
4. 重复2. 和3. 步直至收敛。



最后总结一下高斯混合模型的优缺点:

优点

  1. 相比于K-means更具一般性,能形成各种不同大小和形状的簇。K-means可视为高斯混合聚类中每个样本仅指派给一个混合成分的特例,且各混合成分协方差相等,均为对角矩阵σ2I
  2. 仅使用少量的参数就能较好地描述数据的特性。

缺点

  1. 高斯混合模型的计算量较大收敛慢。因此常先对样本集跑k-means,依据得到的各个簇来定高斯混合模型的初始值。其中质心即为均值向量,协方差矩阵为每个簇中样本的协方差矩阵,混合系数为每个簇中样本占总体样本的比例。
  2. 分模型数量难以预先选择,但可以通过划分验证集来比较。
  3. 对异常点敏感。
  4. 数据量少时效果不好。




EM算法在半监督学习上的应用

在现实的分类问题中常遇到数据集中只有少量样本是带有标签的,而大部分样本的标签缺失。如果直接将无标签的样本丢弃,则会容易造成大量的有用信息被浪费。而如果使用EM算法,将缺失标签视为隐变量,很多时候能达到利用所有数据进行训练的目的。流程如下:

  1. 仅用带标签样本训练学习器,得到初始参数θ
  2. E步: 利用训练好的学习器预测无标签样本,将其分类到概率最大的类别,这样所有样本就都有标签了。
  3. M步: 用所有样本重新训练学习器,得到参数θt
  4. 重复2. 和 3. 步直至收敛,得到最终模型。




/

posted @   massquantity  阅读(9826)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示