一、Mean Shift介绍
Mean Shift(均值漂移)是基于密度的非参数聚类算法,其算法思想是假设不同簇类的数据集符合不同的概率密度分布,找到任一样本点密度增大的最快方向(最快方向的含义就是Mean Shift),样本密度高的区域对应于该分布的最大值,这些样本点最终会在局部密度最大值收敛,且收敛到相同局部最大值的点被认为是同一簇类的成员。
Mean Shift在计算机视觉领域的应用非常广,如图像分割,聚类和视频跟踪。
1.1、算法步骤
Mean Shift算法的关键操作是通过感兴趣区域内的数据密度变化计算中心点的漂移向量,从而移动中心点进行下一次迭代,直到到达密度最大处(中心点不变)。从每个数据点出发都可以进行该操作,在这个过程,统计出现在感兴趣区域内的数据的次数。该参数将在最后作为分类的依据。
- 1、在未被标记的数据点中随机选择一个点作为起始中心点center;
- 2、找出以center为中心半径为radius的区域中出现的所有数据点,认为这些点同属于一个聚类C。同时在该聚类中记录数据点出现的次数加1。
- 3、以center为中心点,计算从center开始到集合M中每个元素的向量,将这些向量相加,得到向量shift。
- 4、center = center + shift。即center沿着shift的方向移动,移动距离是||shift||。
- 5、重复步骤2、3、4,直到shift的很小(就是迭代到收敛),记住此时的center。注意,这个迭代过程中遇到的点都应该归类到簇C。
- 6、如果收敛时当前簇C的center与其它已经存在的簇C2中心的距离小于阈值,那么把C2和C合并,数据点出现次数也对应合并。否则,把C作为新的聚类。
- 7、重复1、2、3、4、5直到所有的点都被标记为已访问。
- 8、分类:根据每个类,对每个点的访问频率,取访问频率最大的那个类,作为当前点集的所属类。
Reference
- 深入剖析Mean Shift的原理
- Meanshift,聚类算法