AI学习者 · 2021年10月22日

【机器学习算法】7、聚类算法之Mean-Shift

简介

在K-Means算法中,最终的聚类效果受初始的聚类中心的影响,K-Means++算法的提出,为选择较好的初始聚类中心提供了依据,但是在K-Means算法中,聚类的类别个数K仍然需要事先指定,而对于未知的数据集,K-Means算法和K-Means++算法依然很难对其进行精确求解,对此,有一些改进的聚类算法被提出来处理聚类个数K未知的情况。

Mean-Shift算法,又称均值漂移算法,与K-Means算法一样,都是基于聚类中心的聚类算法,不同的是,Mean-Shift算法不需要事先指定类别个数K。在Mean-Shift算法中,聚类中心是通过在给定区域中的样本均值来确定的,通过不断地更新聚类中心,直到最终的聚类中心不再改变为止。

Mean-Shift算法主要应用在聚类、图像平滑、图像分割和视频跟踪等领域。

Mean Shift向量

对于给定的n维空间R中的m个样本点X(i),i=1,...,m,对于其中的一个样本X,其Mean-Shift向量为:

image.png

其中,Sh指的是一个半径为h的高维球区域,如图中所示圆形区域。Sh的定义为:
image.png

对于一个半径为h的圆,其均值向量为下图所示:
image.png

在图中橙色的圆圈表示最终的均值漂移点。在计算漂移均值向量的过程中,通过计算圆Sh中的每个样本点X(i)相对于点X的偏移向量(X(i)-X),再对所有的漂移向量求和后再求平均。

如上的均值漂移向量的求解方法存在一个问题,即在Sh的区域内,每一个样本点X(i)对样本X的贡献是一样的。而在实际中,每一个样本点X(i)对于X的贡献是不一样的,这样的贡献可以通过核函数解决。

Mean Shift算法原理

1、引入核函数的Mean-Shift向量

假设半径为h的范围Sh范围内,为了使得每一个样本点X(i)对于样本X的贡献不一样,向基本的Mean-Shift向量形式中增加核函数,得到如下所示的Mean-Shift向量形式:
image.png

其中K(*)为高斯核函数。通常,可以取Sh为整个数据集范围。

2、Mean Shift算法的基本原理

在Mean-Shift算法中,通过迭代的方式找到最终的聚类中心,即对每一个样本点计算漂移均值,以计算出来的漂移均值点作为新的起始点,重复以上的步骤,直到满足终止条件,得到的最终的均值漂移点即为最终的聚类中心,具体步骤如下:

(1)在指定的区域内计算每一个样本点的漂移均值,其过程如下图所示:
image.png

(2)移动该点到漂移均值点处,如上图所示,从原始样本点“O”处移动到漂移均值点“*”处;

(3)重复上述过程(计算新的漂移均值,然后移动),如下图所示:
image.png

(4)当满足最终的条件时,则退出,最终的漂移均值点为下图所示:
image.png
从上述的过程中可以看出,在Mean-Shift算法中,最关键的就是计算每个点的漂移均值,然后根据计算的偏移均值更新点的位置。

Mean-Shift算法的解释

在Mean-Shift算法中,实际上利用了概率密度,求得概率密度的局部最优解。

1、概率密度的梯度

对一个概率密度函数 f (X),已知d维空间中n个采样点X(i) ,i=1,…,n,f (X)的核函数估计(也被称为Parzen窗估计)为:
image.png
其中K(x)是一个单位核函数, K(x)可以表示为:K(||x||2) 

概率密度函数 f (X)的梯度∇ f (X)的估计为: 

image.png

令g(x)=-k′(x),G(x)=g(||x||2),则有:
image.png

其中,第一个方括号内是以G(X)为核函数对概率密度函数f(X)的估计,记为∇ f (X),第二个方括号中的是Mean-Shift向量,则可以表示为:
image.png

则Mean-Shift向量Mh(X)可以表示为:
image.png

由上式可知,Mean-Shift向量Mh(X)与概率密度函数f(X)的梯度成正比,因此,Mean-Shift向量总是指向概率密度增加的方向。

2、Mean-Shift向量的修正

对于Mean-Shift向量,可以表示为:
image.png

记:
image.png

则Mean-Shift向量变成:
image.png

Mean-Shift算法流程

image.png

从Mean-Shift算法流程可以看出,核心的部分是计算Mean-Shift向量

SKlearn算法的实践

Mean-Shift 算法实践

image.png
执行结果:
image.png

文章转载于:集智书童
作者:ChaucerG

推荐阅读

更多嵌入式AI技术相关内容请关注嵌入式AI专栏。
推荐阅读
关注数
18838
内容数
1372
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息