CN104281652A - 度量空间中逐个支撑点数据划分方法 - Google Patents
度量空间中逐个支撑点数据划分方法 Download PDFInfo
- Publication number
- CN104281652A CN104281652A CN201410472953.8A CN201410472953A CN104281652A CN 104281652 A CN104281652 A CN 104281652A CN 201410472953 A CN201410472953 A CN 201410472953A CN 104281652 A CN104281652 A CN 104281652A
- Authority
- CN
- China
- Prior art keywords
- data
- point
- strong point
- metric space
- strong
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/41—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种度量空间中逐个支撑点数据划分方法,在建立索引时,从数据集内根据起始和终止位置截取需要处理的数据;选择一种支撑点优化方法,确定支撑点使用次序;选择一种数据划分方法,逐个支撑点进行数据划分;确定每个划分的上界与下界;确定每个划分到每个支撑点的距离值的上界与下界;返回划分结果。减少了搜索时与数据集的比较次数,从而提高了相似性搜索效率。
Description
技术领域
本发明属于计算机软件领域,涉及度量空间,相似性搜索和数据挖掘,尤其涉及一种度量空间中逐个支撑点数据划分方法。
背景技术
基于内容的相似性搜索是一种重要的信息检索类型,广泛存在于数据库和数据挖掘应用中。随着多媒体技术的发展和推广普及,基于复杂数据对象(空间数据、文本、图像、音频、视频、时空序列等)的海量数据库不断涌现,相似性搜索已经成为多媒体信息系统基于内容搜索的基本需求,其性能已经成为衡量多媒体系统查询功能的重要指标。同时,近年来生物信息学的蓬勃发展也产生了庞大的复杂生物数据(基因序列、蛋白质谱等),对这些数据的高效搜索已经成为一个迫切需要解决的问题。据统计,相似性搜索在整个计算生物学研究任务中所占比例高达35%。
度量空间索引是一种适用性非常广的解决相似性搜索的方法。它把复杂的数据对象抽象成度量空间中的点,利用用户定义距离函数的三角不等性来去除无关数据并减少直接距离计算的次数,以实现高速搜索。度量空间索引只要求用户提供满足度量空间性质的距离函数,而距离函数的具体实现和数据的表达都是透明的,同样的算法可以应用于不同的数据,因而具备了更广泛的适用范围。近年来,多媒体技术的推广应用和生物学研究的蓬勃发展产生了大量新型的多媒体和生物数据,度量空间索引技术也因为其不断体现出的普遍适应性成为一个国内外较为热门的研究领域。
度量空间索引也被称为基于距离的索引,主要用于相似性搜索。距离函数是它唯一需要的相似性定义。树结构是最流行的度量空间索引结构的一种,在建树过程中包括了选取支撑点和逐个支撑点数据划分两个步骤。
目前,应用与度量空间的树结构包括BKT(Burkhard-KellerTree),FQT(Fixed Queries Tree),VPT(Vantage Point Tree)和MVPT(Multi-Vantage Point Tree)等等,在度量空间建树的过程中,需要递归的根据数据点到给定支撑点的距离进行数据划分。其中,支撑点的选择和数据划分方法,直接影响了索引的建立,从而影响到相似性搜索的效率。
度量空间中支撑点如何选取及数据如何逐个支撑点进行划分对建立索引具有极其重要的作用。
通过FFT或者Incremental等方法选取的支撑点集合,在逐个支撑点进行数据划分时,支撑点使用的顺序对相似性搜索的效率具有一定的影响,但是,目前并没有方法针对这个问题,提出解决方案;与此同时,数据划分方法的选择,也并没有参考数据集到支撑点的距离分布情况,而这使得现有的数据划分方法并不一定能够提高相似性搜索的效率。
发明内容
为解决现有技术中存在的问题,本发明提供一种在数据量较大且数据类型较多的情况下,在度量空间中逐个支撑点进行数据划分方法。
本发明通过以下技术手段实现:
为了解决度量空间中相似性搜索的效率问题,本发明采用的技术方案是,一种度量空间中逐个支撑点数据划分方法,在建立索引时,包括以下步骤:
101)从数据集内根据起始和终止位置截取需要处理的数据;
102)选择一种支撑点优化方法,确定支撑点使用次序;
103)选择一种数据划分方法,逐个支撑点进行数据划分;
104)确定每个划分的上界与下界;
105)确定每个划分到每个支撑点的距离值的上界与下界;
106)返回划分结果。
以上所述的度量空间中逐个支撑点数据划分方法,
在步骤102中,采用了Variance方法,即遍历每一个支撑点并根据该支撑点进行数据划分,计算每个划分中的数据点大小,然后计算每个支撑点对数据划分大小的方差,对支撑点按照方差从小到大进行排序。
在步骤103中,确定本次划分要使用的支撑点,然后进行数据划分,最后对已划分部分进行相应的处理。
在步骤104与105之间,找到每个任务列表中的子节点及全部的直系父节点并存储。
以上所述的度量空间中逐个支撑点数据划分方法,需要从main函数接收四个参数,分别是dpm(data partition method),sop(selectoptimal pivot),pbop(partition by one pivot)和tR(trisectionRadius)。当tR参数用于逐个支撑点数据划分方法中的Trisection方法,其他方法并不使用。
所述的数据划分的方法包含Balance方法、Kmeans方法、DBSCAN方法、Trisection方法中的任意一种。所述的Balance方法为,找出使数据的numpartition-1个分位值和最大值,然后将所有数据点与找出来的numpartition个值进行比较,并给其赋值为合适的类标签,对于其中与找出来的值相等的数据点先暂时存放起来,然后根据方差赋予它们合适的类标签。
所述的Kmeans方法为,选择K个初始质心;每个点指派到最近的质心,而指派到一个质心的点集为一个簇;根据指派到簇的点,更新每个簇的质心;重复指派和更新步骤,直到簇不发生变化,或等价地,直到质心不发生变化。
所述的DBSCAN方法为,扫描整个数据集,找到任意一个核心点,对该核心点进行扩充;所述的扩充为寻找从该核心点出发的所有密度相连的数据点,遍历该核心点的Eps邻域内的所有核心点,寻找与这些数据点密度相连的点,直到没有可以扩充的数据点为止。
所述的Trisection方法为,判断用户给定的trisectionRadius*2是否小于将数据点三分的两个分位数数值的绝对值,如果是,则把使用这两个分位数将数据集三分;否则,找出在数据集中位数,并用减去trisectionRadius和加上trisectionRadius的值当做将数据集三分的两个数值点。
以上所述的度量空间中逐个支撑点数据划分方法,包括了对支撑点的处理和逐个支撑点进行数据划分。对支撑点处理时,从全局的角度对整个数据集进行划分求方差,使得用此方法选取的支撑点建树时更加的平衡。根据数据集到支撑点分布提出来的数据划分方法,则更能将数据相似的点划分在一起,这样构建的索引树无疑会提高搜索的效率。
附图说明
图1为度量空间中逐个支撑点数据划分算法框架;
图2为支撑点优化选取流程;
图3为逐个支撑点数据划分流程。
具体实施方式
以下将结合附图对本发明的具体实施方式进行详细说明。
实施方式中使用的相关专业术语描述如下:
输入:metric:该数据类型的距离计算方法;
Pivots:通过FFT,Incremental或者其他的方法选出的支撑点;
Data:从原始文件中读取的数据
First:本次数据划分的在Data中的起始点;
Size:本次数据划分的数据大小;
numPartitions:单个pivot将数据划分成的个数;
maxLeafSize:叶子节点最大能存放的数据点的个数;
trisectionRadius:采用Trisection方法时,所采用的半径值;
selectOptimalPivots:对pivots集合中的支撑点选择执行的次序;
partitionByOnePivot:按单个pivot实现数据划分的方法;
输出:CPartitionResults:数据划分的结果;
其他:offset:数据被划分后,每个划分部分大小的上下界;
Upper:按每个pivot将每个任务划分为numPartitions个部分,upper中存放每个部分的上界值;
Lower:按每个pivot将每个任务划分为numPartitions个部分,upper中存放每个部分的下界值。
如图1所示,度量空间中逐个支撑点数据划分算法:
首先,从数据集中根据起始和终止位置截取需要处理的数据;
然后,选择一种支撑点优化方法,确定支撑点使用次序,具体支撑点优化选取过程如图2所示;
接着,选择一种数据划分法,循环地将数据分为若干部分,具体的数据划分方法如图3所示,计算本次任务中全部数据点到指定支撑点的距离,根据距离给数据点分类,并给每个数据一个类标签,记录类标签的起始值或者下届、上届;
最后,根据以上划分的若干数据部分,生成划分结果并返回。
更具体的来说为:
1:从data数据集中根据起始和终止位置截取本次任务需要处理的数据;
2:采用selectOptimalPivotspivots提供的方法对Pivots中点的处理顺序进行优化;
3:根据partitionByOnePivot确定使用的数据划分方法;
4:DO
5:在Pivots中按顺序选择一个未被使用的pivot;
6:根据选出的pivot,利用一种数据划分方法,将本任务中的数据点进行
分类,划分到若干个子任务中,即每个数据点被赋予了一个类标签;
7:删除每个数据量大小为零的子任务;
8:设置子任务是内部任务还是叶子任务;
9:把各个子任务加入到tasklist中;
10:在tasklist中寻找下个需要划分的任务;
11:While(tasklist没有被遍历完||tasklist最后一个任务不是叶子任务);
12:在tasklist中将所有的叶子节点中的数据都存入data_temp,并根据
data_temp的大小,确定offset;
13:找出tasklist中叶子节点的父节点,然后再找父节点的父节点,直到根
节点为止,将找出的节点存入fathernode数组;
14:对fathernode数组中的节点,计算到相应的pivot的距离,然后把距离的
上下界分别存入upper和lower;
15:把data_temp赋值给data中相应的部分;
16:利用offset,upper和lower生成CPartitionResults,并返回。
算法时间复杂度为O((numpartition)pivotSize*partitionByOnePivot),其中,numpartition是按单个pivot将数据划分的个数;pivotSize是pivot的个数;partitionByOnePivot是按单个pivot进行数据划分的时间复杂度,每个方法的时间复杂度会在介绍该方法时给出。
算法的空间复杂度为O(partitionByOnePivot),其中,partitionByOnePivot是按单个pivot进行数据划分的空间复杂度,每个方法的空间复杂度会在介绍该方法时给出。
在按单个Pivot进行数据划分时,Pivot的使用次序可能对划分效果产生一定的影响,从而致使搜索的效率不同。所以,通过FFT,Incremental或者其他的支撑点选择方法选出的若干个支撑点有必要再次进行优化,以决定他们在数据划分中所使用的次序。
在UMAD中,目前有两种不同的优化支撑点的方法:Sequence和Variance。两种方法的输入如下:
Metric:该数据类型的距离计算方法
Pivots:通过FFT,Incremental或者其他的方法选出的支撑点
Data:从原始文件中读取的数据
Numpartition:单个pivot将数据划分成的个数
maxLeafSize:叶子节点最大能存放的数据点的个数
输出都是已经优化后的Pivot集合。下面分别对他们进行介绍。
Sequence方法
Sequence方法按Pivots本来使用的次序将其输出,并不做任何的处理。
Variance方法
Variance方法的总体思想是,遍历每一个pivot并根据该pivot进行数据划分,计算每个划分中的数据点大小,然后计算他们之间的方差,对pivot按照方差从小到大进行排序。本发明采用该方法进行支撑点优化。
算法步骤为:
1:while(Pivots集合中仍然有pivot没有使用过)
2:计算全部数据点到该pivot的距离,并存入getMetricData_Distance中;
3:对getMetricData_Distance调用有关方法(如K-means)划分为几个部分;
4:计算它们之间的方差;
5:把方差从小到大进行排序,以确定pivot的使用次序。
算法的时间复杂度是O(pivotSize*callMethod_time),其中,pivotSize是pivot的个数;callMethod_time是所使用的方法的时间复杂度。
算法的空间复杂度是O(n+callMethod_space),其中,n为数据集大小;callMethod_space是所使用的方法的空间复杂度。
数据划分方法不仅决定了建树的时空消耗,也决定了相似性搜索的效率,其重要性可见一斑。目前UMAD中有四种不同的数据划分方法,包含Balance方法、Kmeans方法、DBSCAN方法、Trisection方法中的任意一种。但是它们的输入与输出都是一致的。
输入:
Task:本次进行数据划分的任务
Metric:该数据类型的距离计算方法
Numpartition:按pivot对本任务进行数据划分的数量
Pivot:进行本次数据划分的支撑点
Indictor:指示本次数据划分所使用的支撑点在pivot集合中的下标
cluster_Start:数据被划分为若干个类之后,类的起始标记
cluster_end:数据被划分为若干个类之后,类的终止标记
输出:带有类标签数据的任务。下面分别进行详细阐述。
Balance方法
此算法的关键点是对重复数据的处理。
算法的大体思想为:利用平衡的思想,找出使数据的numpartition-1个分位值和最大值,然后将所有数据点与找出来的numpartition个值进行比较,并给其赋值为合适的类标签,对于其中与找出来的值相等的数据点先暂时存放起来,然后根据方差赋予它们合适的类标签。
算法步骤:
1:计算全部数据点到该pivot的距离,并存入task中的getMetricData_Distance;
2:选取getMetricData_Distance中的第1,和大的值,并存入max_k_value;
3:对不与max_k_value相等的数据点标记类标签,将与max_k_value相等的数据点的下标存入equal_k_label;
4:将equal_k_label中的数据点根据方差标记为合适的类中;
5:将类标签的起始值和终止值分别赋值给cluster_Start和cluster_end。
算法的时间复杂度为O(5n+3Qn),其中,Q是个常数。
算法的空间复杂度为O(4n)。
Kmeans方法
K均值算法是数据挖掘中基于数据划分的一种算法,比较简单,首先,选择K个初始质心,其中K是用户指定的参数,即所期望的簇的个数。每个点指派到最近的质心,而指派到一个质心的点集为一个簇。然后,根据指派到簇的点,更新每个簇的质心。重复指派和更新步骤,直到簇不发生变化,或等价地,直到质心不发生变化。
在数据内部本身存在簇的情况下,k-means具有较好的聚类效果。该算法的关键点是初始点的选择和迭代终止条件。在UMAD中,初始点选在了总体数据集的 处,共选出了numpartition个初始点。
K-Means迭代的条件可以有:1、每个聚类的内部质心不在发生变化,这是最理想的情况;2、前后两次迭代,SSE的值相差小于某个阈值;3、迭代超过一定的次数。在UMAD中,我们使用的是条件2与条件3的结合。
算法步骤:
1、选择K个点作为初始质心;
2、repeat
3、将每个点指派到最近的质心,形成K个簇;
4、重新计算每个簇的质心;
5、until满足上述条件2与条件3。
K-means算法的时间复杂度为O(8n+3Q*n+7n*I),其中Q为常数。
k-means算法的空间复杂度为O(4n)。
DBSCAN方法
算法的聚类过程为:扫描整个数据集,找到任意一个核心点,对该核心点进行扩充。扩充的方法是寻找从该核心点出发的所有密度相连的数据点(注意是密度相连)。遍历该核心点的Eps邻域内的所有核心点(因为边界点是无法扩充的),寻找与这些数据点密度相连的点,直到没有可以扩充的数据点为止。最后聚类成的簇的边界节点都是非核心数据点。之后就是重新扫描数据集(不包括之前寻找到的簇中的任何数据点),寻找没有被聚类的核心点,再重复上面的步骤,对该核心点进行扩充直到数据集中没有新的核心点为止。数据集中没有包含在任何簇中的数据点就构成异常点。具体为:
输入:
D:数据集
Eps:半径
minPts:给定点在E领域内成为核心对象的最小领域点数
输出:聚类好的个簇
算法步骤:
1:从数据集中任意选取一个点p,并对其进行区域查询;
2:如果p是核心点,则查询p的所有密度可达的点,并标记成一个簇;
3:否则,p被标记为噪音点;
4:访问数据集中没有被处理过的点,重复执行上述步骤,直到所有的点被处理完毕。
DBSCAN的基本的时间复杂度是O(n*找出Eps领域中的点所需要的时间),其中n是点的个数。在最坏的情况下,时间复杂度为O(n2);在低维空间,有一些数据结构,如K-D树或R*-树,可以有效地检索特定点给定距离内的所有点,时间复杂度可以降到O(nlogn);采用构建哈希表的方法,时间复杂度可以降低到O(n)。在UMAD中,本发明中采用了哈希表的方式,从而提高了算法的效率,DBSCAN的时间复杂度为O(2n+regionQuerySize*n),其中regionQuerySize是Eps内邻居的个数。
DBSCAN的空间复杂度也是O(4n)。
DBSCAN算法的关键点在于Eps和minPts的确定,在UMAD中,采用了统计的方法,即随机抽样10000个数据,形成一个10000*9999的矩阵,然后对矩阵的每一行进行从小到大排序,对矩阵的每行选取第k(0<k<n)小的数值(属于泊松分布),然后用计算可得Eps。关于K的选择,可以利用实践数据来确定。关于minPts,本发明根据DBSCAN的发明者论文中的描述,给它赋值为4。
在程序实现中,去除了对重复点的处理。
对于异常点,根据已经形成簇的最大值和最小值将其分配到合适的簇中。
Trisection方法
判断用户给定的trisectionRadius*2是否小于将数据点三分的两个分位数数值的绝对值,如果是,则把使用这两个分位数将数据集三分;否则,找出在数据集中位数,并用减去trisectionRadius和加上trisectionRadius的值当做将数据集三分的两个数值点。
对于其中的重复数据根据方差判定最终如何划分。这种方法的处理方式与Balance的方式相似。
算法步骤:
1:计算本次任务中数据点到指定pivot的距离并存入getMetricData_Distance;
2:在getMetricData_Distance中,找到将数据集三分的两个分位数;
3:如果两个分位数差值的绝对值小于2*trisectionRadius,则找出在数据集中位数,并用减去trisectionRadius和加上trisectionRadius的值当做将数据集三分的两个数值点;
4:如果第一个分位数小于0,则将整个数据集标记为一个类,否则执行步骤5和6;
5:根据分位数将与分位数不同的数据点划分到合适的类中,将与数据点相同的数据点存入equal_k_label;
6:根据方差,将equal_k_label中的数据点划分到合适的类中。
Trisection算法的时间复杂度为O(4n+3Qn),其中Q为常数。
Trisection算法的空间复杂度为O(4n)。
四种不同的数据划分方法时空对比
时间上,DBSCAN>Kmeans>Balance>Trisection
空间上,DBSCAN=Kmeans=Balance=Trisection
搜索性能分析
利用四种数据划分方法建立索引树,并用相同的query进行相似性搜索,搜索结果与线性搜索结果进行对比,保证了程序的正确性。
在建树的过程中,不断的监控widows任务管理中内存的使用量,它一直保持平稳状态,且根据程序运行后的结果文件中内存消耗量(10万数据量,虚拟内存加物理内存的使用量在200M左右),可知,并没有内存泄露现象。
四种不同的数据划分方法针对不同的数据集各有优劣,但总体上,Trisection方法,Kmeans方法和DBSCAN方法的搜索效率要高于Balance方法。
Kmeans算法聚类完成之后,结果是中间的数据多,两边的数据少。虽然,kmeans中采用了选取分位数的方法,但是聚类结果并没有像Balance那样形成平衡划分,原因为:第一次聚类时得到平衡的结果再次进行求每个簇的质心时,两边簇的质心由于数据值的太小和太大,而被分别拉小和拉大了,而中间簇的质心则变化没有两边簇的大,从而使得中间簇的大小要大于两边簇的大小,而两边簇则是大小相当。
需要说明的是,利用Kmeans算法根据初始质心进行首次聚类时,每个簇的大小也并不均匀,而是两边小,中间大。这与当初的想法(像Balance一样达到均匀划分)不同。原因是:虽然找出了合理的分位数,但由于数据点分布的间隔不同。根据分布图可以帮助理解。
需要明确的一点是:平衡性好,不一定搜索效率就高。
Kmeans方法,与Balance相比较,距离比较次数有时大,有时小,总体情况是,随着搜索半径的增加,比较次数在某个半径之后就会超过Balance,因为在某个半径之后,需要搜索查询点所在划分的旁边的划分,而这两个划分的总数据量大于Balance的两个划分的数据量。具体比较次数与搜索点所落在的位置有关。次数大的情况:(1)查询点及其以r为半径的圆都落在了一个较大的划分之中。次数小的情况:(1)查询点及其以r为半径的圆都落在了一个较小的划分之中;(2)对于kmeans,查询点及其以r为半径的圆落在较大的划分M之中,而对于Balance,以r为半径的圆落在了两个划分之中,并且两个划分中的数据点数量之和大于M中数据点的个数。
Trisection方法根据指定的半径R不同而使得效果与Balance不同,当2R始终小于两个分位数的差值时,则Trisection方法与Balance方法搜索效果相同,否则Trisection方法的搜索效果更好一些。
DBSCAN方法由于自动确定聚类的个数而且项目实现中参数Eps的取值较小,所以使用该方法进行每一层数据划分的个数比其他方法要多,从而使得其搜索效率较高。
使用时,在windows系统下,本系统采用Visual Studio 2010开发,并且在程序运行过程中需要GSL库,所以,在程序运行之前需要首先在VS2010中,配置GSL。
Windows下配置GSL步骤如下:
1、点击菜单栏中的“DEBUG”→“cGeDBIT Properties”,或者右键单击Solution Explorer中的cGeDBIT→“Properties”,将会打开cGeDBIT Property Pages窗口。
2、选择左侧导航栏中的“C/C++”,在“Additional IncludeDirectories”中包含进“GSL\Include”。
3、选择左侧导航栏中的“Linker”,在“Additional LibraryDirectories”中包含进“GSL\lib”。
在Linux在,采用g++编译器进行编译,而且,在编译之前也需要配置GSL。
Linux下配置GSL步骤如下:
1、打开-/.bashrc
2、在文件末尾加上下面的代码:
export PATH=$PATH:YOUR_DIRECTORY/bin
export
C_INCLUDE_PATH=$C_INCLUDE_PATH:YOUR_DIRECTORY/include
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:YOUR_DIRECTORY/lib
export GSL_LD=YOUR_DIRECTORY/lib
配置完环境之后,则可编译程序,生成UMAD.exe文件,并为此可执行文件传递必要的参数(程序各个参数的含义与取值见“10缩略语和关键术语定义”),即可建立索引树,并完成针对该索引树的搜索,比如:
在window下,可以如是操作:
在选择左侧导航栏中的“Debugging”,在“Command Arguments”中添加运行参数;
在Linux下,则可以编辑makefile文件,对程序进行编译,假设编译完成之后,形成了可执行文件UMAD,则可以:
./UMAD--runOption buildandsearch--buildMode 0--searchMode 1--indexName vector_1000_20dim_0--nuniformvector-20dim-1m.txt--dim 20--v 2--f 3--psm fft--dpmbalanced--m 100--t vector--e MVPIndex--quniformvector-20dim-1m.txt--fq 0--l 10--a 1.5--i 0--y 0.25--ver 0--init 100000--F 100000--s 2000--res resultsFile.txt
运行程序前,需要把原始数据文件存放在SourceFiles/util/data/文件夹下。程序运行后,建立的索引文件将会存放在SourceFiles/util/database/文件夹下,建树信息和搜索信息存放在SourceFiles/util/results/文件夹下。
本发明技术方案带来的有益效果:
1、可扩展性强。框架中的selectOptimalPivots和partitionByOnePivot方法都单独成类,并将其中的方法变为纯虚函数,以方便继承。
2、可伸缩性好。很多数据划分方法中划分个数由numpartition参数指定,但有的方法根据自身的算法将数据划分为若干个部分,也就是说,没有明确的数据划分个数。而本算法框架可以适应这种情况。
3、优化Pivot序列算法,如Variance方法使在度量空间中相似性搜索的效率有所提高。
4、如果数据集内部存在着簇,则通过数据挖掘中聚类的方法如Kmeans和DBSCAN可以很容易发现它们,并将这些相似的数据点划分到一个部分里面,实践证明,减少了搜索时与数据集的比较次数,从而提高了相似性搜索效率。
5、Kmeans算法和DBSCAN算法都是首次应用在度量空间下的相似性搜索中,且证明了其高效性,这有利于相似性搜索领域与数据挖掘方向的结合。
6、根据数据集到支撑点分布首次提出的Trisection方法,也证明在很多情况下比原有方法的搜索效率要高。
Claims (9)
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-1个分位值和最大值,然后将所有数据点与找出来的numpartition个值进行比较,并给其赋值为合适的类标签,对于其中与找出来的值相等的数据点先暂时存放起来,然后根据方差赋予它们合适的类标签。
7.根据权利要求5所述的度量空间中逐个支撑点数据划分方法,其特征在于,所述的Kmeans方法为,选择K个初始质心;每个点指派到最近的质心,而指派到一个质心的点集为一个簇;根据指派到簇的点,更新每个簇的质心;重复指派和更新步骤,直到簇不发生变化,或等价地,直到质心不发生变化。
8.根据权利要求5所述的度量空间中逐个支撑点数据划分方法,其特征在于,所述的DBSCAN方法为,扫描整个数据集,找到任意一个核心点,对该核心点进行扩充;所述的扩充为寻找从该核心点出发的所有密度相连的数据点,遍历该核心点的Eps邻域内的所有核心点,寻找与这些数据点密度相连的点,直到没有可以扩充的数据点为止。
9.根据权利要求5所述的度量空间中逐个支撑点数据划分方法,其特征在于,所述的Trisection方法为,判断用户给定的trisectionRadius*2是否小于将数据点三分的两个分位数数值的绝对值,如果是,则把使用这两个分位数将数据集三分;否则,找出在数据集中位数,并用减去trisectionRadius和加上trisectionRadius的值当做将数据集三分的两个数值点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410472953.8A CN104281652B (zh) | 2014-09-16 | 2014-09-16 | 度量空间中逐个支撑点数据划分方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410472953.8A CN104281652B (zh) | 2014-09-16 | 2014-09-16 | 度量空间中逐个支撑点数据划分方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104281652A true CN104281652A (zh) | 2015-01-14 |
CN104281652B CN104281652B (zh) | 2017-10-17 |
Family
ID=52256525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410472953.8A Expired - Fee Related CN104281652B (zh) | 2014-09-16 | 2014-09-16 | 度量空间中逐个支撑点数据划分方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104281652B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991902A (zh) * | 2015-06-15 | 2015-10-21 | 浙江工商大学 | 利用空间切割技术的密度式聚类方法 |
CN105740371A (zh) * | 2016-01-27 | 2016-07-06 | 深圳大学 | 一种基于密度的增量聚类数据挖掘方法及系统 |
CN105989024A (zh) * | 2015-01-30 | 2016-10-05 | 北京陌陌信息技术有限公司 | 确定用户所在的位置区域的方法和装置 |
CN106503245A (zh) * | 2016-11-08 | 2017-03-15 | 深圳大学 | 一种支撑点集合的选择方法及装置 |
CN106528790A (zh) * | 2016-11-08 | 2017-03-22 | 深圳大学 | 度量空间中支撑点的选取方法及装置 |
CN106934696A (zh) * | 2017-03-15 | 2017-07-07 | 深圳大学 | 一种基于用户地理位置信息的产品推荐方法及系统 |
CN107480258A (zh) * | 2017-08-15 | 2017-12-15 | 佛山科学技术学院 | 一种基于多种支撑点的度量空间离群检测方法 |
CN107798338A (zh) * | 2017-09-28 | 2018-03-13 | 佛山科学技术学院 | 一种大数据密集支撑点快速选取方法 |
CN109425663A (zh) * | 2017-08-24 | 2019-03-05 | 湖南中烟工业有限责任公司 | 一种基于稀疏性假设分解与解析混合质谱的方法 |
CN113065036A (zh) * | 2021-04-14 | 2021-07-02 | 深圳大学 | 一种度量空间支撑点性能衡量方法、装置及相关组件 |
CN113282337A (zh) * | 2021-06-02 | 2021-08-20 | 深圳大学 | 度量空间最优完全划分索引寻找方法、装置及相关组件 |
CN113407799A (zh) * | 2021-06-22 | 2021-09-17 | 深圳大学 | 度量空间划分边界的性能衡量方法、装置及相关设备 |
CN113435501A (zh) * | 2021-06-25 | 2021-09-24 | 深圳大学 | 基于聚类的度量空间数据划分与性能衡量方法及相关组件 |
CN113590889A (zh) * | 2021-07-30 | 2021-11-02 | 深圳大学 | 度量空间索引树构建方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070250476A1 (en) * | 2006-04-21 | 2007-10-25 | Lockheed Martin Corporation | Approximate nearest neighbor search in metric space |
CN101324904A (zh) * | 2008-07-04 | 2008-12-17 | 西安交通大学 | 一种基于距离度量的设备故障案例高维索引结构技术 |
CN102890703A (zh) * | 2012-07-20 | 2013-01-23 | 浙江工业大学 | 一种网络异质多维标度方法 |
CN103455531A (zh) * | 2013-02-01 | 2013-12-18 | 深圳信息职业技术学院 | 一种支持高维数据实时有偏查询的并行索引方法 |
-
2014
- 2014-09-16 CN CN201410472953.8A patent/CN104281652B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070250476A1 (en) * | 2006-04-21 | 2007-10-25 | Lockheed Martin Corporation | Approximate nearest neighbor search in metric space |
CN101324904A (zh) * | 2008-07-04 | 2008-12-17 | 西安交通大学 | 一种基于距离度量的设备故障案例高维索引结构技术 |
CN102890703A (zh) * | 2012-07-20 | 2013-01-23 | 浙江工业大学 | 一种网络异质多维标度方法 |
CN103455531A (zh) * | 2013-02-01 | 2013-12-18 | 深圳信息职业技术学院 | 一种支持高维数据实时有偏查询的并行索引方法 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105989024A (zh) * | 2015-01-30 | 2016-10-05 | 北京陌陌信息技术有限公司 | 确定用户所在的位置区域的方法和装置 |
CN104991902A (zh) * | 2015-06-15 | 2015-10-21 | 浙江工商大学 | 利用空间切割技术的密度式聚类方法 |
CN105740371A (zh) * | 2016-01-27 | 2016-07-06 | 深圳大学 | 一种基于密度的增量聚类数据挖掘方法及系统 |
CN106503245B (zh) * | 2016-11-08 | 2019-07-26 | 深圳大学 | 一种支撑点集合的选择方法及装置 |
CN106503245A (zh) * | 2016-11-08 | 2017-03-15 | 深圳大学 | 一种支撑点集合的选择方法及装置 |
CN106528790A (zh) * | 2016-11-08 | 2017-03-22 | 深圳大学 | 度量空间中支撑点的选取方法及装置 |
CN106528790B (zh) * | 2016-11-08 | 2019-08-16 | 深圳大学 | 度量空间中支撑点的选取方法及装置 |
CN106934696A (zh) * | 2017-03-15 | 2017-07-07 | 深圳大学 | 一种基于用户地理位置信息的产品推荐方法及系统 |
CN107480258A (zh) * | 2017-08-15 | 2017-12-15 | 佛山科学技术学院 | 一种基于多种支撑点的度量空间离群检测方法 |
CN109425663B (zh) * | 2017-08-24 | 2021-06-15 | 湖南中烟工业有限责任公司 | 一种基于稀疏性假设分解与解析混合质谱的方法 |
CN109425663A (zh) * | 2017-08-24 | 2019-03-05 | 湖南中烟工业有限责任公司 | 一种基于稀疏性假设分解与解析混合质谱的方法 |
CN107798338A (zh) * | 2017-09-28 | 2018-03-13 | 佛山科学技术学院 | 一种大数据密集支撑点快速选取方法 |
CN107798338B (zh) * | 2017-09-28 | 2021-03-26 | 佛山科学技术学院 | 一种大数据密集支撑点快速选取方法 |
CN113065036B (zh) * | 2021-04-14 | 2021-11-16 | 深圳大学 | 一种度量空间支撑点性能衡量方法、装置及相关组件 |
CN113065036A (zh) * | 2021-04-14 | 2021-07-02 | 深圳大学 | 一种度量空间支撑点性能衡量方法、装置及相关组件 |
CN113282337A (zh) * | 2021-06-02 | 2021-08-20 | 深圳大学 | 度量空间最优完全划分索引寻找方法、装置及相关组件 |
CN113407799A (zh) * | 2021-06-22 | 2021-09-17 | 深圳大学 | 度量空间划分边界的性能衡量方法、装置及相关设备 |
CN113435501A (zh) * | 2021-06-25 | 2021-09-24 | 深圳大学 | 基于聚类的度量空间数据划分与性能衡量方法及相关组件 |
CN113435501B (zh) * | 2021-06-25 | 2023-07-07 | 深圳大学 | 基于聚类的度量空间数据划分与性能衡量方法及相关组件 |
CN113590889A (zh) * | 2021-07-30 | 2021-11-02 | 深圳大学 | 度量空间索引树构建方法、装置、计算机设备及存储介质 |
CN113590889B (zh) * | 2021-07-30 | 2023-12-22 | 深圳大学 | 度量空间索引树构建方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN104281652B (zh) | 2017-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104281652A (zh) | 度量空间中逐个支撑点数据划分方法 | |
Aridhi et al. | Big graph mining: Frameworks and techniques | |
Marcu et al. | Spark versus flink: Understanding performance in big data analytics frameworks | |
US10381106B2 (en) | Efficient genomic read alignment in an in-memory database | |
CN103559016B (zh) | 一种基于图形处理器并行计算的频繁子图挖掘方法 | |
Batarfi et al. | Large scale graph processing systems: survey and an experimental evaluation | |
Bogdanowicz et al. | Matching split distance for unrooted binary phylogenetic trees | |
CN101739281B (zh) | 用于机器集群的并行编程的方法和设备 | |
JP6296442B2 (ja) | インメモリデータベースにおける高効率のゲノムリードアラインメント | |
US20170011082A1 (en) | Mechanisms for merging index structures in molap while preserving query consistency | |
CN105260742A (zh) | 一种针对多种数据类型的统一分类方法及系统 | |
Flick et al. | A parallel connectivity algorithm for de Bruijn graphs in metagenomic applications | |
Selvitopi et al. | Distributed many-to-many protein sequence alignment using sparse matrices | |
Khemmarat et al. | Fast top-k path-based relevance query on massive graphs | |
TW201926081A (zh) | 資料轉移系統及方法 | |
CN102207935A (zh) | 用于创建索引的方法和系统 | |
Arefin et al. | Clustering nodes in large-scale biological networks using external memory algorithms | |
CN103699653A (zh) | 数据聚类方法和装置 | |
CN106372127B (zh) | 基于Spark的大规模图数据的多样性图排序方法 | |
Muttipati et al. | Analysis of Large Graph Partitioning and Frequent Subgraph Mining on Graph Data. | |
Horesh et al. | Designing an A* algorithm for calculating edit distance between rooted-unordered trees | |
Hu et al. | Dualtable: A hybrid storage model for update optimization in hive | |
Zhang et al. | Efficient parallel processing of distance join queries over distributed graphs | |
CN101923481A (zh) | 基于代码复制超级块的程序执行优化方法 | |
Yanagisawa et al. | Optimization of memory use of fragment extension-based protein–ligand docking with an original fast minimum cost flow algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171017 Termination date: 20200916 |