CN114510506A - 一种基于查询点的流数据簇搜索方法 - Google Patents

一种基于查询点的流数据簇搜索方法 Download PDF

Info

Publication number
CN114510506A
CN114510506A CN202210149443.1A CN202210149443A CN114510506A CN 114510506 A CN114510506 A CN 114510506A CN 202210149443 A CN202210149443 A CN 202210149443A CN 114510506 A CN114510506 A CN 114510506A
Authority
CN
China
Prior art keywords
cluster
identifier
point
neighbors
data
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.)
Pending
Application number
CN202210149443.1A
Other languages
English (en)
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.)
Northeastern University China
Original Assignee
Northeastern University China
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 Northeastern University China filed Critical Northeastern University China
Priority to CN202210149443.1A priority Critical patent/CN114510506A/zh
Publication of CN114510506A publication Critical patent/CN114510506A/zh
Pending legal-status Critical Current

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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于查询点的流数据簇搜索方法,涉及流数据聚类技术领域。该方法包括利用QALSH算法确定到达流数据点的近邻的步骤和利用近邻以扩张的方式搜索出某查询点所属簇的全部数据点的步骤。该方法针对于流数据,能够基于查询点快速且准确地搜索该查询点所属的簇,即该查询点所属簇的所有数据点。实现的过程中,那些与该查询点不属于同一个簇的数据点不会参与到簇搜索过程中,所以既能实现应用需求,又能节省计算资源。另外,在进行簇搜索的过程中,利用数据点之间的近邻关系可以确定出簇中哪些数据点距离查询点更近,哪些数据点距离查询点稍远,这样对于那些距离更近的数据点可以做优先推荐,提高推荐的合理性和实用性。

Description

