【机器学习】聚类算法——高斯混合聚类(理论+图解)

简介: 【机器学习】聚类算法——高斯混合聚类(理论+图解)

简 介:下面是我在学习时候的记录并加上自己的理解。本文意在记录自己近期学习过程中的所学所得,如有错误,欢迎大家指正。

 

关键词:高斯混合聚类、机器学习、极大似然估计

在讲高斯混合聚类算法之前先补充以下相关的数学知识,由于篇幅原因,只是简单叙述,如需详细内容,请查阅相关资料

一、正态分布

在概率论中我们学过某些数值在一定情况下是符合正态分布的。

我们经常见到某某数据符合正态分布,那么它到底是什么意思呢?

正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。

若随机变量X服从一个数学期望为μ、方差为σ2的正态分布,记为N(μ,σ2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。

正态分布是许多统计方法的理论基础。检验、方差分析、相关和回归分析等多种统计方法均要求分析的指标服从正态分布。许多统计方法虽然不要求分析指标服从正态分布,但相应的统计量在大样本时近似正态分布,因而大样本时这些统计推断方法也是以正态分布为理论基础的。

为什么很多假设都是使用正态分布呢?为什么不适用像泊松分布、指数分布这些分布呢?

  1. 根据中心极限定律,如果我们的样本足够多的情况下,我们的数据是符合正态分布的
  2. 正态分布是属于一种正态分布,具有良好的数学性质,便于建模

1.一元正态分布

一元正态分布的概率密度为:

f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}f(x)=2πσ1e2σ2(xμ)2

我们记作 N ( μ , σ 2 ) N(\mu,\sigma^2)N(μ,σ2) ,其中 μ \muμ 为数据的均值,而 σ 2 \sigma^2σ2 为样本的方差,f(x)为概率密度,进行积分后值为1。

2.二元正态分布

二元正态分布的概率密度为:

f ( x 1 , x 2 ) = 1 2 π σ 1 σ 2 1 − ρ 2 e − 1 2 ( 1 − ρ 2 ) 2 { ( x 1 − μ 1 ) 2 σ 1 2 − 2 ρ ( x 1 − μ 1 ) ( x 2 − μ 2 ) σ 1 σ 2 + ( x 2 − μ 2 ) 2 σ 2 2 } f(x_1,x_2)=\frac{1}{2\pi\sigma_1\sigma_2\sqrt{1-\rho^2}}e^{\frac{-1}{2(1-\rho^2)^2}\{\frac{(x_1-\mu_1)^2}{\sigma_1^2}-2\rho\frac{(x_1-\mu_1)(x_2-\mu_2)}{\sigma_1\sigma_2}+\frac{(x_2-\mu_2)^2}{\sigma_2^2}\}}f(x1,x2)=2πσ1σ21ρ21e2(1ρ2)21{σ12(x1μ1)22ρσ1σ2(x1μ1)(x2μ2)+σ22(x2μ2)2}

常记作 N ( μ 1 , μ 2 , σ 1 2 , σ 2 2 , ρ ) N(\mu_1,\mu_2,\sigma_1^2,\sigma_2^2,\rho)N(μ1,μ2,σ12,σ22,ρ) ,分别对应着两个随机变量的均值和方差,以及两个随机变量之间的相关系数。

3.多元正态分布

多元正态分布的概率密度为:

f ( X ) = 1 ( 2 π ) n 2 ∣ ∑ ∣ 1 2 e − 1 2 ( X − μ ) T ∑ − 1 ( X − μ ) f(X)=\frac{1}{(2\pi)^{\frac{n}{2}}|\sum|^{\frac{1}{2}}}e^{-\frac{1}{2}(X-\mu)^T\sum^-1(X-\mu)}f(X)=(2π)2n211e21(Xμ)T1(Xμ)

上面式子中的 μ \muμ 为n维均值向量,形状为 (n,1),∑ \sum 为随机变量X的协方差矩阵。

该式子为一元正态分布的推广公式,涉及到多维变量,用矩阵进行表示。

4.概率密度函数

我们发现上面的三个式子中存在两种变量,一种是数据X,另外一种就是参数 μ \muμσ \sigmaσ ,也就是分布的参数。对于概率来说,我们是已知模型分布和参数,然后带入数据去求概率,而概率统计是已知分布,但是不知道分布符合的参数,然后基于样本数据X去估计分布的参数,使用的方法就是极大似然估计。

5.极大似然估计

什么是极大似然估计?

上面我们说有些情况,我们只是知道数据符合的分布,但是不知道具体符合的参数为多少,就是我们只知道某某数据符合正态分布,但是正态分布的均值和方差我们是不知道的,所以要根据已有样本进行估计,其实就是将所有样本数据带入概率密度公式,会获得每个数据的概率,然后将各概率相乘,最终优化就是使该式子达到最大,为什么是最大?因为我们的数据符合该分布,也就是要我们的样本数据大概率的出现在该分布中,然后求出使概率乘积最大的参数。

