GMM聚类算法(公式证明分析)

2024-04-02 12:32

本文主要是介绍GMM聚类算法(公式证明分析),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

高斯分布

p ( x ∣ μ , σ 2 ) = 1 2 π σ e x p ( − ( x − μ ) 2 2 σ 2 ) p(x|\mu, \sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2}) p(xμ,σ2)=2π σ1exp(2σ2(xμ)2)

d维多元高斯分布
p ( x ∣ μ , ∑ ) = 1 2 π d 2 ∣ ∑ ∣ 1 2 e x p ( − 1 2 ( x − μ ) ∑ ( x − μ ) ) p(x|\mu, \sum)=\frac{1}{{2\pi}^{\frac{d}{2}}|\sum|^{\frac{1}{2}}}exp(-\frac{1}{2}\frac{(x-\mu)}{\sum(x-\mu)}) p(xμ,)=2π2d211exp(21(xμ)(xμ))

对d维做极大似然估计:

给定数据 D = x 1 , . . . , x N D={x_1,..., x_N} D=x1,...,xN似然是 p ( D ∣ μ , ∑ ) = ∏ n = 1 N p ( x n ∣ μ , ∑ ) p(D|\mu,\sum) = \prod_{n=1}^{N}p(x_n | \mu, \sum) p(Dμ,)=n=1Np(xnμ,)

MLE 估计:
( μ M L , ∑ M L ) = a r g m a x μ , ∑ l o g p ( D ∣ μ , ∑ ) (\mu_{ML},\sum{ML}) = \underset{\mu, \sum}{argmax}logp(D|\mu,\sum) (μML,ML)=μ,argmaxlogp(Dμ,),
μ M L = 1 N ∑ n = 1 N x n \mu_{ML} = \frac{1}{N}\sum_{n=1}^{N}x_n μML=N1n=1Nxn
( ∑ M L ) 2 = 1 N ∑ n = 1 N ( x n − μ M L ) ( x n − μ M L ) T (\sum ML)^2 = \frac{1}{N}\sum_{n=1}^{N}(x_n-\mu_{ML})(x_n-\mu_{ML})^T (ML)2=N1n=1N(xnμML)(xnμML)T

为什么使用高斯分布

如何p(x,y)联合分布是高斯分布,那么p(x)是高斯分布,同样p(y)也是高斯分布。

混合高斯分布

单个高斯分布只有一个mode,单个高斯分布不能模拟多个mode的数据。
使用多个高斯分布,就可以对数据进行聚类。

单峰的高斯分布作为basis 分布,多个高斯分布使用线性叠加(这种思路类似boost的想法),即混合高斯。
p ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , σ k 2 ) p(x) = \sum_{k=1}^{K}\pi_k\mathbb{N}(x|\mu_k, \sigma^2_k) p(x)=k=1KπkN(xμk,σk2)
π k \pi_k πk有约束, ∑ π k = 1 \sum\pi_k=1 πk=1

学习混合高斯分布

Log -likehood

