结合聚类和街区距离的高维向量搜索方法

文档序号:6508456阅读:210来源:国知局
结合聚类和街区距离的高维向量搜索方法
【专利摘要】本发明是结合聚类和街区距离的高维向量搜索方法。在本发明中,提出了一种结合聚类和街区距离的索引结构CBlockB-tree,它首先采用聚类算法对高维向量集进行簇划分,然后为各簇数据构建BlockB-tree,形成CBlockB-tree。该索引结构进行检索时,通过聚类能过滤一部分与查询区域不相交的簇数据,通过高维到一维转换后的key值比较,能进一步减少最终向量相似度匹配的运算量,加快高维向量的搜索速度。同时,该索引结构能够有效支持简单高效的街区距离进行匹配搜索。
【专利说明】结合聚类和街区距离的高维向量搜索方法
【技术领域】
[0001]本发明属于多媒体信息检索、智能信息处理、数据挖掘等数据处理领域,具体涉及的是一种结合聚类和街区距离的高维向量搜索方法。
【背景技术】
[0002]随着计算机和信息技术的发展,产生了海量的多媒体数据,如何在海量的多媒体数据库中快速找到所需的信息是当前多媒体数据库领域研究的一个重点问题。传统的方法是由人工对多媒体数据进行标注,然后通过文本检索来实现多媒体信息检索。然而人工标注存在工作量大和主观性强的缺陷,对于爆炸式增长的多媒体数据来说,完全人工标注是不可实现的,因此需要研究基于内容的多媒体信息检索技术。
[0003]实现基于内容的多媒体信息检索的技术路线是:通过特征变换,将多媒体数据映射到高维空间中的点——特征向量,用该特征向量来描述多媒体对象,得到特征库;然后用同样的特征变换方法来提取查询对象的特征向量,最后通过特征向量间的相似度匹配来实现多媒体信息的相似检索。因此多媒体信息的相似检索转变为在高维特征空间中寻找与给定查询点最近的点集的过程。
[0004]要在高维空间中寻找与给定查询点最相近的点集,最简单直观的方法就是顺序扫描,即依次将特征库中的每个特征(高维向量)与查询点进行相似度匹配,返回最匹配的那些特征点集,得到检索结果。顺序扫描随着特征库中特征数目和特征维度的增加,计算消耗时间线性增大,当特征库中的特征数目很大时,顺序扫描将不能满足实时性需求。为了加快检索速度,最常用的方法就是借助于高维索引技术。
[0005]为了实现对海量高维向量的管理,研究者们提出了大量的索引结构,其中最为经典的是以R-tree为代表的R-tree家族系列索引结构。R-tree是20世纪80年代由Guttman提出的,用于管理多维矩形块数据而设计的一种索引结构,它是一种利用树结构管理数据的高度平衡树,每个节点用该节点中所有数据的最小外接矩形(MBR:Minimal BoundingRectangle)来表示,实际数据仅出现在叶子节点中。该索引结构通过扩展也可用于高维空间中点数据的管理。在查询过程中,从根节点层到叶子节点层进行向下搜索,通过计算查询向量和各节点MBR之间的最小距离来判断查询范围是否与某节点相交来实现剪枝过滤,仅搜索可能包含结果的子树,从而加快检索速度。该索引结构允许节点之间的空间重叠,影响了其查询效率。为了提高R-tree的性能,研究者们相续提出了 R+-tree、R*-tree、SS-tree、SR-tree、X-tree、A-tree等索引结构。但这些树型索引结构随着特征维度的增加,查询效率急剧下降,甚至不如顺序扫描,这就是所谓的“维数灾难”。
[0006]除了树型结构之外,还存在高维到一维转换的索引结构,例如:金字塔技术、NB-tree、iDistance、iMinMax等等。高维到一维转换的索引结构通过某种规则,将高维向量映射为一维数据(称为key值),然后采用一维的B+_tree来管理这些key值,key值在B+-tree的叶子节点层有序排列。进行查询时,首先通过相同的高维到一维转换规则计算查询向量的查询key值,最后根据查询范围,确定搜索的key值起始位置和结束位置,并依次扫描这些key值对应的高维向量,计算查询向量与这些高维向量间的相似性,返回那些最相似的高维向量集,得到检索结果。由查询过程可知,高维到一维转换的索引结构在任何情况下性能均优于或等效于顺序扫描,且基于前人的大量实验表明,这类索引结构随维数和数据量的增加,性能降低缓慢。
[0007]金字塔技术、NB-tree、iDistance、iMinMax等这些高维到一维转换索引结构通过单一 key值的简单比较实现过滤剪枝,虽然不需要复杂的距离计算且具有较高的检索效率,但高维到一维转换的过程能够引起大量的数据信息丢失,导致不同向量可能具有相同的一维key值,使得通过单一 key值仅能过滤掉比例不大的一部分数据,致使最终似度匹配过程的运算量仍然很大,查询开销依然不小。且先前提出的这些高维到一维转换的索引结构大都是基于欧式距离匹配度量提出的,而街区距离是高维向量相似度匹配算法中最常用的度量方式之一,其运算简单,且具有较高的检索效率。