二、高斯混合聚类

说了这么久,终于到了我们的主题,就是我们的高斯混合聚类。

它是一种基于概率分布的聚类算法,它是首先假设每个簇符合不同的高斯分布,也就是多元正态分布,说白了就是每个簇内的数据会符合一定的数据分布。

它的大致流程就是首先假设k个高斯分布,然后判断每个样本符合各个分布的概率,将该样本划为概率最大的那个分布簇内,然后一轮后,进行更新我们的高斯分布参数,就会用到我们的极大似然估计,然后再基于新的分布去计算符合各个分布的概率,不断迭代更新,直至模型收敛达到局部最优解,常见的算法就是EM算法,它会同时估计出每个样本所属的簇类别以及每个簇的概率分布的参数。

概率密度常记为:

f ( X ) = p ( x ∣ μ i , ∑ ) f(X)=p(x|\mu_i,\sum)f(X)=p(xμi,)

意思就是在参数为一定值的情况下符合的分布,对应相应的概率密度函数。

有了上述的铺垫之后,我们就可以定义聚类需要的高斯混合分布函数:

p ( X ) = ∑ i = 1 k α i p ( X ∣ μ i , ∑ i ) p(X)=\sum_{i=1}^k\alpha_ip(X|\mu_i,\sum_i)p(X)=i=1kαip(Xμi,i)

其中 α \alphaα 就代表我们选择每个簇的概率,那么它的和肯定是等于1的,∑ i = 1 k α i = 1 \sum_{i=1}^k\alpha_i=1i=1kαi=1

我们现在想计算对于某一个数据符合哪个簇的概率,如果对应哪个簇的概率大,那么该数据就划分为该簇内,也就对应条件概率 p ( Z ∣ x ) p(Z|x)p(Zx) ,意思就是在x的前提,符合哪个分布的概率。

我们引入几个变量,z i z_izi代表我们选择某个分布的随机变量,那么取值肯定是1-k之间,很显然它是对应我们上面的 α \alphaα 的,也就是 p ( z i = i ) = α i p(z_i=i)=\alpha_ip(zi=i)=αi,所以我们最终的条件概率公式为:

p ( z j = i ∣ x j ) = P ( z j = i ) p ( x j ∣ z j = i ) p ( x j ) = α i p ( x j ∣ μ i , ∑ ) ∑ l = 1 k α l p ( x j ∣ μ l , ∑ ) p(z_j=i|x_j)=\frac{P(z_j=i)p(x_j|z_j=i)}{p(x_j)} =\frac{\alpha_ip(x_j|\mu_i,\sum)}{\sum_{l=1}^k\alpha_lp(x_j|\mu_l,\sum)}p(zj=ixj)=p(xj)P(zj=i)p(xjzj=i)=l=1kαlp(xjμl,)αip(xjμi,)

该公式的意思就是我们的某一样本符合某一分布的概率,记为 γ j i \gamma_{ji}γji ,意思是数据 j jj 符合分布 i ii 的概率,所以我们就是要求:

λ j = a r g m a x i ∈ { 1 , 2 , . . . k } γ j i \lambda_j=argmax_{i\in \{1,2,...k\}}\gamma_{ji}λj=argmaxi{1,2,...k}γji

我们会求出数据 j jj 符合每个分布的概率,然后获得之中最大的概率,那么数据 j jj 就会被划分到与之对应的簇。

但是问题来了,在求该概率时,公式分子和分母都存在某一分布的概率密度,我们只是知道符合高斯分布,但是具体的参数是不知道的,那么怎么获得概率密度函数呢?

上面说到了,采用极大似然的方式,就是我们的样本数据出现在对应分布的概率乘积达到最大,所以我们就要进行最大化似然:

L L ( D ) = l n ( ∏ j = 1 m p ( x j ) ) = ∑ j = 1 m l n ( ∑ i = 1 k α i p ( x j ∣ u i , ∑ ) ) LL(D)=ln(\prod_{j=1}^mp(x_j))=\sum_{j=1}^mln(\sum_{i=1}^k\alpha_ip(x_j|u_i,\sum))LL(D)=ln(j=1mp(xj))=j=1mln(i=1kαip(xjui,))

对上述函数进行求导,然后另导数为0,分别求出对应的 μ \muμ ,和 ∑ \sum

然后求得:

μ i = ∑ j = 1 m γ j i x j ∑ j = 1 m γ j i \mu_i=\frac{\sum_{j=1}^m\gamma_{ji}x_j}{\sum_{j=1}^m\gamma_{ji}}μi=j=1mγjij=1mγjixj

