使用 Mean Shift进行聚类


#博客


2014-09-20

Mean Shift,可以翻译为均值漂移

假设在一个多维空间中有很多数据点需要进行聚类,Mean Shift的过程如下:

1、在未被分类的数据点中随机选择一个点作为中心center;

2、找出离center距离在bandwidth之内的所有点,记做集合M,认为这些点属于簇c。

3、以center为中心点,计算从center开始到集合M中每个元素的向量,将这些向量相加,得到向量shift。

4、center = center+shift。即center沿着shift的方向移动,移动距离是||shift||。

5、重复步骤2、3、4,直到shift的大小很小(就是迭代到收敛),记住此时的center。注意,这个迭代过程中遇到的点都应该归类到簇c。如果收敛时的center已经被归类到c2,那么把c2和c合并。

6、重复1、2、3、4、5直到所有的点都被归类。

简单的说,mean shift就是沿着密度上升的方向寻找同属一个簇的数据点。

上面的算法只是mean shift的基础算法,现在已经对其进行了拓展,用于图像处理等领域。

Mean Shift Clustering给出了mean shift的matlab代码。

Meanshift,聚类算法讲meanshift在图像处理中的应用。

Mean Shift: A Robust Approach Toward Feature Space Analysis是关于mean shift的一篇重要论文。

Mean Shift Clustering非常简要地介绍了mean shift。



( 本文完 )