度量空间中逐个支撑点数据划分方法

文档序号:6627242阅读:236来源:国知局
度量空间中逐个支撑点数据划分方法
【专利摘要】本发明公开一种度量空间中逐个支撑点数据划分方法,在建立索引时,从数据集内根据起始和终止位置截取需要处理的数据;选择一种支撑点优化方法,确定支撑点使用次序;选择一种数据划分方法,逐个支撑点进行数据划分;确定每个划分的上界与下界;确定每个划分到每个支撑点的距离值的上界与下界;返回划分结果。减少了搜索时与数据集的比较次数,从而提高了相似性搜索效率。
【专利说明】度量空间中逐个支撑点数据划分方法

【技术领域】
[0001] 本发明属于计算机软件领域,涉及度量空间,相似性搜索和数据挖掘,尤其涉及一 种度量空间中逐个支撑点数据划分方法。

【背景技术】
[0002] 基于内容的相似性搜索是一种重要的信息检索类型,广泛存在于数据库和数据挖 掘应用中。随着多媒体技术的发展和推广普及,基于复杂数据对象(空间数据、文本、图像、 音频、视频、时空序列等)的海量数据库不断涌现,相似性搜索已经成为多媒体信息系统基 于内容搜索的基本需求,其性能已经成为衡量多媒体系统查询功能的重要指标。同时,近年 来生物信息学的蓬勃发展也产生了庞大的复杂生物数据(基因序列、蛋白质谱等),对这些 数据的高效搜索已经成为一个迫切需要解决的问题。据统计,相似性搜索在整个计算生物 学研究任务中所占比例高达35 %。
[0003] 度量空间索引是一种适用性非常广的解决相似性搜索的方法。它把复杂的数据对 象抽象成度量空间中的点,利用用户定义距离函数的三角不等性来去除无关数据并减少直 接距离计算的次数,以实现高速搜索。度量空间索引只要求用户提供满足度量空间性质的 距离函数,而距离函数的具体实现和数据的表达都是透明的,同样的算法可以应用于不同 的数据,因而具备了更广泛的适用范围。近年来,多媒体技术的推广应用和生物学研究的蓬 勃发展产生了大量新型的多媒体和生物数据,度量空间索引技术也因为其不断体现出的普 遍适应性成为一个国内外较为热门的研究领域。
[0004] 度量空间索引也被称为基于距离的索引,主要用于相似性搜索。距离函数是它唯 一需要的相似性定义。树结构是最流行的度量空间索引结构的一种,在建树过程中包括了 选取支撑点和逐个支撑点数据划分两个步骤。
[0005] 目前,应用与度量空间的树结构包括BKT(Burkhard-Keller Tree),FQT(Fixed Queries Tree),VPT (Vantage Point Tree)和 MVPT (Multi-Vantage Point Tree)等等,在 度量空间建树的过程中,需要递归的根据数据点到给定支撑点的距离进行数据划分。其中, 支撑点的选择和数据划分方法,直接影响了索引的建立,从而影响到相似性搜索的效率。
[0006] 度量空间中支撑点如何选取及数据如何逐个支撑点进行划分对建立索引具有极 其重要的作用。
[0007] 通过FFT或者Incremental等方法选取的支撑点集合,在逐个支撑点进行数据划 分时,支撑点使用的顺序对相似性搜索的效率具有一定的影响,但是,目前并没有方法针对 这个问题,提出解决方案;与此同时,数据划分方法的选择,也并没有参考数据集到支撑点 的距离分布情况,而这使得现有的数据划分方法并不一定能够提高相似性搜索的效率。


【发明内容】

