简介
在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向量为:
其中,Sh指的是一个半径为h的高维球区域,如图中所示圆形区域。Sh的定义为:
对于一个半径为h的圆,其均值向量为下图所示:
在图中橙色的圆圈表示最终的均值漂移点。在计算漂移均值向量的过程中,通过计算圆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向量形式:
其中K(*)为高斯核函数。通常,可以取Sh为整个数据集范围。
2、Mean Shift算法的基本原理
在Mean-Shift算法中,通过迭代的方式找到最终的聚类中心,即对每一个样本点计算漂移均值,以计算出来的漂移均值点作为新的起始点,重复以上的步骤,直到满足终止条件,得到的最终的均值漂移点即为最终的聚类中心,具体步骤如下:
(1)在指定的区域内计算每一个样本点的漂移均值,其过程如下图所示:
(2)移动该点到漂移均值点处,如上图所示,从原始样本点“O”处移动到漂移均值点“*”处;
(3)重复上述过程(计算新的漂移均值,然后移动),如下图所示:
(4)当满足最终的条件时,则退出,最终的漂移均值点为下图所示:
从上述的过程中可以看出,在Mean-Shift算法中,最关键的就是计算每个点的漂移均值,然后根据计算的偏移均值更新点的位置。
Mean-Shift算法的解释
在Mean-Shift算法中,实际上利用了概率密度,求得概率密度的局部最优解。
1、概率密度的梯度
对一个概率密度函数 f (X),已知d维空间中n个采样点X(i) ,i=1,…,n,f (X)的核函数估计(也被称为Parzen窗估计)为:
其中K(x)是一个单位核函数, K(x)可以表示为:K(||x||2)
概率密度函数 f (X)的梯度∇ f (X)的估计为:
令g(x)=-k′(x),G(x)=g(||x||2),则有:
其中,第一个方括号内是以G(X)为核函数对概率密度函数f(X)的估计,记为∇ f (X),第二个方括号中的是Mean-Shift向量,则可以表示为:
则Mean-Shift向量Mh(X)可以表示为:
由上式可知,Mean-Shift向量Mh(X)与概率密度函数f(X)的梯度成正比,因此,Mean-Shift向量总是指向概率密度增加的方向。
2、Mean-Shift向量的修正
对于Mean-Shift向量,可以表示为:
记:
则Mean-Shift向量变成:
Mean-Shift算法流程
从Mean-Shift算法流程可以看出,核心的部分是计算Mean-Shift向量
SKlearn算法的实践
Mean-Shift 算法实践
执行结果:
文章转载于:集智书童
作者:ChaucerG
推荐阅读
- HR-Former | 随迟但到,HRNet+Transformer轻装归来(非常值得学习!!!)
- 【从零开始学深度学习编译器】十一,初识MLIR
- 【机器学习算法】6、K-Means流程结束要不要多问几个为什么呢?
更多嵌入式AI技术相关内容请关注嵌入式AI专栏。