log似然:
£ ( μ , ∑ ) = l o g p ( D ∣ π , μ , ∑ ) = ∑ n = 1 N l o g ( ∑ k = 1 K π k N ( x ∣ μ k , ∑ k ) \pounds(\mu, \sum) = log p(D|\pi,\mu,\sum) = \sum_{n=1}^{N}log(\sum_{k=1}^K \pi_k\mathbb{N}({x|\mu_k,\sum _k}) £(μ,)=logp(Dπ,μ,)=n=1Nlog(k=1KπkN(xμk,k)

但是MLE是复杂的,对于单个高斯分布,MLE是简单的。

简单的分析:

  • ∂ £ ∂ μ k = 0 \frac{\partial \pounds}{\partial \mu_k} = 0 μk£=0得到
    ∑ n = 1 N = π k N ( x n ∣ μ k , ∑ k ) ∑ j π j N ( x n ∣ μ k , ∑ k ) ( ∑ k ( x n − μ k ) ) − 1 \sum_{n=1}^{N} = \frac{\pi_k\mathbb{N}({x_n|\mu_k,\sum _k})}{\sum_j\pi_j\mathbb{N}({x_n|\mu_k,\sum _k})}(\sum_k(x_n-\mu_k))^{-1} n=1N=jπjN(xnμk,k)πkN(xnμk,k)(k(xnμk))1

γ ( z n k ) = π k N ( x n ∣ μ k , ∑ k ) ∑ j π j N ( x n ∣ μ k , ∑ k ) \gamma (z_{nk}) = \frac{\pi_k\mathbb{N}({x_n|\mu_k,\sum _k})}{\sum_j\pi_j\mathbb{N}({x_n|\mu_k,\sum _k})} γ(znk)=jπjN(xnμk,k)πkN(xnμk,k)

μ k = 1 N k ∑ n = 1 N γ ( z n k ) x n \mu_k = \frac{1}{N_k}\sum_{n=1}^{N}\gamma (z_{nk})x_n μk=Nk1n=1Nγ(znk)xn,

N k = ∑ n = 1 N γ ( z n k ) N_k= \sum_{n=1}^{N}\gamma (z_{nk}) Nk=n=1Nγ(znk) , N k N_k Nk是所有数据拟合到k分布上面的权重和。

这里的 μ k \mu_k μk也是 1 N k \frac{1}{N_k} Nk1求均。

  • ∂ £ ∂ ∑ k = 0 \frac{\partial \pounds}{\partial \sum_k} = 0 k£=0得到

∑ k = 1 N k ∑ n = 1 N γ ( z n k ) ( x n − μ k ) ( x n − μ k ) T \sum_k = \frac{1}{N_k}\sum_{n=1}^N \gamma(z_{nk})(x_n-\mu_k)(x_n - \mu_k)^T k=Nk1n=1Nγ(znk)(xnμk)(xnμk)T

  • ∂ L ∂ π k = 0 \frac{\partial L}{\partial \pi_k} =0 πkL=0

由于对 π k \pi_k πk有约束, ∑ π k = 1 \sum\pi_k=1 πk=1,使用拉格朗日求 π k \pi_k πk
L = £ ( μ , ∑ ) + λ ( ∑ k = 1 K π k − 1 ) L = \pounds(\mu, \sum)+\lambda(\sum_{k=1}^K\pi_k -1) L=£(μ,)+λ(k=1Kπk1)

∑ n = 1 N N ( x n ∣ μ k , ∑ k ) ∑ j π j N ( x n ∣ μ k , ∑ k ) + λ = 0 \sum_{n=1}^N \frac{\mathbb{N}({x_n|\mu_k,\sum _k})}{\sum_j\pi_j\mathbb{N}({x_n|\mu_k,\sum _k})} + \lambda=0 n=1NjπjN(xnμk,k)N(xnμk,k)+λ=0

π k = N k N \pi_k=\frac{N_k}{N} πk=NNk

综上结果

π k = N k N \pi_k=\frac{N_k}{N} πk=NNk
μ k = 1 N k ∑ n = 1 N γ ( z n k ) x n \mu_k = \frac{1}{N_k}\sum_{n=1}^{N}\gamma (z_{nk})x_n μk=Nk1n=1Nγ(znk)xn
∑ k = 1 N k ∑ n = 1 N γ ( z n k ) ( x n − μ k ) ( x n − μ k ) T \sum_k = \frac{1}{N_k}\sum_{n=1}^N \gamma(z_{nk})(x_n-\mu_k)(x_n - \mu_k)^T k=Nk1n=1Nγ(znk)(xnμk)(xnμk)T

γ ( z n k ) = π k N ( x n ∣ μ k , ∑ k ) ∑ j π j N ( x n ∣ μ k , ∑ k ) \gamma (z_{nk}) = \frac{\pi_k\mathbb{N}({x_n|\mu_k,\sum _k})}{\sum_j\pi_j\mathbb{N}({x_n|\mu_k,\sum _k})} γ(znk)=jπjN(xnμk,k)πkN(xnμk,k)

关键是求,但是 γ ( z n k ) \gamma (z_{nk}) γ(znk) 是未知的。

EM算法引入

解决上面鸡生蛋,蛋生鸡的 γ ( z n k ) \gamma (z_{nk}) γ(znk)求解。
E-step

γ ( z n k ) = π k N ( x n ∣ μ k , ∑ k ) ∑ j π j N ( x n ∣ μ k , ∑ k ) \gamma (z_{nk}) = \frac{\pi_k\mathbb{N}({x_n|\mu_k,\sum _k})}{\sum_j\pi_j\mathbb{N}({x_n|\mu_k,\sum _k})} γ(znk)=jπjN(xnμk,k)πkN(xnμk,k), γ \gamma γ实际上是后验分布,假设第n个样本拟合到k分布上面 p ( z n k = 1 ∣ x n , μ , ∑ ) p(z_{nk}=1 | x_n, \mu, \sum) p(znk=1xn,μ,)

M-step

π k = N k N \pi_k=\frac{N_k}{N} πk=NNk
μ k = 1 N k ∑ n = 1 N γ ( z n k ) x n \mu_k = \frac{1}{N_k}\sum_{n=1}^{N}\gamma (z_{nk})x_n μk=Nk1n=1Nγ(znk)xn
∑ k = 1 N k ∑ n = 1 N γ ( z n k ) ( x n − μ k ) ( x n − μ k ) T \sum_k = \frac{1}{N_k}\sum_{n=1}^N \gamma(z_{nk})(x_n-\mu_k)(x_n - \mu_k)^T k=Nk1n=1Nγ(znk)(xnμk)(xnμk)T
不断的迭代E步和M步进行计算,这里初始点的选取会影响混合高斯聚类的结果。

理解高斯分布

对于 p ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , ∑ k ) p(x) = \sum_{k=1}^{K}\pi_k \mathbb{N}(x|\mu_k, \sum_k) p(x)=k=1KπkN(xμk,k)引入选择变量z
z = ( 0 1 0 ) z = \begin{pmatrix} 0\\ 1\\ 0 \end{pmatrix} z=010

p ( x , z ) = ∑ k = 1 K π k z k N ( x ∣ μ k , ∑ k ) z k p(x,z) = \sum_{k=1}^{K}\pi_k^{z_k} \mathbb{N}(x|\mu_k, \sum_k)^{z_k} p(x,z)=k=1KπkzkN(xμk,k)zk

  • 重新定义log-likehood
    l o g p ( D ∣ Θ ) = ∑ n = 1 N l o g ( ∑ z n p ( x n , z n ) ) logp(D|\Theta )=\sum_{n=1}^Nlog(\sum_{z_n}p(x_n, z_n)) logp(DΘ)=n=1Nlog(znp(xn,zn))

这里的 l o g ∑ log\sum log是很难求导的,所以我们使用Jensen不等式近似
l o g x 1 + x 2 2 ≥ l o g x 1 + l o g x 2 2 log\frac{x_1+x_2}{2} \geq \frac{logx_1 + logx_2}{2} log2x1+x22logx1+logx2 或者使用期望的表示方法 l o g E p ( x ) [ x ] ≥ E p ( x ) [ l o g x ] logE_{p(x)}[x] \geq E_{p(x)}[logx] logEp(x)[x]Ep(x)[logx]
引入 q ( z n ) q(z_n) q(zn)(在机器学习里面称为 Evidence lower bound):
l o g p ( D ∣ Θ ) = ∑ n = 1 N l o g ( ∑ z n q ( z n ) p ( x n , z n ) q ( z n ) ) ≥ ∑ n = 1 N ∑ z n q ( z n ) l o g ( p ( x n , z n ) q ( z n ) ) ≅ £ ( θ , q ( Z ) ) logp(D|\Theta )=\sum_{n=1}^Nlog(\sum_{z_n}q(z_n)\frac{p(x_n, z_n)}{q(z_n)}) \geq \sum_{n=1}^N\sum_{z_n}q(z_n)log(\frac{p(x_n,z_n)}{q(z_n)}) \cong \pounds(\theta , q(Z)) logp(DΘ)=n=1Nlog(znq(zn)q(zn)p(xn,zn))n=1Nznq(zn)log(q(zn)p(xn,zn))£(θ,q(Z))
q 一般意义上称为变分分布(变分的方法)。
但是lower bound 是可紧可松的,如何约定GAP
£ ( θ , q ( Z ) ) = ∑ n = 1 N { ∑ z n q ( z n ) l o g p ( x n , z n ) − ∑ z n q ( z n ) l o g q ( z n ) } = ∑ n = 1 N { ∑ z n q ( z n ) l o g ( p ( x n , z n ) p ( x n ) ) + l o g p ( x n ) − ∑ z n q ( z n ) l o g q ( z n ) } = l o g p ( D ∣ θ ) + ∑ n = 1 N { ∑ z n q ( z n ) l o g p ( z n ∣ x n ) − ∑ z n q ( z n ) l o g q ( z n ) } = l o g p ( D ∣ θ ) − K L ( q ( Z ) ∣ ∣ p ( Z ∣ D ) ) \pounds(\theta , q(Z))=\sum_{n=1}^N\left \{\sum_{z_n}q(z_n)logp(x_n,z_n) - \sum_{z_n}q(z_n)logq(z_n)\right \}\\ = \sum_{n=1}^N \left \{ \sum_{z_n}q(z_n)log(\frac{p(x_n,z_n)}{p(x_n)}) +logp(x_n) - \sum_{z_n}q(z_n)logq(z_n) \right \}\\ =logp(D|\theta) + \sum_{n=1}^N \left \{ \sum_{z_n}q(z_n)logp(z_n|x_n) -\sum_{z_n}q(z_n)logq(z_n) \right \}\\ =logp(D|\theta) - KL(q(Z)||p(Z|D)) £(θ,q(Z))=n=1N{znq(zn)logp(xn,zn)znq(zn)logq(zn)}=n=1N{znq(zn)log(p(xn)p(xn,zn))+logp(xn)znq(zn)logq(zn)}=logp(Dθ)+n=1N{znq(zn)logp(znxn)znq(zn)logq(zn)}=logp(Dθ)KL(q(Z)p(ZD))
上式中 l o g p ( D ∣ θ ) = ∑ n = 1 N l o g p ( x n ) logp(D|\theta) = \sum_{n=1}^Nlogp(x_n) logp(Dθ)=n=1Nlogp(xn)

所以lower bound的GAP是一个KL散度。
£ ( θ , q ( Z ) ) \pounds(\theta , q(Z)) £(θ,q(Z)) l o g p ( D ∣ θ ) logp(D|\theta) logp(Dθ)之间的GAP是KL散度,
l o g p ( D ∣ θ ) − £ ( θ , q ( Z ) ) = K L ( q ( Z ) ∣ ∣ p ( Z ∣ D ) ) logp(D|\theta) - \pounds(\theta , q(Z)) = KL(q(Z)||p(Z|D)) logp(Dθ)£(θ,q(Z))=KL(q(Z)p(ZD))
要使得GAP最小,则 K L ( q ( Z ) ∣ ∣ p ( Z ∣ D ) ) = 0 KL(q(Z)||p(Z|D)) =0 KL(q(Z)p(ZD))=0

  • EM算法
    最大化lower bound或者最小化GAP

E 步:
Maximize over q(Z) -> ∂ £ ∂ q = 0 \frac{\partial \pounds}{\partial q} =0 q£=0
其中 q ( z n ) = p ( z n ∣ x n ) q(z_n) = p(z_n|xn) q(zn)=p(znxn)等价与前面的 γ ( z n k ) \gamma(z_{nk}) γ(znk)

M 步:
Maximize over θ \theta θ -> ∂ £ ∂ θ = 0 \frac{\partial \pounds}{\partial \theta} =0 θ£=0

这篇关于GMM聚类算法(公式证明分析)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869986

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 class Solution {public int numTrees(int n) {int[] dp = new int

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者