[0008] 为解决现有技术中存在的问题,本发明提供一种在数据量较大且数据类型较多的 情况下,在度量空间中逐个支撑点进行数据划分方法。
[0009] 本发明通过以下技术手段实现:
[0010] 为了解决度量空间中相似性搜索的效率问题,本发明采用的技术方案是,一种度 量空间中逐个支撑点数据划分方法,在建立索引时,包括以下步骤:
[0011] 101)从数据集内根据起始和终止位置截取需要处理的数据;
[0012] 102)选择一种支撑点优化方法,确定支撑点使用次序;
[0013] 103)选择一种数据划分方法,逐个支撑点进行数据划分;
[0014] 104)确定每个划分的上界与下界;
[0015] 105)确定每个划分到每个支撑点的距离值的上界与下界;
[0016] 106)返回划分结果。
[0017] 以上所述的度量空间中逐个支撑点数据划分方法,
[0018] 在步骤102中,采用了 Variance方法,即遍历每一个支撑点并根据该支撑点进行 数据划分,计算每个划分中的数据点大小,然后计算每个支撑点对数据划分大小的方差,对 支撑点按照方差从小到大进行排序。
[0019] 在步骤103中,确定本次划分要使用的支撑点,然后进行数据划分,最后对已划分 部分进行相应的处理。
[0020] 在步骤104与105之间,找到每个任务列表中的子节点及全部的直系父节点并存 储。
[0021] 以上所述的度量空间中逐个支撑点数据划分方法,需要从main函数接收四个参 数,分别是 dpm (data partition method),sop (select optimal pivot),pbop (partition by one pivot)和tR(trisection Radius)。当tR参数用于逐个支撑点数据划分方法中的 Trisection方法,其他方法并不使用。
[0022] 所述的数据划分的方法包含Balance方法、Kmeans方法、DBSCAN方法、Trisection 方法中的任意一种。所述的Balance方法为,找出使数据的numpartition-1个分位值和最 大值,然后将所有数据点与找出来的numpartition个值进行比较,并给其赋值为合适的类 标签,对于其中与找出来的值相等的数据点先暂时存放起来,然后根据方差赋予它们合适 的类标签。
[0023] 所述的Kmeans方法为,选择K个初始质心;每个点指派到最近的质心,而指派到一 个质心的点集为一个簇;根据指派到簇的点,更新每个簇的质心;重复指派和更新步骤,直 到簇不发生变化,或等价地,直到质心不发生变化。
[0024] 所述的DBSCAN方法为,扫描整个数据集,找到任意一个核心点,对该核心点进行 扩充;所述的扩充为寻找从该核心点出发的所有密度相连的数据点,遍历该核心点的Eps 邻域内的所有核心点,寻找与这些数据点密度相连的点,直到没有可以扩充的数据点为止。
[0025] 所述的Trisection方法为,判断用户给定的trisectionRadius*2是否小于将数 据点三分的两个分位数数值的绝对值,如果是,则把使用这两个分位数将数据集三分;否 贝 1J,找出在数据集中位数,并用减去trisectionRadius和加上trisectionRadius的值当 做将数据集三分的两个数值点。
[0026] 以上所述的度量空间中逐个支撑点数据划分方法,包括了对支撑点的处理和逐个 支撑点进行数据划分。对支撑点处理时,从全局的角度对整个数据集进行划分求方差,使得 用此方法选取的支撑点建树时更加的平衡。根据数据集到支撑点分布提出来的数据划分方 法,则更能将数据相似的点划分在一起,这样构建的索引树无疑会提高搜索的效率。

【专利附图】

【附图说明】
[0027] 图1为度量空间中逐个支撑点数据划分算法框架;
[0028] 图2为支撑点优化选取流程;
[0029] 图3为逐个支撑点数据划分流程。

