CN112286942B - 基于区域分级航线图算法的数据检索方法 - Google Patents

基于区域分级航线图算法的数据检索方法 Download PDF

Info

Publication number
CN112286942B
CN112286942B CN202011558738.1A CN202011558738A CN112286942B CN 112286942 B CN112286942 B CN 112286942B CN 202011558738 A CN202011558738 A CN 202011558738A CN 112286942 B CN112286942 B CN 112286942B
Authority
CN
China
Prior art keywords
level
data
point
calculating
algorithm
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.)
Active
Application number
CN202011558738.1A
Other languages
English (en)
Other versions
CN112286942A (zh
Inventor
温序铭
杨瀚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Sobey Digital Technology Co Ltd
Original Assignee
Chengdu Sobey Digital Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Sobey Digital Technology Co Ltd filed Critical Chengdu Sobey Digital Technology Co Ltd
Priority to CN202011558738.1A priority Critical patent/CN112286942B/zh
Publication of CN112286942A publication Critical patent/CN112286942A/zh
Application granted granted Critical
Publication of CN112286942B publication Critical patent/CN112286942B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于区域分级航线图算法的数据检索方法,包括步骤:通过迭代聚类算法对整个区间的数据进行区域划分,并主动选择分级航线图算法HNRG中每级的区域大小和整个航线图的分级数来初始化区域分级航线图,并用于构建索引;利用构建的索引来检索查询数据的近似最近邻等;本发明适用于高维大数据的快速近似检索,实现了快速、精确匹配高维数据,提高了数据检索效率。

Description

基于区域分级航线图算法的数据检索方法
技术领域
本发明涉及数据检索领域,更为具体的,涉及一种基于区域分级航线图算法的数据检索方法。
背景技术
随着互联网,多媒体,以及各种网络应用的高速发展,各种各样的数据影响着、服务着我们的生活,数据规模急速增长,在多个领域以及大企业内,数据规模已经积累到TB、PB甚至EB级别。数据在爆炸式增长的同时出现了一些新的特点,其中最突出的特征是数据的高维化。为了使数据能够更好的表达和记录人们生活的方方面面,许多领域的数据维数动辄成百上千。传统的数据检索方法想精确匹配高维数据难上加难,很难满足时间上的需求,最基本的数据检索过程效率低下,使得自然语言处理,机器学习等上层算法难以进行。为了解决此难题,学者们提出了很多的检索结构,各种树形结构如kd-tree,X-tree,M-tree等被提出。树形结构在数据维度低时效果优秀,但随着数据维数的增加,算法效率急剧下降,检索时间复杂度指数级上升,甚至不及线性扫描的速度,这就是许多检索算法无法克服的“维度灾难”(又称“维度诅咒”)问题。
又因为在工业上,多数应用并不需要完全精确的结果,学者们提出了近似最近邻检索(ANNS)的概念,允许查到结果与最优解存在一定的误差,以此来满足算法在实际应用中对查询效率的要求。目前,性能优秀的近似最近邻检索算法有很多,如annoy、panns、kgraph、faiss等算法和库都得到了广泛的应用。其中,分层通航小世界图(HNSW)算法被认为是近似最近邻检索算法中性能最优的算法,此算法是通航小世界图(NSW)的升级版,通过分层来实现由“粗”到“细”进行搜索,实现了对数级时间复杂度。然而,在实际应用中分层通航小世界图算法有两个明显的缺点:
(1)因为分层通航小世界图算法在构图阶段的层数选择依靠随机数来决定,所以此算法在构图阶段具有较大的随机性,导致此算法的性能有一定的波动。
(2)分层通航小世界图算法也是依靠随机函数选择插入到上层的数据,进一步加大了算法的随机性和性能波动。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于区域分级航线图算法的数据检索方法,适用于高维大数据的快速近似检索,实现了快速、精确匹配高维数据,提高了数据检索效率。
本发明的目的是通过以下方案实现的:
一种基于区域分级航线图算法的数据检索方法,包括步骤:通过迭代聚类算法对整个区间的数据进行区域划分,并主动选择区域分级航线图算法中每级的区域大小和分级数来初始化区域分级航线图,并用于构建索引;利用构建的索引来检索查询数据的近似最近邻。
进一步地,构建索引包括步骤:
S1,载入向量数据;
S2,计算区域分级航线图算法的分级数和每级的区域大小;
S3,计算区域分级航线图算法中每级的区域中的数据分布;
S4,将数据集插入到区域分级航线图算法中;
S5,保存索引文件。
进一步地,利用构建的索引检索查询数据的近似最近邻包括步骤:
S6,加载区域分级航线图算法的索引文件,获得区域分级航线图算法的索引结构;
S7,在区域分级航线图算法中,利用获得的索引结构检索查询数据的近似最近邻。
进一步地,在步骤S2中,向量数据集D作为最大区域,在数据插入阶段放在第0级,即第0级的区域大小为N,第1级的区域大小为第0级的1/T,第1级的区域大小N/T,第2级的区域大小为N/T2,第3级的区域大小为N/T3,以此类推,直到第j级的区域大小Nj<T为止,得到区域分级航线图算法的分级数L和每级的区域大小,T为预先设定的一个正整数比例值,用来表示区域大小的比例关系。
进一步地,步骤S3中,包括步骤:
S31,对第0级进行聚类和数据标记;
S32,对区域分级航线图算法的L级中除第0级以外的每一级各自进行聚类。
进一步地,在步骤S31中,包括步骤:
S311,将第1级的数据点作为第0级的类中心数据点,第2级的数据点作为第1级的 类中心数据点,第3级的数据点作为第2级的类中心数据点,以此类推规律,将下一级的数据 点为上一级的类中心点,记第1级的区域大小为N1,记第0级的类中心点的个数为p 0 ,且
Figure 158379DEST_PATH_IMAGE001
,N为第0级的区域大小,T为预先设定的一个正整数比例值,用来表示区 域大小的比例关系;
S312,将第0级的第一个数据点作为第一个类中心点
Figure 272966DEST_PATH_IMAGE002
S313,计算第0级其他数据点与第k个类中心点的距离之和
Figure 601310DEST_PATH_IMAGE003
Figure 117742DEST_PATH_IMAGE004
计算得到的最大的
Figure 958659DEST_PATH_IMAGE003
对应的数据点作为第
Figure 560542DEST_PATH_IMAGE005
个类中心点,直到
Figure 895839DEST_PATH_IMAGE006
;其 中,k=1,2,3...;
Figure 266778DEST_PATH_IMAGE007
为数据点;Sum表示求和函数;
S314,在第0级分别计算每个数据点
Figure 13017DEST_PATH_IMAGE007
Figure 836617DEST_PATH_IMAGE008
个类中心点的距离,找到与
Figure 772343DEST_PATH_IMAGE007
距离最近 的类中心点d*,并将数据点
Figure 997788DEST_PATH_IMAGE007
分到d*对应的类中;
S315,对每一个类,计算类中所有数据点的均值作为目标中心,选取类中距离目标中心最近的一个数据点作为这个类新的类中心点;
S316,重复执行步骤S315,直到所有的类中心点不变为止;
S317,对第0级的
Figure 180507DEST_PATH_IMAGE009
个类中心点
Figure 504785DEST_PATH_IMAGE010
,D是向量数据集,进 行标记f=1,标记表示此点能插入到图中的第1级,对第0级的非类中心点进行标记f=0,表示 此点只能插入到第0级;
步骤S32中,包括步骤:
S321,对被标记能插入到第1级的数据点即第0级的类中心点,进行聚类,计算出第1级的类中心点,标记这些数据点f=2;对标记f=2的数据点即第1级的类中心点,进行聚类,计算出第2级的类中心点,标记这些数据点f=3;以此类推,直到计算完能插入到第L-1级的数据点即第L-2级的类中心点,将其标记为f=L-1。
进一步地,在步骤S4中,包括步骤:
S41,插入第一个数据,在向量数据集D插入之前,区域分级航线图算法的分级数有L级,每级的数据为空,第一个数据没有邻居,直接插入到第0级;
S42,插入所有的数据。
进一步地,在步骤S42中,包括步骤:
S421,设不为空的最大级为第Y级,令l=Y,随机选择一个数据点作为第l级的起始 节点
Figure 165573DEST_PATH_IMAGE011
,计算数据点
Figure 245525DEST_PATH_IMAGE007
Figure 864725DEST_PATH_IMAGE011
的距离dis:
Figure 413649DEST_PATH_IMAGE012
S422,遍历
Figure 940445DEST_PATH_IMAGE011
的所有邻居节点,计算所有邻居节点与
Figure 874903DEST_PATH_IMAGE007
的距离,找到最近的一个 邻居节点
Figure 415737DEST_PATH_IMAGE013
Figure 435646DEST_PATH_IMAGE014
=
Figure 234975DEST_PATH_IMAGE013
,并更新距离
Figure 40251DEST_PATH_IMAGE015
Figure 1253DEST_PATH_IMAGE016
S423,重复步骤S422,直到
Figure 305196DEST_PATH_IMAGE015
不再变化,将
Figure 124860DEST_PATH_IMAGE014
作为下一级的起始节点
Figure 299489DEST_PATH_IMAGE017
,更 新l=l-1;
S424,重复执行步骤S422~S423,直到l=0,找到第0级的起始节点
Figure 165814DEST_PATH_IMAGE018
,令r的初始值 为0;
S425,在第r级计算数据点
Figure 425894DEST_PATH_IMAGE007
和第r级起始节点
Figure 786599DEST_PATH_IMAGE019
的距离、以及计算数据点
Figure 815735DEST_PATH_IMAGE007
与起 始节点
Figure 384120DEST_PATH_IMAGE019
的邻居节点的距离,找到最近的m个邻居节点作为候选节点;
S426,遍历m个候选节点的邻居节点,计算这些邻居节点与
Figure 616649DEST_PATH_IMAGE007
的距离,更新最近的m 个候选节点;
S427,重复执行步骤S426,直到m个候选节点不再变化为止;
S428,将数据点
Figure 827051DEST_PATH_IMAGE007
与m个候选节点连接,完成数据点
Figure 445114DEST_PATH_IMAGE007
在第r级的插入,更新r=r+1;
S429,重复执行步骤S425~S428,直到数据点
Figure 669553DEST_PATH_IMAGE007
的标记f<r为止,至此,数据点
Figure 638646DEST_PATH_IMAGE007
完 成了第0级到第f级的插入;
其中,dist表示欧式距离函数。
进一步地,步骤S7中,包括步骤:
S71,从区域分级航线图算法的第l=L-1级开始,随机选择一个起始节点
Figure 590421DEST_PATH_IMAGE014
;在第l 级,计算查询向量q和起始节点
Figure 594150DEST_PATH_IMAGE014
的距离dis:
Figure 517719DEST_PATH_IMAGE020
S72,计算查询向量q和起始节点
Figure 974108DEST_PATH_IMAGE014
的邻居节点的距离,找到最近的1个邻居节点
Figure 729574DEST_PATH_IMAGE013
Figure 338541DEST_PATH_IMAGE014
=
Figure 154050DEST_PATH_IMAGE013
,更新
Figure 628894DEST_PATH_IMAGE015
Figure 673205DEST_PATH_IMAGE021
S73,重复步骤S72,直到距离
Figure 385946DEST_PATH_IMAGE015
不再变化时,将此时的
Figure 372356DEST_PATH_IMAGE014
作为第l-1级的起始节 点
Figure 803338DEST_PATH_IMAGE022
,更新l=l-1;
S74,重复步骤S72~S73,直到l=0,计算出第0级的起始节点
Figure 651339DEST_PATH_IMAGE018
S75,在第0级计算查询向量
Figure 953007DEST_PATH_IMAGE023
和起始节点
Figure 375898DEST_PATH_IMAGE018
以及邻居的距离,找到最近的m个邻 居节点作为候选节点;
S76,遍历m个候选节点的邻居节点,计算这些邻居节点与q的距离,更新最近的m个候选节点;
S77,重复步骤S76,直到m个候选节点不再变化为止;
S78,返回m个候选节点的前n个作为近似最近邻检索的数据检索结果,n为能够指定的数据值,通过指定n的大小来改变近似最近邻检索的返回结果个数;
其中,dist表示欧式距离函数。
本发明的有益效果是:
本发明适用于高维大数据的快速近似检索,实现了快速、精确匹配高维数据,提高了数据检索效率。具体的,通过设计区域分级航线图算法HNRG,并将设计好的算法应用于索引构建和数据检索查询,通过主动选择航线图的分级数和每级的区域大小及数据分布,与应用HNSW的数据检索效果相比,解决了在近似最近邻检索领域中各种应用基于图的算法的方案都存在的随机性大,性能不稳定的问题,使近似最近邻检索的性能更稳定,更高效。其中,索引构建的过程每一步都没有使用随机选择,加上迭代聚类算法使用了距离判断的方法主动选择初始类中心,这些处理步骤使改进后的算法性能十分稳定,尤其适用于高维大数据的快速近似检索,同时,通过分级将每级的数据规模极大减小,搜索时可以快速从顶级向下找到最需要的数据区域,极大的加速了数据查找过程,提高了数据查找精度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例利用区域分级航线图算法构建索引的流程图;
图2为使用区域分级航线图算法进行近似最近邻检索的流程图。
具体实施方式
本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。
如图1,2所示,一种基于区域分级航线图算法的数据检索方法,包括步骤:通过迭代聚类算法对整个区间的数据进行区域划分,并主动选择区域分级航线图算法中每级的区域大小和分级数来初始化区域分级航线图,并用于构建索引;利用构建的索引来检索查询数据的近似最近邻。
进一步地,构建索引包括步骤:
S1,载入向量数据;
S2,计算区域分级航线图算法的分级数和每级的区域大小;
S3,计算区域分级航线图算法中每级的区域中的数据分布;
S4,将数据集插入到区域分级航线图算法中;
S5,保存索引文件。
进一步地,利用构建的索引检索查询数据的近似最近邻包括步骤:
S6,加载区域分级航线图算法的索引文件,获得区域分级航线图算法的索引结构;
S7,在区域分级航线图算法中,利用获得的索引结构检索查询数据的近似最近邻。
进一步地,在步骤S2中,向量数据集D作为最大区域,在数据插入阶段放在第0级,即第0级的区域大小为N,第1级的区域大小为第0级的1/T,第1级的区域大小N/T,第2级的区域大小为N/T2,第3级的区域大小为N/T3,以此类推,直到第j级的区域大小Nj<T为止,得到区域分级航线图算法的分级数L和每级的区域大小,T为预先设定的一个正整数比例值,用来表示区域大小的比例关系。
进一步地,步骤S3中,包括步骤:
S31,对第0级进行聚类和数据标记;
S32,对区域分级航线图算法的L级中除第0级以外的每一级各自进行聚类。
进一步地,在步骤S31中,包括步骤:
S311,将第1级的数据点作为第0级的类中心数据点,第2级的数据点作为第1级的 类中心数据点,第3级的数据点作为第2级的类中心数据点,以此类推规律,将下一级的数据 点为上一级的类中心点,记第1级的区域大小为N1,记第0级的类中心点的个数为p 0 ,且
Figure 28597DEST_PATH_IMAGE001
,N为第0级的区域大小,T为预先设定的一个正整数比例值,用来表示区 域大小的比例关系;
S312,将第0级的第一个数据点作为第一个类中心点
Figure 411780DEST_PATH_IMAGE002
S313,计算第0级其他数据点与第k个类中心点的距离之和
Figure 99113DEST_PATH_IMAGE003
Figure 427327DEST_PATH_IMAGE004
计算得到的最大的
Figure 114791DEST_PATH_IMAGE003
对应的数据点作为第
Figure 819442DEST_PATH_IMAGE005
个类中心点,直到
Figure 361282DEST_PATH_IMAGE006
;其 中,k=1,2,3...;
Figure 860396DEST_PATH_IMAGE007
为数据点;Sum表示求和函数;
S314,在第0级分别计算每个数据点
Figure 238419DEST_PATH_IMAGE007
Figure 950023DEST_PATH_IMAGE008
个类中心点的距离,找到与
Figure 408686DEST_PATH_IMAGE007
距离最近 的类中心点d*,并将数据点
Figure 829434DEST_PATH_IMAGE007
分到d*对应的类中;
S315,对每一个类,计算类中所有数据点的均值作为目标中心,选取类中距离目标中心最近的一个数据点作为这个类新的类中心点;
S316,重复执行步骤S315,直到所有的类中心点不变为止;
S317,对第0级的
Figure 678442DEST_PATH_IMAGE009
个类中心点
Figure 459316DEST_PATH_IMAGE010
,D是向量数据集,进 行标记f=1,标记表示此点能插入到图中的第1级,对第0级的非类中心点进行标记f=0,表示 此点只能插入到第0级;
步骤S32中,包括步骤:
S321,对被标记能插入到第1级的数据点即第0级的类中心点,进行聚类,计算出第1级的类中心点,标记这些数据点f=2;对标记f=2的数据点即第1级的类中心点,进行聚类,计算出第2级的类中心点,标记这些数据点f=3;以此类推,直到计算完能插入到第L-1级的数据点即第L-2级的类中心点,将其标记为f=L-1。
进一步地,在步骤S4中,包括步骤:
S41,插入第一个数据,在向量数据集D插入之前,区域分级航线图算法的分级数有L级,每级的数据为空,第一个数据没有邻居,直接插入到第0级;
S42,插入所有的数据。
进一步地,在步骤S42中,包括步骤:
S421,设不为空的最大级为第Y级,令l=Y,随机选择一个数据点作为第l级的起始 节点
Figure 975748DEST_PATH_IMAGE011
,计算数据点
Figure 697143DEST_PATH_IMAGE007
Figure 33446DEST_PATH_IMAGE011
的距离dis:
Figure 618011DEST_PATH_IMAGE012
S422,遍历
Figure 739682DEST_PATH_IMAGE011
的所有邻居节点,计算所有邻居节点与
Figure 751500DEST_PATH_IMAGE007
的距离,找到最近的一个 邻居节点
Figure 371838DEST_PATH_IMAGE013
Figure 963356DEST_PATH_IMAGE014
=
Figure 736271DEST_PATH_IMAGE013
,并更新距离
Figure 918991DEST_PATH_IMAGE015
Figure 495466DEST_PATH_IMAGE016
S423,重复步骤S422,直到
Figure 172566DEST_PATH_IMAGE015
不再变化,将
Figure 252517DEST_PATH_IMAGE014
作为下一级的起始节点
Figure 871717DEST_PATH_IMAGE017
,更 新l=l-1;
S424,重复执行步骤S422~S423,直到l=0,找到第0级的起始节点
Figure 669909DEST_PATH_IMAGE018
,令r的初始值 为0;
S425,在第r级计算数据点
Figure 616612DEST_PATH_IMAGE007
和第r级起始节点
Figure 816649DEST_PATH_IMAGE019
的距离、以及计算数据点
Figure 606751DEST_PATH_IMAGE007
与起 始节点
Figure 626659DEST_PATH_IMAGE019
的邻居节点的距离,找到最近的m个邻居节点作为候选节点;
S426,遍历m个候选节点的邻居节点,计算这些邻居节点与
Figure 911141DEST_PATH_IMAGE007
的距离,更新最近的m 个候选节点;
S427,重复执行步骤S426,直到m个候选节点不再变化为止;
S428,将数据点
Figure 965685DEST_PATH_IMAGE007
与m个候选节点连接,完成数据点
Figure 661108DEST_PATH_IMAGE007
在第r级的插入,更新r=r+1;
S429,重复执行步骤S425~S428,直到数据点
Figure 433892DEST_PATH_IMAGE007
的标记f<r为止,至此,数据点
Figure 787644DEST_PATH_IMAGE007
完 成了第0级到第f级的插入;
其中,dist表示欧式距离函数。
进一步地,步骤S7中,包括步骤:
S71,从区域分级航线图算法的第l=L-1级开始,随机选择一个起始节点
Figure 775323DEST_PATH_IMAGE014
;在第l 级,计算查询向量q和起始节点
Figure 438386DEST_PATH_IMAGE014
的距离dis:
Figure 446268DEST_PATH_IMAGE020
S72,计算查询向量q和起始节点
Figure 118558DEST_PATH_IMAGE014
的邻居节点的距离,找到最近的1个邻居节点
Figure 882115DEST_PATH_IMAGE013
Figure 670073DEST_PATH_IMAGE014
=
Figure 214187DEST_PATH_IMAGE013
,更新
Figure 627851DEST_PATH_IMAGE015
Figure 996647DEST_PATH_IMAGE021
S73,重复步骤S72,直到距离
Figure 204774DEST_PATH_IMAGE015
不再变化时,将此时的
Figure 173867DEST_PATH_IMAGE014
作为第l-1级的起始节 点
Figure 391222DEST_PATH_IMAGE022
,更新l=l-1;
S74,重复步骤S72~S73,直到l=0,计算出第0级的起始节点
Figure 676841DEST_PATH_IMAGE018
S75,在第0级计算查询向量
Figure 321449DEST_PATH_IMAGE023
和起始节点
Figure 777838DEST_PATH_IMAGE018
以及邻居的距离,找到最近的m个邻 居节点作为候选节点;
S76,遍历m个候选节点的邻居节点,计算这些邻居节点与q的距离,更新最近的m个候选节点;
S77,重复步骤S76,直到m个候选节点不再变化为止;
S78,返回m个候选节点的前n个作为近似最近邻检索的数据检索结果,n为能够指定的数据值,通过指定n的大小来改变近似最近邻检索的返回结果个数;
其中,dist表示欧式距离函数。
在实施例中,可以通过指定n的大小来改变近似最近邻检索返回结果的个数,通过HNRG算法,实现了更高效,更稳定的检索效果。
在本发明的其他实施例中,可以提供一种基于区域分级航线图算法的数据检索方法,图1利用区域分级航线图算法构建索引的流程图,图2表示使用区域分级航线图算法进行近似最近邻检索的流程图。该方案的索引构建过程中,可以通过迭代聚类主动选择航线图的分级数和每一级的区域大小以及数据值,每一步都没有使用随机选择,迭代聚类算法使用了距离判断的方法主动选择初始类中心,这些方法使基于区域分级航线图算法的数据检索方法的性能十分稳定。同时,在进行近似最近邻数据检索过程中,基于区域分级航线图算法的数据检索方法通过分级将每级的数据规模极大减小,搜索时可以快速从顶级向下找到最需要的区域,极大的加速了查找过程,提高了查找精度等,此处不再赘述。
本发明中的区域分级航线图算法为自定义名称,其主要原理为通过区域划分将图分为不同数据区域,类比为国家的不同省份,分级将数据量逐级减小,级之间的关系类比于省份和市,基以此命令区域分级,在区域分级航线图中检索类似飞机航线一样,可以先定位到某个区域,在深入下一级搜索,即类似航线先飞到某一个省,再定位市,再定位县,基以此为思路命令航线图算法,综上提出的一种区域分级航线图算法,以及具体所提出区域分级航线图算法的数据检索方法的具体实施步骤。
本发明功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,在一台计算机设备(可以是个人计算机,服务器,或者网络设备等)以及相应的软件中执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、或者光盘等各种可以存储程序代码的介质,进行测试或者实际的数据在程序实现中存在于只读存储器(Random Access Memory,RAM)、随机存取存储器(Random Access Memory,RAM)等。
除以上实施例以外,本领域技术人员根据上述公开内容获得启示或利用相关领域的知识或技术进行改动获得其他实施例,各个实施例的特征可以互换或替换,本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

Claims (5)

1.一种基于区域分级航线图算法的数据检索方法,其特征在于,包括步骤:通过迭代聚类算法对整个区间的数据进行区域划分,并主动选择区域分级航线图算法中每级的区域大小和分级数来初始化区域分级航线图,并用于构建索引;利用构建的索引来检索查询数据的近似最近邻;构建索引包括步骤:
S1,载入向量数据;
S2,计算区域分级航线图算法的分级数和每级的区域大小;
S3,计算区域分级航线图算法中每级的区域中的数据分布;
S4,将数据集插入到区域分级航线图算法中;
S5,保存索引文件;
在步骤S1中,载入向量数据集D,获得向量数据集D的数据个数N;
在步骤S2中,向量数据集D作为最大区域,在数据插入阶段放在第0级,即第0级的区域大小为N,第1级的区域大小为第0级的1/T,第1级的区域大小N/T,第2级的区域大小为N/T2,第3级的区域大小为N/T3,以此类推,直到第j级的区域大小Nj<T为止,得到区域分级航线图算法的分级数L和每级的区域大小,T为预先设定的一个正整数比例值,用来表示区域大小的比例关系;
在步骤S3中,包括步骤:
S31,对第0级进行聚类和数据标记;
S32,对区域分级航线图算法的L级中除第0级以外的每一级各自进行聚类;
在步骤S31中,包括步骤:
S311,将第1级的数据点作为第0级的类中心数据点,第2级的数据点作为第1级的类中心数据点,第3级的数据点作为第2级的类中心数据点,以此类推规律,将下一级的数据点为上一级的类中心点,记第1级的区域大小为N1,记第0级的类中心点的个数为p 0 ,且
Figure DEST_PATH_IMAGE001
,N为第0级的区域大小,T为预先设定的一个正整数比例值,用来表示区域大小的比例关系;
S312,将第0级的第一个数据点作为第一个类中心点
Figure DEST_PATH_IMAGE002
S313,计算第0级其他数据点与第k个类中心点的距离之和
Figure DEST_PATH_IMAGE003
Figure DEST_PATH_IMAGE004
计算得到的最大的
Figure 649014DEST_PATH_IMAGE003
对应的数据点作为第
Figure DEST_PATH_IMAGE005
个类中心点,直到
Figure DEST_PATH_IMAGE006
;其中,k=1,2,3...;
Figure DEST_PATH_IMAGE007
为数据点;Sum表示求和函数;
S314,在第0级分别计算每个数据点
Figure 690788DEST_PATH_IMAGE007
Figure DEST_PATH_IMAGE008
个类中心点的距离,找到与
Figure 532842DEST_PATH_IMAGE007
距离最近的类中心点d*,并将数据点
Figure 396893DEST_PATH_IMAGE007
分到d*对应的类中;
S315,对每一个类,计算类中所有数据点的均值作为目标中心,选取类中距离目标中心最近的一个数据点作为这个类新的类中心点;
S316,重复执行步骤S315,直到所有的类中心点不变为止;
S317,对第0级的
Figure DEST_PATH_IMAGE009
个类中心点
Figure DEST_PATH_IMAGE010
,D是向量数据集,进行标记f=1,标记表示此点能插入到图中的第1级,对第0级的非类中心点进行标记f=0,表示此点只能插入到第0级;
步骤S32中,包括步骤:
S321,对被标记能插入到第1级的数据点即第0级的类中心点,进行聚类,计算出第1级的类中心点,标记这些数据点f=2;对标记f=2的数据点即第1级的类中心点,进行聚类,计算出第2级的类中心点,标记这些数据点f=3;以此类推,直到计算完能插入到第L-1级的数据点即第L-2级的类中心点,将其标记为f=L-1。
2.根据权利要求1所述的基于区域分级航线图算法的数据检索方法,其特征在于,利用构建的索引检索查询数据的近似最近邻包括步骤:
S6,加载区域分级航线图算法的索引文件,获得区域分级航线图算法的索引结构;
S7,在区域分级航线图算法中,利用获得的索引结构检索查询数据的近似最近邻。
3.根据权利要求1所述的基于区域分级航线图算法的数据检索方法,其特征在于,在步骤S4中,包括步骤:
S41,插入第一个数据,在向量数据集D插入之前,区域分级航线图算法的分级数有L级,每级的数据为空,第一个数据没有邻居,直接插入到第0级;
S42,插入所有的数据。
4.根据权利要求3所述的基于区域分级航线图算法的数据检索方法,其特征在于,在步骤S42中,包括步骤:
S421,设不为空的最大级为第Y级,令l=Y,随机选择一个数据点作为第l级的起始节点
Figure DEST_PATH_IMAGE011
,计算数据点
Figure 338829DEST_PATH_IMAGE007
Figure 754766DEST_PATH_IMAGE011
的距离dis:
Figure DEST_PATH_IMAGE012
S422,遍历
Figure 84117DEST_PATH_IMAGE011
的所有邻居节点,计算所有邻居节点与
Figure 751858DEST_PATH_IMAGE007
的距离,找到最近的一个邻居节点
Figure DEST_PATH_IMAGE013
Figure DEST_PATH_IMAGE014
=
Figure 76529DEST_PATH_IMAGE013
,并更新距离
Figure DEST_PATH_IMAGE015
Figure DEST_PATH_IMAGE016
S423,重复步骤S422,直到
Figure 601051DEST_PATH_IMAGE015
不再变化,将
Figure 948856DEST_PATH_IMAGE014
作为下一级的起始节点
Figure DEST_PATH_IMAGE017
,更新l=l-1;
S424,重复执行步骤S422~S423,直到l=0,找到第0级的起始节点
Figure DEST_PATH_IMAGE018
,令r的初始值为0;
S425,在第r级计算数据点
Figure 219956DEST_PATH_IMAGE007
和第r级起始节点
Figure DEST_PATH_IMAGE019
的距离、以及计算数据点
Figure 805658DEST_PATH_IMAGE007
与起始节点
Figure 563399DEST_PATH_IMAGE019
的邻居节点的距离,找到最近的m个邻居节点作为候选节点;
S426,遍历m个候选节点的邻居节点,计算这些邻居节点与
Figure 539445DEST_PATH_IMAGE007
的距离,更新最近的m个候选节点;
S427,重复执行步骤S426,直到m个候选节点不再变化为止;
S428,将数据点
Figure 408044DEST_PATH_IMAGE007
与m个候选节点连接,完成数据点
Figure 520356DEST_PATH_IMAGE007
在第r级的插入,更新r=r+1;
S429,重复执行步骤S425~S428,直到数据点
Figure 448998DEST_PATH_IMAGE007
的标记f<r为止,至此,数据点
Figure 646761DEST_PATH_IMAGE007
完成了第0级到第f级的插入;
其中,dist表示欧式距离函数。
5.根据权利要求2所述的基于区域分级航线图算法的数据检索方法,其特征在于,步骤S7中,包括步骤:
S71,从区域分级航线图算法的第l=L-1级开始,随机选择一个起始节点
Figure 319051DEST_PATH_IMAGE014
;在第l级,计算查询向量q和起始节点
Figure 285870DEST_PATH_IMAGE014
的距离dis:
Figure DEST_PATH_IMAGE020
S72,计算查询向量q和起始节点
Figure 119834DEST_PATH_IMAGE014
的邻居节点的距离,找到最近的1个邻居节点
Figure 663948DEST_PATH_IMAGE013
Figure 15295DEST_PATH_IMAGE014
=
Figure 507061DEST_PATH_IMAGE013
,更新
Figure 43084DEST_PATH_IMAGE015
Figure DEST_PATH_IMAGE021
S73,重复步骤S72,直到距离
Figure 746598DEST_PATH_IMAGE015
不再变化时,将此时的
Figure 760690DEST_PATH_IMAGE014
作为第l-1级的起始节点
Figure DEST_PATH_IMAGE022
,更新l=l-1;
S74,重复步骤S72~S73,直到l=0,计算出第0级的起始节点
Figure 967681DEST_PATH_IMAGE018
S75,在第0级计算查询向量
Figure DEST_PATH_IMAGE023
和起始节点
Figure 471343DEST_PATH_IMAGE018
以及邻居的距离,找到最近的m个邻居节点作为候选节点;
S76,遍历m个候选节点的邻居节点,计算这些邻居节点与q的距离,更新最近的m个候选节点;
S77,重复步骤S76,直到m个候选节点不再变化为止;
S78,返回m个候选节点的前n个作为近似最近邻检索的数据检索结果,n为能够指定的数据值,通过指定n的大小来改变近似最近邻检索的返回结果个数;
其中,dist表示欧式距离函数。
CN202011558738.1A 2020-12-25 2020-12-25 基于区域分级航线图算法的数据检索方法 Active CN112286942B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011558738.1A CN112286942B (zh) 2020-12-25 2020-12-25 基于区域分级航线图算法的数据检索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011558738.1A CN112286942B (zh) 2020-12-25 2020-12-25 基于区域分级航线图算法的数据检索方法

Publications (2)

Publication Number Publication Date
CN112286942A CN112286942A (zh) 2021-01-29
CN112286942B true CN112286942B (zh) 2021-04-09

Family

ID=74426336

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011558738.1A Active CN112286942B (zh) 2020-12-25 2020-12-25 基于区域分级航线图算法的数据检索方法

Country Status (1)

Country Link
CN (1) CN112286942B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126572A (zh) * 2016-06-17 2016-11-16 中国科学院自动化研究所 基于区域验证的图像检索方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200279133A1 (en) * 2017-04-04 2020-09-03 Hailo Technologies Ltd. Structured Sparsity Guided Training In An Artificial Neural Network
CN107729348A (zh) * 2017-08-23 2018-02-23 浙江大学 一种基于辐射伸展图的高维数据的近似最近邻检索方法及检索系统
CN108710626A (zh) * 2018-03-20 2018-10-26 浙江大学 一种基于卫星系图的高维数据的近似最近邻检索方法及检索系统
CN110008256A (zh) * 2019-04-09 2019-07-12 杭州电子科技大学 一种基于分层可导航小世界图的近似最近邻搜索方法
CN110909197A (zh) * 2019-11-04 2020-03-24 深圳力维智联技术有限公司 一种高维特征的处理方法和装置
CN111461753B (zh) * 2020-04-17 2022-05-17 支付宝(杭州)信息技术有限公司 智能客服场景中的知识点召回方法及装置
CN111737386A (zh) * 2020-06-03 2020-10-02 杭州电子科技大学 一种应用于大规模高维数据的两阶段近邻图搜索方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106126572A (zh) * 2016-06-17 2016-11-16 中国科学院自动化研究所 基于区域验证的图像检索方法

Also Published As

Publication number Publication date
CN112286942A (zh) 2021-01-29

Similar Documents

Publication Publication Date Title
CN108920720B (zh) 基于深度哈希和gpu加速的大规模图像检索方法
Eppstein et al. The skip quadtree: a simple dynamic data structure for multidimensional data
CN104199827B (zh) 基于局部敏感哈希的大规模多媒体数据的高维索引方法
US9009199B2 (en) Data mining using an index tree created by recursive projection of data points on random lines
EP2069979B1 (en) Dynamic fragment mapping
KR102305568B1 (ko) 일정한 처리 시간 내에 k개의 극값을 찾는 방법
CN102693266B (zh) 搜索数据库的方法、生成索引结构的导航设备和方法
CN110674326A (zh) 一种基于多项式分布学习的神经网络结构检索方法
KR20230043958A (ko) 3 차원 재구성 중 이미지 그루핑 방법 및 장치, 전자 기기 및 컴퓨터 판독 가능한 저장매체
CN110097581B (zh) 基于点云配准icp算法构建k-d树的方法
KR20020017219A (ko) 대용량 데이터베이스에서의 고속에 의한 다해상도의 최적탐색방법
Brecheisen et al. Multi-step density-based clustering
CN112286942B (zh) 基于区域分级航线图算法的数据检索方法
CN108304384B (zh) 拆词方法及设备
CN108920705A (zh) 一种知识点标识的编码方法及装置
Nguyen et al. A method for efficient clustering of spatial data in network space
Chum et al. Web scale image clustering
KR102006283B1 (ko) 패스트맵을 이용한 데이터셋의 m-트리 적재방법
CN110866088B (zh) 一种语料库之间的快速全文检索方法及系统
Hajebi et al. An efficient index for visual search in appearance-based SLAM
Liu et al. Efficient segmentation for region-based image retrieval using edge integrated minimum spanning tree
Hou Clustering with obstacle entities
JP3615439B2 (ja) 類似特徴量の検索方法,その検索装置およびその検索プログラム記録媒体
Daciuk et al. Natural Language Dictionaries Implemented as Finite Automata.
JP3639480B2 (ja) 類似データ検索方法,類似データ検索装置,および類似データ検索用プログラム記録媒体

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant