MeanShift、K-Means与GMM迭代

MeanShift聚类

又称均值漂移算法,首先需要一个迭代半径r,相似阈值T

对每个数据,作为一个新类,从其位置半径r内,选择满足相似条件的数据,放到一个表中。

计算表内数据的位置均值,数据均值,将新的位置和均值作为该类的特征,重新计算满足相似条件的数据,不断迭代直到收敛。

相当于数据有两个相似条件,一个位置相似条件r,一个数据相似条件T

K-Means聚类

该方法被称为k均值,首先需要选定k个聚类中心。

对每个数据,计算出最近的聚类中心C,将其放入C类的数据列表中

拿到每个聚类中心列表中的数据,求取数据均值,将该值作为新的数据中心。不断迭代直到中心不再变化

若将数据分为位置数据特征值,它和meanshift就很像了。

不过区别在于k-means中,类的数量是手动确定的,而mean shift的类数量是迭代自动确定的,并且最坏情况可能是每个数据都是一个类。

GMM聚类

原理

基于高斯函数的算法,通过混合单个或多个高斯函数,计算对应数据的概率中哪个分类的概率最高的,则属于哪个类别。
在这里插入图片描述
首先,假设数据中有k个高斯分布,数据的实际分布可用其线性组合描述:
p ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) p(\boldsymbol{x}) = \sum_{k=1}^K\pi_k \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) p(x)=k=1KπkN(xμk,Σk)

其中 N ( x ∣ μ k , Σ k ) \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) N(xμk,Σk)称为混合模型中的第k个分量。 π k \pi_k πk 是混合系数(或者叫权重、选中该分量的概率),且满足:

  1. ∑ k = 1 K π k = 1 \sum_{k=1}^K\pi_k = 1 k=1Kπk=1
  2. 0 ≤ π k ≤ 1 0\leq \pi_k \leq 1 0πk1

如果要从 GMM 的分布中随机地取一个点的话,实际上可以分为两步:

  1. 首先随机地在这 K 个分量之中选一个,每个分量被选中的概率实际上就是它的系数 π k \pi_k πk

  2. 选中之后,再单独地考虑从这个分量的高斯分布中选取一个点就可以了。

通常我们并不能直接得到高斯混合模型的参数,而是观察到了一系列 数据点,给出一个类别的数量K后,希望求得最佳的K个高斯分模型。

因此,高斯混合模型的计算,便成了最佳的均值μ,方差Σ、权重π的寻找,这类问题通常通过 最大似然估计来求解。遗憾的是,此问题中直接使用最大似然估计,得到的是一 个复杂的非凸函数,目标函数是和的对数,难以展开和对其求偏导。在这种情况下,可以用EM算法。

EM算法是在最大化目标函数时,先固定一个变量使整体函数变为凸优化函数,求导得到最值,然后利用最优参数更新被固定的变量,进入下一个循环。

EM参数估计

具体到高 斯混合模型的求解,EM算法的迭代过程如下:

首先,初始随机选择各参数的值。然后,重复下述两步,直到收敛。
E步骤: 根据当前的参数,计算每个点由某个分模型生成的概率。
M步骤: 使用E步骤估计出的概率,来改进每个分模型的均值,方差和权重。

对于GMM中的每个分量,有三个参数:选中概率 π k \pi_k πk,分布均值 μ k {\mu}_k μk,分布标准差 Σ k {\Sigma}_k Σk。如果我们从分布选取一个点,怎么知道这个点是来自哪个分量呢?或者说如何确定 π k \pi_k πk?EM算法就可以解决GMM参数估计的问题。

通过EM算法,我们可以迭代计算出GMM中的参数: ( π k , x k , Σ k ) (\pi_k, \boldsymbol{x}_k, \boldsymbol{\Sigma}_k) (πk,xk,Σk)

首先我们可以引入一个新的随机变量 z ∈ { z 1 , z 2 , . . . z k } \boldsymbol{z}∈\{z_1,z_2,...z_k\} z{z1,z2,...zk}