【具体实施方式】
[0030] 以下将结合附图对本发明的【具体实施方式】进行详细说明。
[0031] 实施方式中使用的相关专业术语描述如下:
[0032] 输入:metric :该数据类型的距离计算方法;
[0033] Pivots :通过FFT,Incremental或者其他的方法选出的支撑点;
[0034] Data :从原始文件中读取的数据
[0035] First :本次数据划分的在Data中的起始点;
[0036] Size :本次数据划分的数据大小;
[0037] numPartitions :单个pivot将数据划分成的个数;
[0038] maxLeafSize :叶子节点最大能存放的数据点的个数;
[0039] trisectionRadius :采用Trisection方法时,所采用的半径值;
[0040] selectOptimalPivots :对pivots集合中的支撑点选择执行的次序;
[0041] partitionByOnePivot :按单个pivot实现数据划分的方法;
[0042] 输出:CPartitionResults :数据划分的结果;
[0043] 其他offset :数据被划分后,每个划分部分大小的上下界;
[0044] Upper:按每个pivot将每个任务划分为numPartitions个部分,upper中存放每 个部分的上界值;
[0045] Lower:按每个pivot将每个任务划分为numPartitions个部分,upper中存放每 个部分的下界值。
[0046] 如图1所示,度量空间中逐个支撑点数据划分算法:
[0047] 首先,从数据集中根据起始和终止位置截取需要处理的数据;
[0048] 然后,选择一种支撑点优化方法,确定支撑点使用次序,具体支撑点优化选取过程 如图2所示;
[0049] 接着,选择一种数据划分法,循环地将数据分为若干部分,具体的数据划分方法如 图3所示,计算本次任务中全部数据点到指定支撑点的距离,根据距离给数据点分类,并给 每个数据一个类标签,记录类标签的起始值或者下届、上届;
[0050] 最后,根据以上划分的若干数据部分,生成划分结果并返回。
[0051] 更具体的来说为:
[0052] 1 :从data数据集中根据起始和终止位置截取本次任务需要处理的数据;
[0053] 2 :采用selectOptimalPivotspivots提供的方法对Pivots中点的处理顺序进行 优化;
[0054] 3 :根据partitionByOnePivot确定使用的数据划分方法;
[0055] 4 :D0
[0056] 5 :在Pivots中按顺序选择一个未被使用的pivot ;
[0057] 6 :根据选出的pivot,利用一种数据划分方法,将本任务中的数据点进行
[0058] 分类,划分到若干个子任务中,即每个数据点被赋予了一个类标签;
[0059] 7 :删除每个数据量大小为零的子任务;
[0060] 8 :设置子任务是内部任务还是叶子任务;
[0061] 9 :把各个子任务加入到tasklist中;
[0062] 10 :在tasklist中寻找下个需要划分的任务;
[0063] 11 :While (tasklist没有被遍历完| | tasklist最后一个任务不是叶子任务);
[0064] 12 :在tasklist中将所有的叶子节点中的数据都存入data_temp,并根据
[0065] data_temp 的大小,确定 offset ;
[0066] 13 :找出tasklist中叶子节点的父节点,然后再找父节点的父节点,直到根
[0067] 节点为止,将找出的节点存入fathernode数组;
[0068] 14 :对fathernode数组中的节点,计算到相应的pivot的距离,然后把距离的
[0069] 上下界分别存入upper和lower ;
[0070] 15 :把data_temp赋值给data中相应的部分;
[0071] 16 :利用 offset,upper 和 lower 生成 CPartitionResults,并返回。
[0072] 算法时间复杂度为 0 ((numpartition) pivotSize*partitionByOnePivot),其 中,numpartition是按单个pivot将数据划分的个数;pivotSize是pivot的个数; partitionByOnePivot是按单个pivot进行数据划分的时间复杂度,每个方法的时间复杂 度会在介绍该方法时给出。
[0073] 算法的空间复杂度为 O(partitionByOnePivot),其中,partitionByOnePivot 是 按单个pivot进行数据划分的空间复杂度,每个方法的空间复杂度会在介绍该方法时给 出。
[0074] 在按单个Pivot进行数据划分时,Pivot的使用次序可能对划分效果产生一定的 影响,从而致使搜索的效率不同。所以,通过FFT,Incremental或者其他的支撑点选择方法 选出的若干个支撑点有必要再次进行优化,以决定他们在数据划分中所使用的次序。
[0075] 在UMAD中,目前有两种不同的优化支撑点的方法:Sequence和Variance。两种方 法的输入如下:
[0076] Metric :该数据类型的距离计算方法
[0077] Pivots :通过FFT,Incremental或者其他的方法选出的支撑点
[0078] Data :从原始文件中读取的数据
[0079] Numpartition :单个pivot将数据划分成的个数
[0080] maxLeafSize :叶子节点最大能存放的数据点的个数
[0081] 输出都是已经优化后的Pivot集合。下面分别对他们进行介绍。
[0082] Sequence 方法
[0083] Sequence方法按Pivots本来使用的次序将其输出,并不做任何的处理。
[0084] Variance 方法
[0085] Variance方法的总体思想是,遍历每一个pivot并根据该pivot进行数据划分,计 算每个划分中的数据点大小,然后计算他们之间的方差,对pivot按照方差从小到大进行 排序。本发明采用该方法进行支撑点优化。
[0086] 算法步骤为:
[0087] 1 :while (Pivots集合中仍然有pivot没有使用过)
[0088] 2:计算全部数据点到该pivot的距离,并存入getMetricData_Distance中;
[0089] 3:对getMetricData_Distance调用有关方法(如K-means)划分为几个部分; [0090] 4:计算它们之间的方差;
[0091] 5:把方差从小到大进行排序,以确定pivot的使用次序。
[0092] 算法的时间复杂度是 0(pivotSize*callMethod_time),其中,pivotSize 是 pivot 的个数;callMethod_time是所使用的方法的时间复杂度。
[0093] 算法的空间复杂度是0(n+callMethod_space),其中,η为数据集大小; cal lMethod_space是所使用的方法的空间复杂度。
[0094] 数据划分方法不仅决定了建树的时空消耗,也决定了相似性搜索的效率,其重要 性可见一斑。目前UMAD中有四种不同的数据划分方法,包含Balance方法、Kmeans方法、 DBSCAN方法、Trisection方法中的任意一种。但是它们的输入与输出都是一致的。
[0095] 输入:
[0096] Task :本次进行数据划分的任务
[0097] Metric :该数据类型的距离计算方法
[0098] Numpartition :按pivot对本任务进行数据划分的数量
[0099] Pivot :进行本次数据划分的支撑点
[0100] Indictor :指示本次数据划分所使用的支撑点在pivot集合中的下标
[0101] cluster_Start :数据被划分为若干个类之后,类的起始标记
[0102] clUSter_end :数据被划分为若干个类之后,类的终止标记
[0103] 输出:带有类标签数据的任务。下面分别进行详细阐述。
[0104] Balance 方法
[0105] 此算法的关键点是对重复数据的处理。
[0106] 算法的大体思想为:利用平衡的思想,找出使数据的numpartition-Ι个分位值和 最大值,然后将所有数据点与找出来的numpartition个值进行比较,并给其赋值为合适的 类标签,对于其中与找出来的值相等的数据点先暂时存放起来,然后根据方差赋予它们合 适的类标签。
[0107] 算法步骤:
[0108] 1 :计算全部数据点到该pivot的距离,并存入task中的getMetricData_ Distance ;
[0109] 2 :选取 getMetricData_Distance 中的第

