机器学习之Mean Shift 概述一、 前言短短八周,机器学习课就已经离我们而去了。
八周的时间里,我们了解了许多,也收获了许多。
八周其实根本不足以涵盖这门课的知识,来不及领悟,来不及体会,甚至连一些皮毛都不够。
但是其知识背后隐含的奥秘却值得我们去探索。
而其中均值漂移,无疑是值得花时间琢磨的知识之一。
二、 Mean Shift 简介Mean Shift 这个概念最早是由Fukunaga 等人于1975年在一篇关于概率密度梯度函数的估计中提出来的,其最初含义正如其名,就是偏移的均值向量,在这里Mean Shift 是一个名词,它指代的是一个向量,但随着Mean Shift 理论的发展,Mean Shift 的含义也发生了变化,如果我们说Mean Shift 算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束。
然而在以后的很长一段时间内Mean Shift 并没有引起人们的注意,直到20年以后,也就是1995年,另外一篇关于Mean Shift 的重要文献才发表。
在这篇重要的文献中,Yizong Cheng 对基本的Mean Shift 算法在以下两个方面做了推广,首先Yizong Cheng 定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同,其次Yizong Cheng 还设定了一个权重系数,使得不同的样本点重要性不一样,这大大扩大了Mean Shift 的适用范围。
另外Yizong Cheng 指出了Mean Shift 可能应用的领域,并给出了具体的例子。
Comaniciu 等人把Mean Shift 成功的运用的特征空间的分析,在图像平滑和图像分割中Mean Shift 都得到了很好的应用。
Comaniciu 等在文章中证明了,Mean Shift 算法在满足一定条件下,一定可以收敛到最近的一个概率密度函数的稳态点,因此Mean Shift 算法可以用来检测概率密度函数中存在的模态。
Comaniciu 等人还把非刚体的跟踪问题近似为一个Mean Shift 最优化问题,使得跟踪可以实时的进行。
在后面的几节,本文将详细的说明Mean Shift 的基本思想及其扩展,其背后的物理含义,以及算法步骤,并给出理论证明。
最后本文还将给出Mean Shift 在聚类,图像平滑,图像分割,物体实时跟踪这几个方面的具体应用。
三、 基本Mean Shift给定d 维空间dR 中的n 个样本点i x ,i=1,…,n ,在x 点的Mean Shift 向量的基本形式定义为:()()1i hh i x S M x x x k ∈≡-∑其中,h S 是一个半径为h 的高维球区域,满足以下关系的y 点的集合()()(){}2:Th S x y y x y x h ≡--≤ k 表示在这n 个样本点i x 中,有k 个点落入h S 区域中。
我们可以看到()i x x -是样本点i x 相对于点x 的偏移向量, Mean Shift 向量()h M x 就是对落入区域h S 中的k 个样本点相对于点x 的偏移向量求和然后再平均。
从直观上看,如果样本点i x 从一个概率密度函数()f x 中采样得到,由于非零的概率密度梯度指向概率密度增加最大的方向,因此从平均上来说, h S 区域内的样本点更多的落在沿着概率密度梯度的方向。
因此,对应的, Mean Shift 向量()h M x 应该指向概率密度梯度的方向。
图1、Mean Shift 示意图如上图所示, 大圆圈所圈定的范围就是h S ,小圆圈代表落入h S 区域内的样本点i h x S ∈,黑点就是Mean Shift 的基准点x ,箭头表示样本点相对于基准点x 的偏移向量,很明显的,我们可以看出,平均的偏移向量()h M x 会指向样本分布最多的区域,也就是概率密度函数的梯度方向。
四、 扩展的Mean Shift首先我们引进核函数的概念。
定义:X 代表一个d 维的欧氏空间,x 是该空间中的一个点,用一列向量表示。
x 的模2T xx x =。
R 表示实数域。
如果一个函数:K X R →存在一个剖面函数[]:0,k R ∞→,即()2()K x kx=并且满足: 1)k 是非负的。
2)k 是非增的,即如果a b <那么()()k a k b ≥。
3)k 是分段连续的,并且0()k r dr ∞<∞⎰ 。
那么,函数()K x 就被称为核函数。
从Mean Shift 向量的基本形式我们可以看出,只要是落入h S 的采样点,无论其离x 远近,对最终的()h M x 计算的贡献是一样的,然而我们知道,一般的说来,离x 越近的采样点对估计x 周围的统计特性越有效,因此我们引进核函数的概念,在计算()h M x 时可以考虑距离的影响;同时我们也可以认为在这所有的样本点i x 中,重要性并不一样,因此我们对每个样本都引入一个权重系数。
如此以来我们就可以把基本的Mean Shift 形式扩展为:()11()()()()()nHi i i i nHi i i Gx x w x x x M x Gx x w x ==--≡-∑∑其中:()()1/21/2()H i i G x x HG H x x ---=-()G x 是一个单位核函数,H 是一个正定的对称d d ⨯矩阵,()0i w x ≥是一个赋给采样点i x 的权重在实际应用的过程中,带宽矩阵H 一般被限定为一个对角矩阵221diag ,...,d H h h ⎡⎤=⎣⎦,甚至更简单的被取为正比于单位矩阵,即2H h I =。
由于后一形式只需要确定一个系数h ,在Mean Shift 中常常被采用,在本文的后面部分我们也采用这种形式,因此上式又可以被写为:()11()()()()()ni i i i h ni i i x xG w x x x hM x x x G w x h ==--≡-∑∑我们可以看到,如果对所有的采样点i x 满足1)()1i w x = 2) 1 if 1()0 if 1x G x x ⎧<⎪=⎨≥⎪⎩会发现扩展的Mean Shift 形式退化成了最基本的Mean Shift 形式。
五、 Mean Shift 的物理含义对一个概率密度函数()f x ,已知d 维空间中n 个采样点i x ,i=1,…,n, ()f x 的核函数估计为11()ˆ()()ni i i n di i x x K w x h f x h w x ==-⎛⎫⎪⎝⎭=∑∑ 其中()0i w x ≥是一个赋给采样点i x 的权重,()K x 是一个核函数,并且满足()1k x dx =⎰我们另外定义:核函数()K x 的剖面函数()k x ,使得()2()K x k x =()k x 的负导函数()g x ,即'()()g x k x =-,其对应的核函数()2()G x g x=则概率密度函数()f x 的梯度()f x ∇的估计为:()2'1212()ˆˆ()()()ni i i i nd i i x x x x k w x h f x f x h w x =+=⎛⎫--⎪ ⎪⎝⎭∇=∇=∑∑由上面的定义, '()()g x k x =-,()2()G x gx=,上式可以重写为()()21212112112()ˆ()()()()2 ()()nii i i nd i i n i n i i i i i i n d n i i i i i x xx x G w x h f x h w x x x x x x x G w x G w x h h x x h h w x G w x h =+=====⎛⎫-- ⎪ ⎪⎝⎭∇=⎡⎤⎛⎫-⎡-⎤⎛⎫-⎢⎥ ⎪ ⎪ ⎪⎢⎥⎢⎥⎝⎭⎝⎭⎢⎥=⎢⎥-⎛⎫⎢⎥⎢⎥ ⎪⎢⎥⎝⎭⎢⎥⎣⎦⎣⎦∑∑∑∑∑∑上式右边的第二个中括号内的那一部分就是Mean Shift 向量,第一个中括号内的那一部分是以()G x 为核函数对概率密度函数()f x 的估计,我们记做ˆ()G f x ,而ˆ()f x 我们重新记做ˆ()K f x ,因此ˆ()f x ∇=ˆ()K f x ∇=()22ˆ()G h f x M x h 得()2ˆ()1ˆ2()K h G f x M x h f x ∇=上式表明,用核函数G 在x 点计算得到的Mean Shift 向量()h M x 正比于归一化的用核函数K 估计的概率密度的函数ˆ()Kf x 的梯度,归一化因子为用核函数G 估计的x 点的概率密度。
因此Mean Shift 向量()h M x 总是指向概率密度增加最大的方向。
六、 Mean Shift 算法1、算法:我们把x 提到求和号的外面来,可以得到()11()()()()ni i i i h ni i i x xG w x x h M x x x x G w x h ==-=--∑∑ 我们把上式右边的第一项记为()h m x ,即11()()()()()ni i i i h ni i i x xG w x x h m x x x G w x h ==-=-∑∑ 给定一个初始点x ,核函数()G X , 容许误差ε,Mean Shift 算法循环的执行下面三。