∑ i = ∑ j = 1 m γ j i ( x j − μ i ) ( x j − μ i ) T ∑ j = 1 m γ j i \sum_i=\frac{\sum_{j=1}^m\gamma_{ji}(x_j-\mu_i)(x_j-\mu_i)^T}{\sum_{j=1}^m\gamma_{ji}}i=j=1mγjij=1mγji(xjμi)(xjμi)T

但是在求对应高斯混合系数 α \alphaα 时,会有约束条件,就是 a i ≥ 0 , ∑ i = 1 k α i = 1 a_i\geq0,\sum_{i=1}^k\alpha_i=1ai0,i=1kαi=1 ,所以我们需要对原方程添加个拉格朗日乘子。

拉格朗日乘法得基本形态就是:

对于函数 z = f ( x , y ) z=f(x,y)z=f(x,y) ,在满足 ψ ( x , y ) = 0 \psi(x,y)=0ψ(x,y)=0 时得条件极值,可以转化为:

f ( x , y ) + λ ψ ( x , y ) f(x,y)+\lambda\psi(x,y)f(x,y)+λψ(x,y)

就是在原有的方程后面添加约束条件。

对与我们的问题就是要解方程:

L L ( D ) + λ ( ∑ i = 1 k α i − 1 ) LL(D)+\lambda(\sum_{i=1}^k\alpha_i-1)LL(D)+λ(i=1kαi1)

解得:

α i = 1 m ∑ j = 1 m γ j i \alpha_i=\frac{1}{m}\sum_{j=1}^m\gamma_{ji}αi=m1j=1mγji

三、详细算法流程

下面的图是我从西瓜书中摘出来的,公式看起来有点多,下面我用简单的语言将整个流程叙述一下。

  1. 首先在算法开始前需要确立簇的个数k,这也就对应着k个不同的高斯分布
  2. 初始化每个簇的高斯分布参数,μ , ∑ , α \mu,\sum,\alphaμ,,α,用于构建高斯混合概率密度,由于是开始还没有数据,肯定是要随机给值的
  3. 遍历所有的样本数据,计算每个样本符合每个分布的条件概率,即 γ j i \gamma_{ji}γji
  4. 然后利用计算好的 γ j i \gamma_{ji}γji 去计算新的 μ , ∑ , α \mu,\sum,\alphaμ,,α ,用新的参数去更新我们的分布模型,获得新的概率密度
  5. 利用新的分布模型计算每个样本的条件概率,重复2-4步骤,不断地进行更新模型分布参数
  6. 直到模型收敛,达到一定精度,停止迭代
  7. 根据我们新的模型参数获取每个样本的条件概率,然后获取的最大值,即 λ j = a r g m a x i ∈ { 1 , 2 , . . . k } γ j i \lambda_j=argmax_{i\in \{1,2,...k\}}\gamma_{ji}λj=argmaxi{1,2,...k}γji,将其划分到相应的簇中
  8. 结束
目录
相关文章
|
30天前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
17天前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
25天前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
50 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
1月前
|
机器学习/深度学习 算法 决策智能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
【机器学习】揭秘深度学习优化算法:加速训练与提升性能
|
30天前
|
机器学习/深度学习 算法 Python
探索机器学习中的决策树算法:从理论到实践
【10月更文挑战第5天】本文旨在通过浅显易懂的语言,带领读者了解并实现一个基础的决策树模型。我们将从决策树的基本概念出发,逐步深入其构建过程,包括特征选择、树的生成与剪枝等关键技术点,并以一个简单的例子演示如何用Python代码实现一个决策树分类器。文章不仅注重理论阐述,更侧重于实际操作,以期帮助初学者快速入门并在真实数据上应用这一算法。
|
6天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的决策树算法
【10月更文挑战第29天】本文将深入浅出地介绍决策树算法,一种在机器学习中广泛使用的分类和回归方法。我们将从基础概念出发,逐步深入到算法的实际应用,最后通过一个代码示例来直观展示如何利用决策树解决实际问题。无论你是机器学习的初学者还是希望深化理解的开发者,这篇文章都将为你提供有价值的见解和指导。
|
23天前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
22 0
|
26天前
|
机器学习/深度学习 算法 数据处理
EM算法对人脸数据降维(机器学习作业06)
本文介绍了使用EM算法对人脸数据进行降维的机器学习作业。首先通过加载ORL人脸数据库,然后分别应用SVD_PCA、MLE_PCA及EM_PCA三种方法实现数据降维,并输出降维后的数据形状。此作业展示了不同PCA变种在人脸数据处理中的应用效果。
29 0
|
16天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
1天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。

热门文章

最新文章