一种基于查询点的流数据簇搜索方法
技术领域
本发明涉及流数据聚类技术领域,具体涉及一种基于查询点的流数据簇搜索方法。
背景技术
流数据是按照时间顺序不断到达的序列,比如文档序列、向量序列等。这类数据通常具有如下几个特点:数据点不断到来、数据点被处理后会被丢弃、数据点的分布随时间不断发生变化。这类数据已经成为信息社会的主要数据形式之一,如网络监控数据、传感器观测数据、气象测控数据等。
当前,如何在流数据上基于查询点实现快速且准确的簇搜索是一个热门的问题,典型的应用场景为在移动应用上实现局部搜索从而提供推荐功能,比如手机APP上做周边餐厅的推荐、出租车的分派等等。以出租车的分派为例,出租车分派是叫车软件例如滴滴的一个基本服务功能,该功能的实现就是根据用户的当前定位信息快速且准确地锁定其附近的出租车。在这个应用场景中,不管是用户还是出租车,其在空间中都对应一个二维坐标,当前用户就是查询点,当前用户与其周边出租车共同构成一个簇。如果能通过算法搜索到这个簇,那么软件就可以向该簇中的出租车司机推送该用户的打车请求。
针对流数据做聚类的现有各种研究遵循的思路都是如何提升聚类的性能或者效率,其实现的最终效果都是对整个数据集进行簇划分,该过程的结果是获得多个簇。但是,如果应用需求是根据数据集中的某个数据点即查询点直接获取其所属的、独立的这个簇,即针对查询点搜索其所属簇,现有的研究很少涉及。
发明内容
针对上述现有技术存在的不足,本发明提供了一种基于查询点的流数据簇搜索方法,旨在提供一种基于QALSH(Query-Aware Locality-Sensitive Hashing,基于查询点的局部敏感哈希)算法和密度聚类针对查询点做簇搜索的方法,针对于某个查询点能够快速且准确地寻找到该查询点所属的簇。
为实现上述目的,本发明提供以下的技术方案:
一种基于查询点的流数据簇搜索方法,该方法包括如下步骤:
利用QALSH算法确定到达流数据点的近邻;
利用近邻以扩张的方式搜索出某查询点所属簇的全部数据点。
进一步地,根据所述的流数据簇搜索方法,在所述利用QALSH算法确定到达流数据点的近邻步骤之前还包括初始化QALSH算法的相关参数的步骤。
进一步地,根据所述的流数据簇搜索方法,所述QALSH算法的相关参数包括搜索半径r*、哈希向量个数m、哈希向量维度d、近似比率c、哈希函数和桶宽w*。
进一步地,根据所述的流数据簇搜索方法,定义哈希函数为
Figure BDA0003509729650000021
其中
Figure BDA0003509729650000022
是代表查询点o的d维向量;
Figure BDA0003509729650000023
是d维的哈希向量,哈希向量
Figure BDA0003509729650000024
的每一个分量取自N(0,1)分布。
进一步地,根据所述的流数据簇搜索方法,所述桶宽w*初始化的初始值基于搜索半径r*和QALSH函数求解获得。
进一步地,根据所述的流数据簇搜索方法,所述利用QALSH算法确定到达流数据点的近邻包括如下步骤:
步骤2.1:获取当前到达的流数据点p,并将点p作为查询点;
步骤2.2:利用QALSH算法确定查询点p在预设的搜索半径r*范围内的近邻,获得点p的近邻集Np
步骤2.3:基于数据点间欧氏距离的对称性,遍历近邻集Np中的每一个点进行近邻的更新:针对于Np中的每一个近邻点ni,i∈{1,2,…,k},更新其所维护的近邻集
Figure BDA0003509729650000025
为增加点p到集合
Figure BDA0003509729650000026
中,即
Figure BDA0003509729650000027
进一步地,根据所述的流数据簇搜索方法,所述利用近邻以扩张的方式搜索出某查询点所属簇的全部数据点的方法为:
首先将查询点p所属的簇表示为集合Cp,用于收集p所属簇的所有数据点,集合Cp中的每一个元素是一个二元组(q,flag),其中二元组的第一个分量q表示被判定属于该簇的数据点;第二个分量flag是一个标识变量,用于标识q的近邻集是否被访问过,若标识q的近邻集未被访问过则flag为标识符1,若标识q的近邻集开始被访问或者访问已完成则flag为标识符2;
然后不断地从Cp中获取flag是标识符1的元素,对查询点做簇搜索,找到查询点p所属簇的所有数据点,具体方法为:初始时仅将元素(p,标识符1)添加到Cp中,然后取出元组(p,标识符1)并获取p的近邻集合Np,遍历Np中的每个数据点,将Np中未存在于Cp中的数据点以flag设置为标识符1的二元组形式并入Cp中,且在开始遍历Np或者Np被遍历完成的时刻将元组(p,标识符1)更新为元组(p,标识符2),之后通过迭代的方式,不断从Cp中获取flag为标识符1的元组,并把这些元组的第一个分量所代表的点的近邻以(该数据点,标识符1)二元组形式并入Cp中,且在开始遍历近邻或者近邻被遍历完成的时刻将这些元组的元素flag进行相应的更新即标识符1更新为标识符2,整个迭代过程持续至Cp中不存在flag为标识符1的元组,迭代过程结束的时候,Cp中各个元组的第一个元素构成的集合就是要求的查询点p所属簇中的点集。
总体而言,通过本发明所构思的以上技术方案较现有技术具有以下有益效果:
1、针对于流数据,能够基于查询点快速且准确地搜索该查询点所属的簇,即该查询点所属簇的所有数据点。实现的过程中,那些与该查询点不属于同一个簇的数据点不会参与到簇搜索过程中,所以既能实现应用需求,又能节省计算资源。
2、在进行簇搜索的过程中,利用数据点之间的近邻关系可以确定出簇中哪些数据点距离查询点更近,哪些数据点距离查询点稍远,这样对于那些距离更近的数据点可以做优先推荐,提高推荐的合理性和实用性。
附图说明
图1是本实施方式基于查询点的流数据簇搜索方法的流程示意图;
图2是基于QALSH算法求得数据流中某数据点在半径r*范围内近邻的方法示例图;
图3是本实施方式近邻更新和基于查询点做簇搜索的方法示例图。
具体实施方式
为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的较佳实施方式。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反地,提供这些实施方式的目的是使对本申请的公开内容理解的更加透彻全面。
本发明的核心思路是:首先基于QALSH算法确定每个到达流数据点的近邻,然后借鉴DBSCAN算法中簇扩张的思想,利用近邻关系以扩张的方式搜索出某查询点所属簇的全部数据点。
图1是本实施方式基于查询点的流数据簇搜索方法的流程示意图,如图1所示,所述基于查询点的流数据簇搜索方法包括如下步骤:
步骤1:初始化QALSH算法的相关参数;
步骤1.1:初始化搜索半径r*、哈希向量个数m、哈希向量维度d、近似比率c、哈希函数;
1)人为设定搜索半径r*。
根据每个数据点周围数据的密度,人为设定搜索半径r*。数据集密度的大小决定了r*的大小,密度小则r*大,密度大则r*小。在本实施方式中,以当前的查询点为中心,以r*为半径的圆域内的所有数据点构成的集合称为一个微簇。
2)人为设定哈希向量的个数m。
本实施方式将采用的QALSH算法需要用到多个哈希向量,这里用m表示哈希向量的个数。m可以是任意大于1的整数,m的值越大求得的近邻越准确,但也不是越大越好。m值过大不但准确性提升不高,反而计算量增加不少,这反而没有必要。自己根据算法的实际运行效果进行确定。
3)根据数据集的维度设定哈希向量的维度d。
QALSH算法用到的哈希向量,其维度等于数据集中向量序列的维度,这里用d表示维度值,因为一般向量的维度都是等于或者高于二维,所以这里d也是大于等于2的整数。
4)人为设定近似比率c。
QALSH算法解决的是(R,c)-NN搜索这类近邻搜索问题。(R,c)-NN搜索的含义是给定一个搜索半径R>0和一个近似比率c>1,通过构建一个数据结构以实现对于任意一个查询对象q,返回满足如下条件的数据对象:如果数据集D中存在一个对象o∈D满足o与q间的距离小于等于R,那么返回任意一个对象o′∈D,其与q之间的距离小于等于cR。这里参数近似比率c需要手动设定,它是大于1的实数。此外,c的值越小,对于近邻搜索的准确性就越高。自己根据算法的实际运行效果进行确定。
5)定义哈希函数为
Figure BDA0003509729650000041
Figure BDA0003509729650000042
是代表查询点o的d维向量,
Figure BDA0003509729650000043
是d维的哈希向量。本实施方式使用的数据来自欧式空间,所以一方面哈希向量
Figure BDA0003509729650000044
的每一个分量取自N(0,1)分布,另一方面求近邻涉及到的数据点间的距离指的都是欧式距离,本发明中会简称为距离。本发明使用到的m个哈希向量,这里用
Figure BDA0003509729650000045
表示。
步骤1.2:基于搜索半径r*通过QALSH函数求解桶宽w*。
QALSH函数是一种LSH函数,而所有的LSH函数都满足一个被称为“(R,cR,p1,p2)-敏感”的性质,这个性质的含义为:两个数据对象比如p和q,如果它们之间的距离‖p,q‖小于等于R,那么基于某个LSH函数,这两个对象发生碰撞的概率会大于等于p1;如果它们之间的距离‖p,q‖大于cR,那么基于该LSH函数,这两个对象发生碰撞的概率会小于p2,其中p1>p2
另一方面基于QALSH定义的哈希函数,两个数据点p和q发生碰撞的表达式定义为
Figure BDA0003509729650000046
Figure BDA0003509729650000047
其中w为哈希函数的桶宽。另一方面N(0,1)分布具有的稳定性使得
Figure BDA0003509729650000048
与sX遵循同样的分布,这里s=‖p,q‖,即p和q之间的距离;X是一个服从N(0,1)分布的随机变量,其遵循的概率密度函数为
Figure BDA0003509729650000049
所以,对象p和q发生碰撞的概率可以通过如下的表达式进行计算:
Figure BDA00035097296500000410
Figure BDA0003509729650000051
p1值越大,p2值越小,那么哈希函数的性能越好,此时p1-p2的值也会越大。所以为了基于搜索半径r*确定合适的桶宽w*,可以通过最大化p1-p2的值进行求解。求解过程如下:
Figure BDA0003509729650000052
整理得
Figure BDA0003509729650000053
把该表达式记为μ(w),μ(w)对w求导得
Figure BDA0003509729650000054
令μ′(w)=0,由于w>0且c>1,得
Figure BDA0003509729650000055
Figure BDA0003509729650000056
步骤2:利用QALSH算法对流数据点求近邻;
步骤2.1:获取当前到达的流数据点p作为查询点;
步骤2.2:利用QALSH算法确定查询点p在预设的搜索半径r*范围内的近邻,获得点p的近邻集Np,也就是以当前点p为中心,以r*为半径的圆域内的所有数据点构成的微簇。
对于每一个到达的数据点p,通过QALSH算法找到点p在半径r*范围内的所有近邻,并构成相应的点集Np={n1,n2,…,nk},其中k是点p在半径r*范围内其近邻点的总个数,Np是点p需要持续维护的一个属性。具体是,对于每一个到达的数据点p,在m个哈希表中以
Figure BDA0003509729650000057
为中心点,以w*/2为桶宽,分别向左和向右寻找p的候选近邻点,并进一步通过计算这些近邻点与p之间的欧氏距离,把欧氏距离小于等于r*的点并入到p的近邻集合Np中。
图2是基于QALSH算法求得数据流中某数据点在半径r*范围内近邻的方法示例图。如图2所示,图中有6个向量型的数据点o1、o2、o3、o4、o5、o6,并假设它们按照时间顺序依次到达。为了获得点o6在半径r*范围内的近邻,首先,计算已知数据点的m个哈希值
Figure BDA0003509729650000058
i∈{1,2,…,m},j∈{1,2,…,6}。对于每一个哈希函数
Figure BDA0003509729650000059
j∈{1,2,…,6},有多少个数据点就会得到多少个哈希值。把得到的这些哈希值根据大小进行排序得到哈希表。因为总共有m个哈希函数,所以最后会得到m个哈希表。图2中的射线表示的就是哈希表的数据结构。因为这里是要寻找o6的近邻,所以在每条射线上,以o6的哈希值为中心,分别向左、向右在长度为w*/2的半个桶宽的范围内寻找近邻的候选者。可以看到,通过
Figure BDA00035097296500000510
指示的哈希表收集到了候选者o4、o2、o5,通过
Figure BDA00035097296500000511
指示的哈希表收集到了候选者o2、o4,以此类推,最后通过
Figure BDA00035097296500000512
指示的哈希表收集到了候选者o1、o2、o5。在收集的过程中,计算候选者与o6之间的距离,通过计算二者之间的欧氏距离并判断出该欧氏距离真的小于等于r*之后,再把该候选者判定为o6在r*范围内的近邻。至此,就得到了o6在半径r*范围内的近邻。
步骤2.3:基于数据点间欧氏距离的对称性,遍历近邻集Np中的每一个点进行近邻的更新:针对于Np中的每一个近邻点ni,i∈{1,2,…,k},更新其所维护的近邻集
Figure BDA0003509729650000061
为增加点p到集合
Figure BDA0003509729650000062
中,即
Figure BDA0003509729650000063
由于p也是Np中数据点的新的近邻,所以也需要对它们维护的近邻做更新。图3是本实施方式近邻更新和基于查询点做簇搜索的方法示例图,如图3所示,假设数据点o1、o2、o3按照时间顺序依次先后到达,且在空间中的位置如图3所示,图中也标识出了以这三个数据点为中心,以r*为半径的圆域范围,获得3个微簇。这三个数据点的近邻更新具体为:
o1是第一个到达的数据点,自然它刚到的时候其r*半径内没有近邻,用
Figure BDA0003509729650000064
表示o1近邻构成的集合,此时
Figure BDA0003509729650000065
之后,o2到达的时候,通过QALSH算法可以求得o2的近邻
Figure BDA0003509729650000066
同时,基于欧氏距离的对称性需要更新o1的近邻,所以
Figure BDA0003509729650000067
被更新为
Figure BDA0003509729650000068
Figure BDA0003509729650000069
同理,最后o3到达的时候,通过QALSH算法可以求得o3的近邻
Figure BDA00035097296500000610
同时,基于欧式距离的对称性需要把o1的近邻更新为
Figure BDA00035097296500000611
步骤3:利用近邻以扩张的方式对查询点做簇搜索,找到查询点所属簇的所有数据点;
因为每个流数据点都有近邻属性,所以通过类似于DBSCAN那种扩张的方式就能得到某个查询点所属簇的全部数据点。具体是:
将查询点p所属的簇表示为集合Cp,用于收集p所属簇的所有数据点,集合Cp中的每一个元素是一个二元组(数据点,flag),其中二元组的第一个分量“数据点”表示被判定属于该簇的数据点;第二个分量“flag”是一个标识变量,用于标识“数据点”的近邻集是否被访问过,也就是当“数据点”第一次被并入Cp且还未遍历“数据点”的近邻时,设定flag为标识符1例如false,当开始遍历“数据点”的近邻或者“数据点”的近邻已经被遍历完成的时刻,将flag更新为标识符2例如true。
为了扩展簇结构,需要不断地从Cp中获取flag是标识符1的元素。对查询点做簇搜索,找到查询点p所属簇的所有数据点,具体方法为:初始时仅将元素(p,标识符1)添加到Cp中,然后取出元组(p,标识符1)并获取p的近邻集合Np,遍历Np中的每个数据点,将Np中未存在于Cp中的数据点以二元组(该数据点,标识符1)的形式并入Cp中,且在开始遍历Np或者Np被遍历完成的时刻将元组(p,标识符1)更新为元组(p,标识符2),之后通过迭代的方式,不断从Cp中获取flag为标识符1的元组,并把这些元组的第一个分量所代表的点的近邻以(该数据点,标识符1)的方式并入Cp中,且在开始遍历近邻或者近邻被遍历完成的时刻将这些元组的元素flag进行相应的更新即标识符1更新为标识符2。整个迭代过程的结束条件是Cp中不存在flag为标识符1的元组。迭代过程结束的时候,Cp中各个元组的第一个元素构成的集合就是要求的查询点p所属簇中的点集。
示例如图3所示,通过近邻更新步骤已知数据点o1的近邻为
Figure BDA0003509729650000071
对象o2的近邻为
Figure BDA0003509729650000072
对象o3的近邻为
Figure BDA0003509729650000073
在本实施例中,假设查询点为o1,下面结合图3说明获取o1所属簇
Figure BDA0003509729650000074
即o1所属簇中的所有数据点的示例方法。其中
Figure BDA0003509729650000075
是一个集合,集合中的每一个元素都是一个二元组(数据点,访问标识),二元组的第一个分量是o1的近邻点,第二个分量是标识变量,用于标识该近邻点自己所维护的近邻集是否被访问过,图3示例中利用近邻以扩张的方式对查询点做簇搜索的具体过程如下:
1)因为要对o1做簇搜索,所以初始把二元组(o1,标识符1)添加到
Figure BDA0003509729650000076
中,此时
Figure BDA0003509729650000077
2)遍历
Figure BDA0003509729650000078
中所有访问标识为标识符1的二元组进行相应的操作。因为现在
Figure BDA0003509729650000079
中只有一个二元组,且该二元组的访问标识就是标识符1,所以取出这个二元组(o1,标识符1);然后I)把它更新为(o1,标识符2),然后遍历o1的近邻
Figure BDA00035097296500000710
因为
Figure BDA00035097296500000711
中没有o2、o3的信息,所以添加(o2,false)、(o3,false)到
Figure BDA00035097296500000712
中,此时
Figure BDA00035097296500000713
Figure BDA00035097296500000714
或者II)首先遍历o1的近邻
Figure BDA00035097296500000715
添加(o2,false)、(o3,false)到
Figure BDA00035097296500000716
中之后再把二元组(o1,标识符1)更新为(o1,标识符2);
3)继续从
Figure BDA00035097296500000717
取出访问标识为标识符1的元组,假设取出的是(o2,标识符1),取出后I)首先将其更新为(o2,标识符2),然后遍历o2的近邻
Figure BDA00035097296500000718
因为
Figure BDA00035097296500000719
中已经包含对象为o1的元组,且这个元组的访问标识已经为标识符2,所以不需要进行任何操作;或者II)首先遍历o2的近邻
Figure BDA00035097296500000720
因为
Figure BDA00035097296500000721
中已经包含对象为o1的元组,且这个元组的访问标识已经为标识符2,遍历完成,之后将(o2,标识符1)更新为(o2,标识符2)。至此,
Figure BDA00035097296500000722
Figure BDA00035097296500000723
4)最后从
Figure BDA00035097296500000724
取出最后一个访问标识为标识符1的元组(o3,标识符1)。依然是取出后I)首先将其更新为(o3,标识符2),然后遍历o3的近邻
Figure BDA00035097296500000725
同样,因为
Figure BDA00035097296500000726
中已经包含数据点为o1的元组,且这个元组的访问标识已经为标识符2,所以不需要进行任何操作;或者II)首先遍历o3的近邻
Figure BDA00035097296500000727
遍历完成后再将元组(o3,标识符1)更新为(o3,标识符2)。至此,
Figure BDA00035097296500000728
至此,
Figure BDA00035097296500000729
中没有任何访问标识为标识符1的元素,簇的扩张过程结束。而
Figure BDA00035097296500000730
中包含的所有对象一起构成了查询点o1的所属簇。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;因而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。