【发明内容】

[0008]本发明的目的在于提出了一种结合聚类和街区距离的索引结构CBlockB-tree (Clustering BlockB-tree的缩写),该索引结构通过聚类能过滤一部分与查询区域不相交的簇数据,通过高维到一维转换后的key值比较,能进一步减少最终向量相似度匹配的运算量,加快高维向量的搜索速度。同时,该索引结构能够有效支持简单高效的街区距离进行匹配搜索。
[0009]本发明的总体思想如下:首先采用聚类算法对高维向量集进行簇划分,然后为各簇数据选取一个参考点,并采用高维向量对这个参考点间的街区距离将该簇数据中的高维向量映射为一维key值,最后,分别采用各簇数据构建BlockB-tree,该BlockB-tree采用各簇数据的一维key为各簇数据构建B+_tree,同时其B+_tree叶子节点层的每个key值都绑定一个指向其对应高维向量的指针。进行检索时,首先只需对与查询范围相交的各簇数据进行搜索,然后在与查询区域相交的各簇数据中使用相同的参考点和街区距离将查询向量映射为查询key值,通过查询key值和查询范围确定在各簇数据中进行搜索的key值起始位置和结束位置(搜索范围),最后扫描这些在搜索范围内的key值对应的特征向量,计算查询向量与这些特征向量间的相似性,返回那些最相似的向量集,得到检索结果。
[0010]具体创新点:对高维空间进行簇划分,为各簇数据选取一个参考点,采用各簇数据中的每个高维向量到其参考点间的街区距离得到一维key值,构建索引结构,该索引结构通过聚类和简单的key值比较,减少了最终参与相似度匹配运算的高维向量数目,加快了查询速度,且采用街区距离作为高维到一维转换的规则,使得本索引结构能够直接支持采用街区距离进行高维向量的匹配搜索。
[0011]本发明的具体方法步骤为:(I)采用聚类算法对高维向量集进行簇划分,得到各簇数据的聚类中心和聚类半径;(2)为各簇数据选取一个参考点,然后将该簇数据中的各高维向量逐一采用该高维向量对所选参考点间的街区距离映射为一维key值,并采用该簇数据的所有高维向量和其对应的key值为该簇数据构建BlockB-tree,该BlockB-tree采用B+_tree索引结构来管理上层的key值,同时叶子节点层的每个key值都绑定一个指向对应高维向量的指针;(3)将各簇数据的聚类中心和聚类半径都绑定一个指向其对应簇数据所构建BlockB-tree的指针,形成CBlockB-tree ; (4)进行检索时,通过查询范围过滤掉那些与查询区域不相交的各簇数据,对与查询范围相交的各簇数据进行搜索,在与查询范围相交的各簇数据中的搜索方法为:计算查询向量和该簇数据所选参考点间的街区距离得到在该簇数据中的查询key值,根据查询范围和查询key值,得到需要进行搜索的key值的起始位置和结束位置,扫描计算这些key值对应的高维向量与查询向量间的距离,将在查询范围内的高维向量返回,得到检索结果。
[0012]更进一步,步骤I中所述的聚类算法包括Kmeans聚类。
[0013]更进一步,步骤2中所述的为各簇数据选取一个参考点,包括选取原点或聚类中心为参考点。
[0014]再进一步,步骤4中所述的进行检索时,包括采用范围查询或k近邻查询。
【专利附图】

