本技术涉及数据索引,特别是涉及一种基于分区和降维的可更新空间学习索引方法和装置。
背景技术:
1、在大数据时代对于数据的检索至关重要,数据的种类多变,但是就维度变化而言,仍然可以将数据分为一维以及多维的种类,传统的关于不同维度的索引有多种,他们能够加速数据的查询,为数据的检索提供优越条件,现有的针对于高维数据进行检索的索引结构有r树,四叉树,kd树等各种变体等,r数是一种类似于b树的数据结构,以矩形划分的mbr区域为其子节点,r+树是其变体,四叉树跟r树相似,其在将平面空间进行四等分划分,然后在每个等分上迭代划分。
2、这些索引结构为数据的检索提供了便捷的条件,能够加快数据的传输速度从而为数据的应用提供更加便捷的通道,但是,因为这些索引结构将数据以树的结构组织起来,占用了很大的存储空间,有研究表明,在数据库的应用中,索引结构的体积占高。
3、而随着机器学习技术的发展,有学者提出,可以将数据的检索视为一种键到地址的映射,也就是通过机器学习的方法构建递归模型来预测数据的位置,从而链接到其对应的存储地址,这种方式在一维能够将查询的时间复杂度从o(logn)降至o(1),且索引的存储占用也小了很多。如图一所示,按照kraska的思路,将数组s中的数值进行排序,其每个键值都有在排序后的数组a中有位置k,当搜索键k时,需检查是否a(posk)=k。学习索引结构首先通过训练来学习输入数据的分布(x,(posx)),x∈s。在查询时,输入数据键值k,然后递归地选择“负责”该键的下一层模型直至模型的底层。其输出是模型返回的位置,但这只是一个近似位置,为了查找最后的精确位置,需要采用在相邻位置范围内执行二分搜索,其中二分搜索的范围取决于训练时模型的预测误差的最大值。
4、目前针对于多维空间或者索引更新也涌现出了一些可用的方法和模型。但是传统的解决方法中,针对一维数据的学习索引,无法对高维数据进行更新学习。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种基于分区和降维的可更新空间学习索引方法和装置。
2、一种基于分区和降维的可更新空间学习索引方法,所述方法包括:
3、将二维数据空间划分为多个不相交的空间区域,以及将原始数据聚类至所述空间区域中;
4、将所述原始数据映射至二维空间中,得到原始数据在二维空间中的位置信息,采用希尔伯特曲线对二维空间进行递归划分,得到原始数据在划分后二维空间中的希尔伯特值的排序数组以及空间区域顺序值的位置数组;
5、根据所述排序数组和位置数组对应的一维排序数据,在坐标轴上构建多段线性结构模型;所述多段线性结构模型满足整体误差阈值和范围误差阈值;
6、输入检索条件确定待查找数据和待查找数据的聚类标签,获取待查找数据的数据点和空间区域;
7、根据空间区域对应的多段线性结构模型,对所述数据点进行索引。
8、在其中一个实施例中,还包括:随机选择k个数据点作为初始簇中心,从原始数据的数据集d中随机抽取大小为b的数据批量;
9、计算每个数据批量中的数据点x到所有簇中心的距离,并将数据点x分配给距离其最近的簇中心;
10、使用临时簇集合t来存储数据点的分配结果,计算每个临时簇t[i]的新中心;
11、在每次迭代后检查簇中心是否发生变化,若簇中心变化小于阈值或达到最大迭代次数m,得到最终簇;
12、对整个数据集d进行最终簇分配,将每个数据点分配到最近的簇中心,得到最终的聚类{d1,d2,d3,...,dk}。
13、在其中一个实施例中,还包括:计算所述原始数据中每个高维数据点在二维空间中的位置,使用希尔伯特曲线将二维空间划分为若干小区域,并将每个数据点分配到对应的区域,并返回其在区域上对应的顺序值作为该点的希尔伯特值;
14、按照从小到大的升序方式对希尔伯特值进行排序,形成空间区域的希尔伯特值排序数组x,以及空间区域对应的位置数组y。
15、在其中一个实施例中,还包括:根据所述排序数组和位置数组对应的一维排序数据,计算线性段的平均误差;
16、计算多段线性结构模型的预测值与实际值之间的误差;
17、若平均误差不大于整体误差阈值且预测值与实际值之间的误差不大于范围误差阈值,则当前线性段有效,否则重新调整线性段参数,直到满足范围误差阈值,从而构建多段线性结构模型。
18、在其中一个实施例中,还包括:输入检索条件确定待查找数据和待查找数据的聚类标签;
19、确定待查找数据所在的线段,并且根据多段线性结构模型对待查找数据进行位置预测,若位置预测对应的希尔波特值等于待查找数据,返回预测位置;
20、若否,在所述多段线性结构模型的整体误差阈值和范围误差阈值内进行查找,直到找到希尔波特值等于待查找数据的预测位置。
21、在其中一个实施例中,还包括:通过索引找到所述多段线性结构模型的待插入位置,将待存储数据插入所述待插入位置,并返回所述待存储数据的排序数组和位置数组;
22、根据所述待存储数据的排序数组和位置数组检查在多段线性结构模型中是否超过整体误差阈值和范围误差阈值,若是,则判断下一个待插入位置进行插入。
23、一种基于分区和降维的可更新空间学习索引装置,所述装置包括:
24、聚类模块,用于将二维数据空间划分为多个不相交的空间区域,以及将原始数据聚类至所述空间区域中;
25、降维模块,用于将所述原始数据映射至二维空间中,得到原始数据在二维空间中的位置信息,采用希尔伯特曲线对二维空间进行递归划分,得到原始数据在划分后二维空间中的希尔伯特值的排序数组以及空间区域顺序值的位置数组;
26、模型构建模块,用于根据所述排序数组和位置数组对应的一维排序数据,在坐标轴上构建多段线性结构模型;所述多段线性结构模型满足整体误差阈值和范围误差阈值;
27、索引模块,用于输入检索条件确定待查找数据和待查找数据的聚类标签,获取待查找数据的数据点和空间区域;根据空间区域对应的多段线性结构模型,对所述数据点进行索引。
28、在其中一个实施例中,所述降维模块还用于计算所述原始数据中每个高维数据点在二维空间中的位置,使用希尔伯特曲线将二维空间划分为若干小区域,并将每个数据点分配到对应的区域,并返回其在区域上对应的顺序值作为该点的希尔伯特值;按照从小到大的升序方式对希尔伯特值进行排序,形成空间区域的希尔伯特值排序数组x,以及空间区域对应的位置数组y。
29、一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
30、将二维数据空间划分为多个不相交的空间区域,以及将原始数据聚类至所述空间区域中;
31、将所述原始数据映射至二维空间中,得到原始数据在二维空间中的位置信息,采用希尔伯特曲线对二维空间进行递归划分,得到原始数据在划分后二维空间中的希尔伯特值的排序数组以及空间区域顺序值的位置数组;
32、根据所述排序数组和位置数组对应的一维排序数据,在坐标轴上构建多段线性结构模型;所述多段线性结构模型满足整体误差阈值和范围误差阈值;
33、输入检索条件确定待查找数据和待查找数据的聚类标签,获取待查找数据的数据点和空间区域;
34、根据空间区域对应的多段线性结构模型,对所述数据点进行索引。
35、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
36、将二维数据空间划分为多个不相交的空间区域,以及将原始数据聚类至所述空间区域中;
37、将所述原始数据映射至二维空间中,得到原始数据在二维空间中的位置信息,采用希尔伯特曲线对二维空间进行递归划分,得到原始数据在划分后二维空间中的希尔伯特值的排序数组以及空间区域顺序值的位置数组;
38、根据所述排序数组和位置数组对应的一维排序数据,在坐标轴上构建多段线性结构模型;所述多段线性结构模型满足整体误差阈值和范围误差阈值;
39、输入检索条件确定待查找数据和待查找数据的聚类标签,获取待查找数据的数据点和空间区域;
40、根据空间区域对应的多段线性结构模型,对所述数据点进行索引。
41、上述基于分区和降维的可更新空间学习索引方法和装置,通过聚类算法对于大规模的二维空间数据进行划分,之后通过希尔伯特曲线进行二维数据的降维,维持其中数据排序信息的相对完整性和唯一性,并将每个分区内的降维之后的希尔伯特值进行排序,形成排序数组,使其更能够便于下一步中的多段线性模型的构建,然后设置整体误差阈值和范围误差阈值,根据这两项阈值的大小设置递进形成完整的分段线性模型结构,方便在之后的预测上能够使得预测误差能够保持在一定的范围之内,从而更加精准地定位数据的实际位置;与传统的支持二维数据的索引r树进行对比,能够达成优于r树的查询和新的数据点插入的效率,且有着很低的占用面积。
1.一种基于分区和降维的可更新空间学习索引方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,将二维数据空间划分为多个不相交的空间区域,以及将原始数据聚类至所述空间区域中,包括:
3.根据权利要求2所述的方法,其特征在于,根据所述排序数组和位置数组对应的一维排序数据,在坐标轴上构建多段线性结构模型,包括:
4.根据权利要求3所述的方法,其特征在于,根据所述排序数组和位置数组对应的一维排序数据,在坐标轴上构建多段线性结构模型,包括:
5.根据权利要求4所述的方法,其特征在于,输入检索条件确定待查找数据和待查找数据的聚类标签,获取待查找数据的数据点和空间区域,包括:
6.根据权利要求5所述的方法,其特征在于,所述方法包括:
7.一种基于分区和降维的可更新空间学习索引装置,其特征在于,所述装置包括:
8.根据权利要求7所述的装置,其特征在于,所述降维模块还用于计算所述原始数据中每个高维数据点在二维空间中的位置,使用希尔伯特曲线将二维空间划分为若干小区域,并将每个数据点分配到对应的区域,并返回其在区域上对应的顺序值作为数据点的希尔伯特值;按照从小到大的升序方式对希尔伯特值进行排序,形成空间区域的希尔伯特值排序数组x,以及空间区域对应的位置数组y。