简述Mean shift 算法及其实现

Mean shift 是什么

均值偏移(Mean shift)算法是在特征空间中应用核密度估计的爬山算法,其算法思想是假设不同簇类的数据集符合不同的概率密度分布,找到任一样本点密度增大的最快方向(可以通过Mean shift计算得到),样本密度高的区域对应该簇类的中心所在,这样样本点最终会在局部密度最大处收敛,且收敛到相同的局部最大值的样本点被认为是同一簇类的成员[1]。Mean shift 算法可用于聚类、图像分割、跟踪等。

Mean shift 算法的预备知识
什么是特征

特征就是,于己而言,特征是某些突出性质的表现,于他而言,特征是区分事物的关键,所以,当我们要对事物进行分类或者识别,我们实际上就是提取特征,通过特征的表现进行判断[2]。事物拥有的特征例如 :

1 人类皮肤的颜色特征:欧洲的白人皮肤,非洲的黑人皮肤

2 汽车的颜色特征 :白色车身,黑色车身,红色车身

事物的特征可以用于抽象成特征空间的某一维度,在特征空间算法中得以应用,使算法在区分事物时更准确。

什么是特征空间

特征空间是对输入数据进行一种映射。对于输入数据,通过获得感兴趣特征的参数表示,并将结果映射到参数的多维空间中的一个点,特征空间中的特征是对原始数据更高维的抽象。

如下图左边的六个图形,1 六边形,2 ,3 长方形,4, 5 圆形,6 椭圆形,如果把这些图形根据圆度和大小这两个特征进行映射,那它们在这两个维度的特征空间的坐标大致可以表示如下图右边所示。特征空间的维度和特征的选择都是根据具体情况来决定的,同样的物体根据不同的应用,选择的特征和维度都不尽相同,对特征空间的分析根据不同的具体情况也不尽相同。
在这里插入图片描述​ 图1

什么是核密度估计

核密度估计Kernel Density Estimation(KDE)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一[3]。它的工作原理是在数据集上的每个样本点都设置一个核函数,然后对所有的核函数相加,得到数据集的核密度估计[1]。核函数是映射关系的内积,映射函数本身仅仅是一种映射关系,并没有增加维度的特性,不过可以利用核函数的特性,构造可以增加维度的核函数,**核函数和映射没有关系,**核函数只是用来计算映射到高维空间之后的内积的一种简便方法。在Mean shift 算法中比较通用的核函数是高斯核函数(gaussian kernel)和统一内核函数(uniform kernel)。

核函数的表示

x 1 , x 2 , ⋯   , x n x_1,x_2, \cdots,x_n x1,x2,,xn, 是一组 n n n个独立同分布的 d d d维随机向量。核函数K的带宽参数为h,则其样本的多元核密度估计为:
f ^ N ( x ) ≡ 1 n h d ∑ i = 1 n K ( x − x i h ) ( 1 ) \hat{f}_N(x) \equiv \frac{1}{nh^d}\sum\limits_{i=1}^n K(\frac{x-x_i}{h}) \quad \quad \quad\quad \quad \quad\quad \quad \quad\quad \quad \quad \quad \quad \quad \quad \quad\quad (1) f^N(x)nhd1i=1nK(hxxi)(1)
如下图2,假设数据集有样本点{8,9,10,11,12.5,14},采用高斯核作为估计的核函数,每个样本点都有设置为以该点为中心的高斯分布(蓝色虚线),则每个样本点的高斯核函数对应虚线,累加所有样本点的核函数,便得到了所有样本点的高斯核函数密度估计(黑线实线)。
在这里插入图片描述

图2

Note : 核函数的选择其实还有很多限制的,如选取的核函数一定要满足渐进无偏(asymptotic unbiasedness),一致性(consistency),还有均匀一致性(uniform consistency)等要求。具体的要求其实我也不是太懂,如果需要深入了解,请自行查阅参考文献[4];

Mean shift 算法

Mean shift 算法就是采用通用核函数来估计无参数密度梯度的方法。因为在大多数模式识别问题中,关于真实概率密度函数或关于其形式的信息很少。 由于缺乏关于密度的知识,我们不得不依靠非参数技术来获得密度梯度估计。估计密度梯度的一种直接方法是:首先获得概率密度函数的可微非参数估计函数,然后取其梯度来进行计算[4]。

Mean shift算法的公式推导

在公式(1)已经得到了可表示数据集样本点的多元核密度估计函数,将其改写成如下形式:
f ^ h , K ( x ) = c k , d n h d ∑ i = 1 n k ( ∥ x − x i h ∥ 2 ) ( 2 ) \hat{f}_{h,K}(x) = \frac{c_{k,d}}{nh^d}\sum\limits_{i=1}^n k(\parallel\frac{x-x_i}{h}\parallel^2) \quad \quad \quad \quad\quad \quad \quad\quad \quad \quad\quad \quad \quad\quad\quad (2) f^h,K(x)=nhdck,di=1nk(hxxi2)(2)
其中 k ( x ) k(x) k(x)称为核的属性函数(The profile of the kernel),在Mean shift 算法中一般采用的都是径向对称核,其要满足 K ( x ) = c k , d k ( ∥ x ∥ 2 ) K(x) = c_{k,d}k(\parallel x\parallel^2) K(x)=ck,dk(x

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值