Claims (7)

1.一种基于查询点的流数据簇搜索方法,其特征在于,该方法包括如下步骤:
利用QALSH算法确定到达流数据点的近邻;
利用近邻以扩张的方式搜索出某查询点所属簇的全部数据点。
2.根据权利要求1所述的流数据簇搜索方法,其特征在于,在所述利用QALSH算法确定到达流数据点的近邻步骤之前包括初始化QALSH算法的相关参数的步骤。
3.根据权利要求2所述的流数据簇搜索方法,其特征在于,所述QALSH算法的相关参数包括搜索半径r*、哈希向量个数m、哈希向量维度d、近似比率c、哈希函数和桶宽w*。
4.根据权利要求3所述的流数据簇搜索方法,其特征在于,定义哈希函数为
Figure FDA0003509729640000011
其中
Figure FDA0003509729640000012
是代表查询点o的d维向量;
Figure FDA0003509729640000013
是d维的哈希向量,哈希向量
Figure FDA0003509729640000014
的每一个分量取自N(0,1)分布。
5.根据权利要求4所述的流数据簇搜索方法,其特征在于,所述桶宽w*初始化的初始值基于搜索半径r*和QALSH函数求解获得。
6.根据权利要求1所述的流数据簇搜索方法,其特征在于,所述利用QALSH算法确定到达流数据点的近邻包括如下步骤:
步骤2.1:获取当前到达的流数据点p,并将点p作为查询点;
步骤2.2:利用QALSH算法确定查询点p在预设的搜索半径r*范围内的近邻,获得点p的近邻集Np
步骤2.3:基于数据点间欧氏距离的对称性,遍历近邻集Np中的每一个点进行近邻的更新:针对于Np中的每一个近邻点ni,i∈{1,2,...,k},更新其所维护的近邻集
Figure FDA0003509729640000015
为增加点p到集合
Figure FDA0003509729640000016
中,即
Figure FDA0003509729640000017
7.根据权利要求6所述的流数据簇搜索方法,其特征在于,所述利用近邻以扩张的方式搜索出某查询点所属簇的全部数据点的方法为:
首先将查询点p所属的簇表示为集合Cp,用于收集p所属簇的所有数据点,集合Cp中的每一个元素是一个二元组(q,flag),其中二元组的第一个分量“q”表示被判定属于该簇的数据点;第二个分量“flag”是一个标识变量,用于标识q的近邻集是否被访问过,若标识q的近邻集未被访问过则flag为标识符1,若标识q的近邻集开始被访问或者访问已完成则flag为标识符2;
然后不断地从Cp中获取flag是标识符1的元素,对查询点做簇搜索,找到查询点p所属簇的所有数据点,具体方法为:初始时仅将元素(p,标识符1)添加到Cp中,然后取出元组(p,标识符1)并获取p的近邻集合Np,遍历Np中的每个数据点,将Np中未存在于Cp中的数据点以flag设置为标识符1的二元组形式并入Cp中,且在开始遍历Np或者Np被遍历完成的时刻将元组(p,标识符1)更新为元组(p,标识符2),之后通过迭代的方式,不断从Cp中获取flag为标识符1的元组,并把这些元组的第一个分量所代表的点的近邻以(该数据点,标识符1)二元组形式并入Cp中,且在开始遍历近邻或者近邻被遍历完成的时刻将这些元组的元素flag进行相应的更新即标识符1更新为标识符2,整个迭代过程持续至Cp中不存在flag为标识符1的元组,迭代过程结束的时候,Cp中各个元组的第一个元素构成的集合就是要求的查询点p所属簇中的点集。
CN202210149443.1A 2022-02-18 2022-02-18 一种基于查询点的流数据簇搜索方法 Pending CN114510506A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210149443.1A CN114510506A (zh) 2022-02-18 2022-02-18 一种基于查询点的流数据簇搜索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210149443.1A CN114510506A (zh) 2022-02-18 2022-02-18 一种基于查询点的流数据簇搜索方法