p ( z k ) = π k p(z_k)=\pi_k p(zk)=πk,表示第k个分量被选中的概率,由于是每次只能有一个分量被选中,即:

  1. ∑ k z k = Ω \sum_k{z_k}=\Omega kzk=Ω
  2. p ( z ) = ∑ k p ( z k ) = ∑ k π k = 1 p(z)= \sum_k{p(z_k)}=\sum_k{\pi_k}=1 p(z)=kp(zk)=kπk=1
  3. p ( x ∣ z k ) = N ( x ∣ μ k , Σ k ) p(x|z_k)= \mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k) p(xzk)=N(xμk,Σk)
  4. p ( x ) = ∑ k p ( x ) p ( x ∣ z k ) p(x)= \sum_kp(x)p(x|z_k) p(x)=kp(x)p(xzk)

根据贝叶斯定理, p ( z ) p(z) p(z)是先验概率, p ( x ∣ z ) p(x∣z) p(xz)是似然概率, p ( z ∣ x ) p(z∣x) p(zx)是后验概率。设 x = { x 1 , x 2 , . . . x N } \boldsymbol{x}=\{x_1,x_2,...x_N\} x={x1,x2,...xN},我们有

  1. p ( z ∣ x ) = p ( x ∣ z ) p ( z ) p(z∣x)=p(x∣z)p(z) p(zx)=p(xz)p(z)
  2. μ k = 1 N k ∑ n p ( z ∣ x n ) p ( x n ) μ_k=\frac{1}{N_k}\sum_np(z∣x_n)p(x_n) μk=Nk1np(zxn)p(xn)

EM算法

  1. 定义分量数目 k k k,对每个分量设置 π k \pi_k πk μ k μ_k μk Σ k \boldsymbol{\Sigma}_ k Σk 的初始值,然后计算对数似然函数。

l n    p ( x ∣ π , μ , Σ ) = ∑ n   l n ∑ k π k N ( x n ∣ μ k , Σ k ) ln\ \ p(x|\pi,μ,\boldsymbol{\Sigma})= \sum_n\ ln\sum_k\pi_kN(x_n∣μ_k,\boldsymbol{\Sigma}_k) ln  p(xπ,μ,Σ)=n lnkπkN(xnμk,Σk)

  1. E 阶段: 根据当前的 π k \pi_k πk μ k μ_k μk Σ k \boldsymbol{\Sigma}_ k Σk 计算后验概率 γ ( z n k ) γ(z_{nk}) γ(znk)

γ ( z n k ) = π k N ( x n ∣ μ n , Σ n ) ∑ j = 1 k π j N ( x n ∣ μ j , Σ j ) γ(z_{nk})=\frac{π_kN(x_n∣μ_n,\boldsymbol{\Sigma}_n)} {∑_{j=1}^kπ_jN(x_n∣μ_j,\boldsymbol{\Sigma}_ j)} γ(znk)=j=1kπjN(xnμj,Σj)πkN(xnμn,Σn)

  1. M阶段:根据E阶段中计算的 γ ( z n k ) \gamma(z_{nk}) γ(znk)再计算新的 π k \pi_k πk μ k μ_k μk Σ k \boldsymbol{\Sigma}_ k Σk

N k = ∑ n γ ( z n k ) N_k=\sum_n\gamma(z_{nk}) Nk=nγ(znk) ,则:

  1. π k = N k N \pi_k=\frac{N_k}{N} πk=NNk
  2. μ k = 1 N k ∑ n γ ( z n k ) x n μ_k=\frac{1}{N_k}\sum_n\gamma(z_{nk}) x_n μk=Nk1nγ(znk)xn
  3. Σ k = 1 N k ∑ n γ ( z n k ) ( x n − μ k ) ( x n − μ k ) T \boldsymbol{\Sigma}_ k=\frac{1}{N_k}\sum_n\gamma(z_{nk})(x_n-μ_k)(x_n-μ_k)^T Σk=Nk1nγ(znk)(xnμk)(xnμk)T
  1. 重新计算步骤1中的对数似然函数

  2. 检查参数是否收敛或对数似然函数是否收敛,若不收敛,则返回第2步。

其他参考

EM算法
详解EM算法与混合高斯模型
高斯混合模型(GMM)及其EM算法的理解
更多聚类算法参考我另一篇博客:无监督算法

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值