【附图说明】
[0015]此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施实例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0016]图1 (a)本发明所述方法的流程图
[0017]图1(b)本发明所述索引结构CBlockB-tree的示例图
[0018]图2在本发明所述索引结构CBlockB-tree上进行范围查询的框图
[0019]图3在本发明所述索引结构CBlockB-tree上进行k近邻查询的框图
【具体实施方式】
[0020]为了使本发明所需解决的技术问题、技术方案更加清楚、明白,下面结合附图和实施实例对本发明的【具体实施方式】做进一步说明。
[0021]本发明实施实例提供的一种结合聚类和街区距离的高维向量搜索方法其索引结构构建的流程图如图1(a)所示:
[0022]首先,采用聚类算法对高维向量集进行空间簇划分,得到各簇高维数据;其次计算各簇数据的聚类中心和半径,并为每簇数据选取一个参考点;再次逐一计算各簇数据中的每个高维向量与该簇数据参考点间的街区距离,得到每个高维向量对应的一维key值;然后将各簇数据的每个高维向量和对应的key值逐一插入,为各簇数据构建BlockB-tree,该BlockB-tree采用B+_tree索引结构来管理上层的key值,同时叶子节点层的每个key值都绑定一个指向对应高维向量的指针;最后将各簇数据的聚类中心和聚类半径绑定该簇数据所构建的BlockB-tree,形成CBlockB-tree索引结构。(如图1(b)所示,上层为聚类信息层,中间为由各簇数据一维key构建的各B+_tree,底层为存储高维向量的高维向量层,各B+_tree叶子节点层的每个key值都绑定一个指向其对应高维向量的指针。)在进行检索时,通过查询向量和查询范围判断哪些簇数据与本次查询相交,然后对于与本次查询相交的各簇数据进行进一步搜索,在各簇数据中的搜索方法为:首先计算查询向量和该簇数据参考点间的街区距离,得到在该簇数据中进行搜索的查询key值;其次根据查询key值和查询范围确定在该簇数据对应BlockB-tree上进行搜索的key值起始位置和结束位置(搜索范围);最后,从key值层的起始位置到结束位置,逐一进行key值扫描,计算该key值对应的高维向量与查询向量间的距离,将与查询向量间的距离值在查询范围内的检索结果返回,得到相似向量集。
[0023]本发明所述的进行检索时的检索方式包括范围查询和k近邻查询,范围查询的流程图如图2所示,k近邻查询的流程图如图3所示。由图3可知,k近邻查询是通过范围查询来实现。
[0024]上述高维向量可以是图像、视频、音频的特征向量。
[0025]应当理解的是,上述针对实施实例的描述较为具体,并不能因此而认为是对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
【权利要求】
1.结合聚类和街区距离的高维向量搜索方法,其特征在于具体步骤如下: 1)采用聚类算法对高维向量集进行簇划分,得到各簇数据的聚类中心和聚类半径; 2)为各簇数据选取一个参考点,然后将该簇数据中的各高维向量逐一采用该高维向量对所选参考点间的街区距离映射为一维key值,并采用该簇数据的所有高维向量和其对应的key值为该簇数据构建BlockB-tree,该BlockB-tree采用B+_tree索引结构来管理上层的key值,同时叶子节点层的每个key值都绑定一个指向对应高维向量的指针; 3)将各簇数据的聚类中心和聚类半径都绑定一个指向其对应簇数据所构建BlockB-tree的指针,形成CBlockB_tree ;当向CBlockB_tree插入一个高维向量时,首先根据该高维向量到各簇数据聚类中心的距离值,选取距离该高维向量最近的簇数据进行插入操作,更新聚类半径,然后根据待插入向量到该簇数据所选参考点间的街区距离得到待插入向量的一维key值,根据该key值的大小定位其应插入到该簇数据对应BlockB-tree中的某一叶子节点,如果该叶子节点未满,则直接将key值插入到该叶子节点中,并产生指向对应高维向量的指针,更新其父节点对应的key值;如果该叶子节点已满,处理的方式如下: 31)如果该叶子节点的左右兄弟节点存在未满的情况,则结合其左右兄弟节点,进行待插入高维向量和key值的插入,并更新其父节点对应的key值; 32)如果其左右兄弟节点均满,则结合待插入的高维向量和key值,直接对该叶子节点进行分裂,并将分裂后新产生的叶子节点插入到其父节点中,同时更新其父节点对应的key值,如果父节点也已满,分裂过程继续向上传递,并更新对应的key值; 4)进行检索时,通过查询范围过滤掉那些与查询区域不相交的各簇数据,对与查询范围相交的各簇数据进行搜索,在与查询范围相交的各簇数据中的搜索方法为:计算查询向量和该簇数据所选参考点间的街区距离得到在该簇数据中的查询key值,根据查询范围和查询key值,得到需要进行搜索的key值的起始位置和结束位置,扫描计算这些key值对应的高维向量与查询向量间的距离,将在查询范围内的高维向量返回,得到检索结果。
2.如权利要求1所述的方法,其特征在于:步骤I中所述的聚类算法包括Kmeans聚类。
3.如权利要求1所述的方法,其特征在于:步骤2中所述的为各簇数据选取一个参考点,包括选取原点或聚类中心为参考点。
4.如权利要求1所述的方法,其特征在于:步骤4中所述的进行检索时,包括采用范围查询或k近邻查询。
【文档编号】G06F17/30GK103514264SQ201310365384
【公开日】2014年1月15日 申请日期:2013年8月21日 优先权日:2013年8月21日
【发明者】吕锐, 黄祥林, 陈明祥, 杨丽芳, 储达峰, 高庆, 魏海涛 申请人:新华通讯社, 中国传媒大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1