Publications (1)

Publication Number Publication Date
CN114510506A true CN114510506A (zh) 2022-05-17

Family

ID=81552004

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210149443.1A Pending CN114510506A (zh) 2022-02-18 2022-02-18 一种基于查询点的流数据簇搜索方法

Country Status (1)

Country Link
CN (1) CN114510506A (zh)

Similar Documents

Publication Publication Date Title
CN102915347B (zh) 一种分布式数据流聚类方法及系统
Yiu et al. Clustering objects on a spatial network
CN107506490B (zh) 滑动窗口下基于位置top-k关键词查询的优先查询算法及系统
CN107451302B (zh) 滑动窗口下基于位置top-k关键词查询的建模方法及系统
CN105335524B (zh) 一种应用于大规模非规则结构数据的图搜索方法
CN106203494B (zh) 一种基于内存计算的并行化聚类方法
CN111460234A (zh) 图查询方法、装置、电子设备及计算机可读存储介质
CN107766406A (zh) 一种采用时间优先搜索的轨迹相似性连接查询方法
CN108388642A (zh) 一种子图查询方法、装置及计算机可读存储介质
CN107545272A (zh) 一种MapReduce框架下的空间网络对象聚类方法
CN106503245B (zh) 一种支撑点集合的选择方法及装置
Sun et al. On efficient aggregate nearest neighbor query processing in road networks
CN114510506A (zh) 一种基于查询点的流数据簇搜索方法
CN114064995B (zh) 一种路网环境下基于位置的静态skyline查询方法
CN105740371A (zh) 一种基于密度的增量聚类数据挖掘方法及系统
Li et al. Fog-based pub/sub index with Boolean expressions in the internet of industrial vehicles
CN108829694A (zh) 路网上的弹性聚合最近邻查询g树的优化方法
CN113742288B (zh) 用于数据索引的方法、电子设备和计算机程序产品
CN115935027A (zh) 目标对象拓扑图的数据处理方法及图分类模型的训练方法
WO2019024348A1 (zh) 基于兴趣区域的轨迹查询的匀速搜索算法
CN107766407A (zh) 一种采用两阶段搜索的轨迹相似性连接查询方法
CN108829695A (zh) 路网上的弹性聚合最近邻查询G-max方法
CN114911826A (zh) 一种关联数据检索方法和系统
Zhu et al. Towards keyword-based geo-social group query services
CN107273464B (zh) 一种基于发布/订阅模式的分布式度量相似查询处理方法

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