LOADING

加载过慢请开启缓存 浏览器默认开启

CS229-7 K-means and EM / Gaussian Mixture Models

本节主要讲 K-means 聚类、Gaussian Mixture Models。

1. K-means Clustering

1.1 问题设定

K-means 是一个 unsupervised learning 算法。监督学习中有 {(x(i),y(i))}i=1m,但聚类问题只有 {x(i)}i=1m,没有标签 y(i)

目标是把数据分成 k 个 cluster,使得同一类内部样本尽量相似,不同类之间尽量分开。

1.2 核心变量

K-means 中有两个核心变量:

  • Cluster assignmentc(i){1,2,,k},表示第 i 个样本属于哪个 cluster。
  • Cluster centroidsμ1,μ2,,μk,其中 μjRd 表示第 j 个 cluster 的中心。

1.3 算法流程

初始化 μ1,μ2,,μk,然后重复两步:

第一步:Cluster assignment step

对每个样本 x(i),找到离它最近的中心:

c(i):=argminjx(i)μj2

第二步:Move centroid step

对每个 cluster,重新计算它的中心:

μj:=i=1m1{c(i)=j}x(i)i=1m1{c(i)=j}

即每个 cluster 的中心更新为该 cluster 内所有点的平均值。

1.4 K-means 在优化什么?

K-means 实际上是在最小化 distortion function

J(c,μ)=i=1mx(i)μc(i)2

其中 μc(i) 表示样本 x(i) 所属 cluster 的中心。直觉:每个点都希望离自己所属 cluster 的中心尽量近。

1.5 为什么每一步都会让目标函数下降?

K-means 可以看成一种 coordinate descent,交替优化 cμ

  • Assignment step:固定 μ1,,μk,对每个样本选择最近的中心——在固定中心的情况下让 J(c,μ) 关于 c 最小化,J 不会增加。
  • Centroid step:固定 c(i),把每个 cluster center 更新为该 cluster 内样本的均值——在固定 c 的情况下让 J(c,μ) 关于 μ 最小化,J 也不会增加。

因此每轮迭代 J(c,μ) 单调不增。

1.6 为什么 centroid 是均值?

固定 cluster j,我们要最小化 i:c(i)=jx(i)μj2。对 μj 求导:

μji:c(i)=jx(i)μj2=2i:c(i)=j(μjx(i))

令导数为 0:

i:c(i)=j(μjx(i))=0njμj=i:c(i)=jx(i)μj=1nji:c(i)=jx(i)

这就是该 cluster 的均值。

1.7 K-means 的特点

优点:简单、速度快、容易实现、适合大规模数据。

缺点

  • 需要预先指定 k
  • 对初始化敏感,容易陷入 local optimum
  • 只能得到 hard assignment(每个样本只能属于一个 cluster,没有不确定性)
  • 更适合近似球形、大小相近的 cluster
  • 对 outlier 敏感

2. Gaussian Mixture Models(GMM)

K-means 的问题是只做硬分配,没有概率解释。GMM 则是一个概率模型,假设数据由多个 Gaussian component 混合生成。

2.1 生成过程

假设有 k 个 Gaussian component。对每个样本:

  1. 先选择它来自哪个 component:z(i)Multinomial(ϕ),其中 z(i){1,2,,k} 是 latent variable。
  2. 根据选中的 component 生成样本:x(i)z(i)=jN(μj,Σj)

模型可写为 p(x(i),z(i))=p(x(i)z(i))p(z(i))

2.2 参数

GMM 的参数是 ϕ,μ,Σ

  • ϕj=P(z=j):第 j 个 component 的先验概率(mixture weight)。
  • μj:第 j 个 Gaussian component 的均值。
  • Σj:第 j 个 Gaussian component 的协方差矩阵。

2.3 为什么直接最大似然不好做?

如果我们能观察到 z(i),参数估计会很简单。但 z(i) 是隐藏变量,likelihood 为:

(ϕ,μ,Σ)=i=1mlogp(x(i);ϕ,μ,Σ)=i=1mlogj=1kϕjN(x(i);μj,Σj)

难点在于 log 这个结构——如果是 log 通常好处理,但 log 让求导和解析解变得困难。EM algorithm 就是为这种 latent variable 问题设计的。

3. EM Algorithm

EM(Expectation-Maximization)交替做两步:

  • E-step:估计隐藏变量 z 的后验分布,即每个点属于每个 component 的概率。
  • M-step:把这些概率当成 soft weights,重新估计模型参数。

3.1 E-step:计算 Responsibilities

定义 responsibility:

wj(i)=P(z(i)=jx(i);ϕ,μ,Σ)

它表示第 j 个 Gaussian component 对样本 x(i) "负责"的程度。根据 Bayes rule:

wj(i)=P(x(i)z(i)=j;μj,Σj)P(z(i)=j;ϕ)=1kP(x(i)z(i)=;μ,Σ)P(z(i)=;ϕ)=ϕjN(x(i);μj,Σj)=1kϕN(x(i);μ,Σ)

并且 j=1kwj(i)=1

3.2 M-step:更新参数

wj(i) 当作样本 i 属于 cluster j 的 soft assignment,更新参数:

ϕj=1mi=1mwj(i)μj=i=1mwj(i)x(i)i=1mwj(i)Σj=i=1mwj(i)(x(i)μj)(x(i)μj)Ti=1mwj(i)

这三个公式是 note7b 最核心的公式。

4. EM 和 K-means 的关系

两者结构非常相似,核心区别在于是 hard 还是 soft assignment:

  • K-meansc(i)=argminjx(i)μj2,每个样本只属于一个 cluster(hard)。
  • GMM/EMwj(i)=P(z(i)=jx(i)),一个点可以以不同概率属于多个 component(soft)。例如 w1(i)=0.7,w2(i)=0.3 表示样本更可能来自 component 1,但也有一定概率来自 component 2。

可以说 K-means 是 GMM 在 Σj0(或协方差趋于 ϵIϵ0)时的极限情况。

5. EM 的一般形式

对于有 hidden variables 的模型,EM 可以写成统一框架:

E-step:计算后验 Qi(z(i))=P(z(i)x(i);θ)

M-step:更新 θ:=argmaxθi=1mz(i)Qi(z(i))logp(x(i),z(i);θ)

(分母 Qi(z(i))θ 无关,故可从优化目标中省略。)

补充:关于 EM 为什么能保证 likelihood 单调不降的详细证明——Jensen’s inequality 构造 lower bound、E-step 如何让 bound 取等、M-step 如何最大化 bound、以及核心不等式链 (θnew)L(Q,θnew)L(Q,θold)=(θold)——见 CS229-8 EM Algorithm

6. 必须掌握的公式

K-means assignment

c(i):=argminjx(i)μj2

K-means centroid update

μj:=i=1m1{c(i)=j}x(i)i=1m1{c(i)=j}

Distortion function

J(c,μ)=i=1mx(i)μc(i)2

GMM model

z(i)Multinomial(ϕ),x(i)z(i)=jN(μj,Σj)

Responsibility

wj(i)=ϕjN(x(i);μj,Σj)=1kϕN(x(i);μ,Σ)

EM update for GMM

ϕj=1mi=1mwj(i),μj=i=1mwj(i)x(i)i=1mwj(i),Σj=i=1mwj(i)(x(i)μj)(x(i)μj)Ti=1mwj(i)