【权利要求】
1. 一种度量空间中逐个支撑点数据划分方法,包含以下步骤: 101) 从数据集内根据起始和终止位置截取需要处理的数据; 102) 选择一种支撑点优化方法,确定支撑点使用次序; 103) 选择一种数据划分方法,逐个支撑点进行数据划分; 104) 确定每个划分的上界与下界; 105) 确定每个划分到每个支撑点的距离值的上界与下界; 106) 返回划分结果。
2. 根据权利要求1所述的度量空间中逐个支撑点数据划分方法,其特征在于,所述的 步骤102中,采用了 Variance方法,即遍历每一个支撑点并根据该支撑点进行数据划分,计 算每个划分中的数据点大小,然后计算每个支撑点对数据划分大小的方差,对支撑点按照 方差从小到大进行排序。
3. 根据权利要求1所述的度量空间中逐个支撑点数据划分方法,其特征在于,所述的 步骤103中,所述的数据划分为,确定本次划分要使用的支撑点,计算本次任务中全部数据 点到指定支撑点的距离,根据距离给支持点分类,并给每个数据点一个类标签,记录类标签 的起始值及终止值。
4. 根据权利要求1所述的度量空间中逐个支撑点数据划分方法,其特征在于,在步骤 104与105之间,找到每个任务列表中的子节点及全部的直系父节点并存储。
5. 根据权利要求3所述的度量空间中逐个支撑点数据划分方法,其特征在于,所述的 数据划分的方法包含Balance方法、Kmeans方法、DBSCAN方法、Trisection方法中的任意 一种。
6. 根据权利要求5所述的度量空间中逐个支撑点数据划分方法,其特征在于,所述的 Balance方法为,找出使数据的numpartition-l个分位值和最大值,然后将所有数据点与 找出来的numpartition个值进行比较,并给其赋值为合适的类标签,对于其中与找出来的 值相等的数据点先暂时存放起来,然后根据方差赋予它们合适的类标签。
7. 根据权利要求5所述的度量空间中逐个支撑点数据划分方法,其特征在于,所述的 Kmeans方法为,选择K个初始质心;每个点指派到最近的质心,而指派到一个质心的点集 为一个簇;根据指派到簇的点,更新每个簇的质心;重复指派和更新步骤,直到簇不发生变 化,或等价地,直到质心不发生变化。
8. 根据权利要求5所述的度量空间中逐个支撑点数据划分方法,其特征在于,所述的 DBSCAN方法为,扫描整个数据集,找到任意一个核心点,对该核心点进行扩充;所述的扩充 为寻找从该核心点出发的所有密度相连的数据点,遍历该核心点的Eps邻域内的所有核心 点,寻找与这些数据点密度相连的点,直到没有可以扩充的数据点为止。
9. 根据权利要求5所述的度量空间中逐个支撑点数据划分方法,其特征在于,所述的 Trisection方法为,判断用户给定的trisectionRadius*2是否小于将数据点三分的两个 分位数数值的绝对值,如果是,则把使用这两个分位数将数据集三分;否则,找出在数据集 中位数,并用减去trisectionRadius和加上trisectionRadius的值当做将数据集三分的 两个数值点。
【文档编号】G06F17/30GK104281652SQ201410472953
【公开日】2015年1月14日 申请日期:2014年9月16日 优先权日:2014年9月16日
【发明者】毛睿, 陆敏华, 蔡晔, 刘刚, 李荣华, 王毅, 罗秋明 申请人:深圳大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1