论文学习--Real-Time Tracking of Non-Rigid Objects using Mean Shift
Mean Shift
Mean Shift是一种聚类算法,有些类似于回归中的梯度下降法,是通过一步步的迭代来实现最大密度的定位。
一、基本形式
给定d维空间的n个数据点集X,那么对于空间中的任意点x的Mean Shift向量基本形式可以表示为:
这个向量即被成为“漂移向量”,其中Sk表示一个高维球(因为数据X为d维),x表示该球的球心,xi表示数据集中的数据。该向量即表示球内所有起点为球心,终点为各个数据的向量均值。漂移即指更新球心位置。
总结为一句话就是:求解一个向量,使得圆心一直往数据集密度最大的方向移动。说的再简单一点,就是每次迭代的时候,都是找到圆里面点的平均位置作为新的圆心位置。
二、加入核函数后的Mean Shift
简单点说就是加入一个高斯权重(使用高斯核函数),最后的漂移向量公式为:
因此每次更新的圆心坐标为:
三、Mean Shift实现聚类的流程
假设在一个多维空间中有很多数据点需要进行聚类,Mean Shift的过程如下:
1、在未被标记的数据点中随机选择一个点作为中心点center
2、找出距离center点在bandwidth内的所有点,记为集合M,认为这些点属于簇c。同时把球内点属于这个类的概率加一。
3、以center为中心点,计算向量shift,并进行center的移动(即center=center+shift)。
4、重复2、3步骤,知道shift的值很小(即达到收敛),得到此时的center。在该迭代过程中所有的点都归类与簇c。
5、如果收敛时当前簇c的center和其他已经存在的簇的center的距离小于阈值,那么把两个簇合并,否则就把簇c当作新的聚类,增加一类。
6、重复以上步骤直到所有点都被标记访问。
7、分类:根据每个类对每个点的访问频率,取访问频率最大的那个类作为当前簇的所属类。