最近邻检索问题综述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最近邻检索问题综述
本文以数据维度为主线,对最近邻检索问题进行了分类,详细介绍经典的算法及实现原理,目前的研究现状及存在问题,展望了在保留高维数据信息、保护用户数据隐私及提高工作效率等方面的发展方向。

标签:最近邻检索;精确查询;近似查询
一、引言
随着互联网和多媒体技术的飞速发展,图片、音频、视频及移动数据等海量数据的产生和共享在日常生活中已经司空见惯。

许多应用需要在分布式环境下对这些数据进行有效的检索与定位,最近邻检索是大数据处理中基础的问题之一,它在机器学习、图像检索、智能搜索等领域有广泛的应用。

其主要流程是对海量数据预处理并建立索引,从而可以高效的找到和指定查询最接近的数据对象。

[1]
二、最近邻检索分类
最近邻检索其实就在我们的日常生活之中。

举个例子,当用户在淘宝网中上传了一张衣服的照片后,想找到相似的卖家。

这就需要淘宝网首先要对其数据库中的图片抽取特征并建立索引,对被查询图片同样进行特征抽取,然后在数据库中寻找和该图片特征距离相近的特征,抽取出数据距离最近的图片并返回相应的卖家。

其实在最近邻检索中,不管是对数据库或是对图像进行检索,操作上都是一样的,都是通过距离函数对多维数据进行相似度检索。

多维数据之间的相似度是通过两个数据之间的距离来衡量的。

在K 维空间中,衡量两个数据点距离的一般是欧氏距离,近年来人们逐渐发现汉明距离更能表示两个多维数据点之间距离。

在信息论中,两个等长字符串之间的汉明距离是这两个字符串对应位置不同字符的个数,比如1001100与1011000的汉明距离就是2,而1001100与1001110的汉明距离就是1。

后面讲到的基于哈希的算法大多是以汉明距离来寻找最近邻的。

最近邻检索一般根据其查询的精确度不同可分为精确查询与近似查询两类。

1、精确查询
精确查询中数据维度一般较低。

最简单的方法是线性扫描,也就是平常所说的穷举搜索,在数据库中依次计算其中样本与所查询数据之间的距离,抽取出所计算出来的距离最小的样本即为所要查找的最近邻。

这样做的缺点是当数据量大时,搜索效率急剧下降。

因为实际数据会呈现出簇状的聚类形态,所以人们开始构建数据索引,索引树是最常见的方法,其基本思想是对搜索空间进行层次划分,再进行快速匹配。

其中当d=1,只要采用传统的二分查找法或者各类平衡树就能找到最近邻;当d=2时,情况稍稍复杂点,一般则将最近邻检索问题转化为求解查询点究竟落在哪个区域的V oronoi图问题,再通过二分查找树就能很好的解决,
空间复杂度和查询复杂度分别为,。

当数据维度不太高如,通常采用树型索引结构对数据进行分区以实现高效索引,如最经典的KD树算法[2]、R树、M树等等,它们的时间和空间复杂度都是以d为指数的指数级别的,在实际搜索时也取得了良好的效果。

2、近似查询
当d维度较大时,精确查询的查询效率迅速下降,最恶劣的情况甚至还不如线性查询,近似查询应运而生。

它源于现实生活中很多应用,其最优解和近似解的差别并不大,因而在算法实现中允许返回比最短距离不超过倍的数据对象作为结果,具体的算法基本上都是基于哈希算法的。

最经典的算法有k-近邻算法[3],局部敏感哈希算法[4]等。

如何计算数据的相似度是最近邻检索应当面对的一个问题,k-近邻算法采用了一个最简单的判定方法,看这个数据对象的邻居。

它首先要对原有的数据根据特征进行分类,然后对被查询的数据对象抽出其数据特征,再找出与其数据特征最相近的K个数据,并根据K个数据的类型依据投票原则预测出这个数据对象的类型。

从一维基百科的一副图可以说明,这组数据可以分为两类,一类用红色小三角表示,另一类用蓝色正方形表示;等待分类的数据用绿色正圆表示,那么它到底属于那一类数据:
当K=3时,绿圆属于红色小三角这一类,而当K=5时,绿圆则属于蓝色正方形。

从中可以看出k的大小很重要,太小容易受噪音影响,太大则导致性能下降;同时分类时,各数据类中数据量的大小也应该均衡。

庞大的数据量同样是影响运行效率的重要因素,对数据库中的高维数据进行一一比对并进行相似度的计算显然是不现实的。

局部敏感哈希算法为了降低算法的复杂度,它利用哈希技术把非相似、不可能成为结果的数据点过滤掉,过滤之后的数据对象作为候选集,具体检索时只在候选数据集合上进行实际的距离或者相似性度量计算。

算法首先根据原始数据的特性找到合适的哈希函数,使原先相邻的两个数据能够被映射到相同的桶内,具有相同的桶号。

对原始数据集合中所有的数据都进行映射后,就得到了一个哈希表。

原始数据集被分散到了哈希表的桶内,每个桶都会落入一些原始的数据,属于同一个桶内的数据就有很大可能是相邻的。

因此,在进行最近邻查找时,只需要将被查询数据进行哈希映射得到其桶号,对该桶号内的所有数据进行线性匹配即可查找到与查询数据相邻的数据。

LSH近似方法由Indyk和Motwani在方法中提出的,采用多个维持局部特性的哈希函数对高维对象进行哈希,将相似数据放在相近的地方。

这个方法还在被继续发展,以便在分布式与集中式环境下都能保障它的高效性。

近似最近邻检索在实现时一般而言都是会降维,高维度数据中各维度信息的重要程度不同,通过特定的映射关节降到低维数据,其中难免有数据损失,这就要求算法一定要抓住数据及其应用的本质,尽量去除掉次要信息向量或者相关性较强的数据及冗余信息,加速后期数据计算速度等等。

我们可以根据哈希函数降维方式中是否使用了投影原理不同,将近似最近邻查询分为随机投影等方法和基
于学习的方法等,它们在解决高维数据检索时极大的提高了计算机的工作效率,但是在具体工作时它们的效率依然受到哈希函数编码长度的影响。

三、结语
尽管最近邻检索近年来得到了比较深入的研究,近年来近似查询在解决海量高维数据检索时也取得了一定的成绩,但是如何保留高维数据的特征,迅速在海量数据中检索到符合用户特定需求的数据,并在查询过程中保护用户的位置、工作、生活习惯等个人隐私仍然是最近邻检索研究的一个方向。

相关文档
最新文档