Mean Shift 均值漂移聚类

时间:2022-11-28 10:13:50
  • Mean Shift简介
    • 白话版
              MeanShift算法可以看作是使多个随机中心点向着密度最大的方向移动,最终得到多个最大密度中心。
              可以看成初始有多个随机初始中心,每个中心都有一个半径为bandwidth的圆,我们要做的就是求解一个向量,使得圆心一直往数据集密度最大的方向移动,也就是每次迭代的时候,都是找到圆里面点的平均位置作为新的圆心位置,直到满足某个条件不再迭代,这时候的圆心也就是密度中心。
      —————————————————————————————————-
    • 学术版
              Mean Shift算法是一种无参密度估计算法或称核密度估计算法,可用于聚类、图像分割、跟踪等,Mean shift是一个向量,它的方向指向当前点上概率密度梯度的方向。
              所谓的核密度评估算法,指的是根据数据概率密度不断移动其均值质心(也就是算法的名称Mean Shift的含义)直到满足一定条件。
             迭代过程如下:
      Mean Shift 均值漂移聚类
  • meansshift聚类
    对多维数据集进行MeanShift聚类过程如下:
    1. 在未被标记的数据点中随机选择一个点作为中心center;
    2. 找出离center距离在bandwidth之内的所有点,记做集合M,认为这些点属于簇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作为新的聚类,增加1类。
    7. 重复1、2、3、4、5直到所有的点都被标记访问。
    8. 分类:根据每个类,对每个点的访问频率,取访问频率最大的那个类,作为当前点集的所属类。
      简单的说,mean shift就是沿着密度上升的方向寻找同属一个簇的数据点