CN117459070A - 一种数据聚类压缩方法 - Google Patents

一种数据聚类压缩方法 Download PDF

Info

Publication number
CN117459070A
CN117459070A CN202311365329.3A CN202311365329A CN117459070A CN 117459070 A CN117459070 A CN 117459070A CN 202311365329 A CN202311365329 A CN 202311365329A CN 117459070 A CN117459070 A CN 117459070A
Authority
CN
China
Prior art keywords
data
data blocks
level mask
data block
fingerprints
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
CN202311365329.3A
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.)
Peking University
Original Assignee
Peking University
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 Peking University filed Critical Peking University
Priority to CN202311365329.3A priority Critical patent/CN117459070A/zh
Publication of CN117459070A publication Critical patent/CN117459070A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3066Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • G06F18/232Non-hierarchical techniques

Landscapes

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

Abstract

本发明公开了一种数据聚类压缩方法,其步骤包括:1)将待压缩数据分割为多个数据块,对每一所述数据块生成一个指纹;2)预设多级掩码,每一级掩码为一个二进制向量,越高级掩码含有的1的个数越少;3)从低级掩码开始,将每一所述指纹分别与第i级掩码进行按位与运算,将运算结果相同的指纹对应的数据块将聚为一类;对于剩下的未聚类的数据块,将其指纹与第i+1级掩码进行按位与运算,将运算结果相同的指纹对应的数据块将聚为一类;当完成与第j级掩码运算后未出现未能聚类的数据块,则执行步骤4);当完成与最高级掩码运算后还剩余的未能聚类的数据块,直接聚为一类,然后执行步骤4);4)根据聚类结果对每一聚类中的数据块进行压缩。

Description

一种数据聚类压缩方法
技术领域
本发明属于计算机软件技术领域,涉及一种基于集合相似度binary vector的数据聚类压缩方法。
背景技术
集合相似度:用于度量两个集合相似的程度的概念。在这里,使用了Jaccard相似度来衡量,它的公式为Jaccard相似度的值介于0到1之间,0表示两个集合没有共同元素,1表示两个集合完全相同。
Binary Vector(二进制向量):是一种数据结构,用于表示集合的成员关系。它是一个每一维都是0或1的向量,其中每个维度对应集合中的一个元素,如果元素存在于集合中,则对应维度的值为1,否则为0。Binary Vector通常用于将集合转化为一种可以进行比较和计算的数据形式。
集合相似度Binary Vector(Binary Vector Set Similarity):是指通过比较两个集合的二进制向量来估计它们的Jaccard相似度。通过将两个集合表示为二进制向量,可以使用向量运算来度量它们的相似程度,通常是通过计算向量的内积或其他相似性指标来实现的。
聚类压缩(Cluster Compression):是一种数据处理或数据分析技术,用于将相似的数据块或数据点归为同一类别或簇。
在数据中心存储数据时,经常会遇到大量重叠的数据部分,这些重叠部分可能是相同的视频、网页内容,或者只有微小修改的信息。在这种情况下,找到相似的数据部分可以显著提高数据压缩的效果。
传统的方法是将数据分割成若干等大小的块,通常以8KB为单位。然后,利用shingle(类似于滑动窗口的概念)技术,将每个块分割成若干个64位的元素,如图1所示,图中每一个格子代表一个字节,Shingle算法会将数据块中每个字节起始的8个字节视为一个元素,并将这些元素组合成一个集合。最后,通过使用集合相似度相关的算法来比较两个块之间的相似程度。
这种方法允许数据中心更有效地处理存储和传输重叠数据,从而减少存储需求和网络带宽的使用。它有助于提高数据的利用率,并降低了数据管理的成本。在处理大规模数据时,寻找相似性对于数据优化和资源节约至关重要。
在现有技术中,针对每个数据块(Chunk),首先按照上述方法生成一个包含64位元素的集合。然后,使用MinHash或OOPH算法生成k个哈希值作为fingerprint,如图2所示,一个数据块先按照shingle算法生成n个元素,再将n个元素使用OOPH/MinHash算法生成k个哈希值指纹。通过比较两个Chunk对应的k对哈希值中相同的数量,可以估计它们之间的相似程度。例如两个Chunk得到的fingerprint分别为(0,6,10,13)和(1,6,10,17),则我们称这两个Chunk的相似度为1/2。
具体实现上,这需要使用局部敏感哈希(LSH)方法。将k个哈希值均匀分成b组,每组包含k/b个哈希值,这k/b个哈希值被称为一个"band"。接下来,将这b个band hash值分别用作索引键值,将数据块索引到一个"桶"中。如果两个Chunk都被索引到了同一个桶中,那么它们很可能是非常相似的,因此需要进一步比较以找到相似的Chunk。
尽管现有技术在相似性比较方面具有一定的效果,但它也存在一些缺点:
1)占用较大的存储空间:例如为一个Chunk生成16个哈希值,需要1024位(16*64位)的存储空间。想要提高比较相似度的精度,就需要为每个Chunk生成更多的hash值,但这也意味着需要更多的存储空间,这可能对数据中心的资源要求较高。
2)数据多次比较和同步问题:LSH方法导致一个Chunk可能被索引到多个不同的桶中,因此一对Chunk可能会被多次比较,增加了计算开销。此外,当一个Chunk在一个桶中聚类成功后,还需要在其他桶中将其删除,这会引起数据同步问题,可能需要额外的管理工作。
这些缺点表明了在现有技术中还存在改进的空间,特别是在减小存储开销和提高计算效率方面。新的技术方案可能需要解决这些问题,以提供更有效的数据压缩和相似性比较方法。
发明内容
针对现有技术中存在的问题,本发明的目的在于提供一种基于集合相似度binaryvector的数据聚类压缩方法。
本发明的主要目标是解决两个关键技术问题:
1)空间占用问题:在处理大规模数据时,相似度算法生成的哈希值可能占用大量内存空间,所以需要将它们存储在磁盘上。此外,跨多个机器进行通信时,传输这些哈希值也会带来很大开销。因此,在确保相似度测量精度的同时,降低哈希值的空间开销是非常有意义的。本发明旨在解决这一问题,提供更高效的空间利用方式。
2)数据同步问题:在现有技术中,使用局部敏感哈希(LSH)方法时,一个数据块可能会被索引到多个不同的桶中,导致多次比较和数据同步问题。这可能引起性能上的开销和复杂性。本发明旨在避免这个问题,确保一个数据块不会同时在多个桶中进行比较,从而提高相似度测量的效率。
本发明的技术方案为:
一种数据聚类压缩方法,其步骤包括:
1)将待压缩数据分割为多个数据块,对每一所述数据块生成一个指纹;
2)预设多级掩码,每一级掩码为一个二进制向量,其长度与所述指纹长度相同;越高级掩码含有的1的个数越少;掩码最高级为J级;
3)从低级掩码开始,将每一所述指纹分别与第i级掩码进行按位与运算,将运算结果相同的指纹对应的数据块将聚为一类;对于剩下的未聚类的数据块,将其指纹与第i+1级掩码进行按位与运算,将运算结果相同的指纹对应的数据块将聚为一类;当完成与第j级掩码运算后未出现未能聚类的数据块,j∈J,则执行步骤4);当完成与最高级掩码运算后还剩余的未能聚类的数据块,直接聚为一类,然后执行步骤4);
4)根据步骤3)的聚类结果对每一聚类中的数据块进行压缩。
进一步的,生成所述指纹的方法为:
11)利用OOPH/MinHash算法生成每一所述数据块对应的k个哈希值;
12)初始化一个M bit的二进制向量;初始状态下的二进制向量每一维上都为0;
13)对于该k个哈希值中的每一哈希值,将其映射到[0,M)区间上的一个位置p;将该二进制向量的第p维设为1,将所得二进制向量作为所述数据块的指纹。
进一步的,所述数据块的大小为8KB;对每一所述数据块,利用滑动窗口方法生成8185个64bit的元素;根据所述数据块的8185个元素,利用OOPH/MinHash算法生成所述数据块对应的k个哈希值。
进一步的,采用德塔压缩算法、bitmap压缩算法或hyperloglog压缩算法对每一聚类中的数据块进行压缩。
进一步的,采用极大似然估计法计算各所述指纹的相似度。
一种服务器,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行上述方法中各步骤的指令。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明的优点如下:
本发明使用binary vector的方式存储fingerprint,在保证精度的同时节省了空间,同时binary vector相比传统的hash values vector可以进行位运算等操作加速比较。
本发明使用多级musk的方式进行聚类,保证了同一时刻,一个Chunk最多出现在一个桶中,避免了LSH方法的重复比较问题和数据一致性问题。
附图说明
图1为shingle算法基本原理示意图。
图2为哈希值指纹生成方法流程图。
图3为二进制向量指纹生成方法流程图。
图4为海明距离计算示例图。
图5为异或计算示例图。
图6为多级musk聚类实例图。
具体实施方式
下面结合附图对本发明进行进一步详细描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
1、本发明主要创新在于:
1)将待压缩数据的每一数据块(Chunk)的指纹以binary vector(二进制向量)的形式存储,得到对应数据块的二进制向量指纹fingerprint,如图3所示。
a)将数据块(Chunk)输入OOPH/MinHash生成的hash values作为该数据块(Chunk)的指纹并压缩成binary vector(二进制向量)的形式,得到对应数据块的二进制向量指纹fingerprint。
b)两个数据块的二进制向量指纹fingerprint之间的海明距离可以反应两个数据块Chunk的相似度,如图4所示。由于是binary vector,两个fingerprint之间的海明距离也可以表示为异或值的1的个数。
2)使用多级musk方式进行聚类压缩
a)首先我们会预先生成若干级musk,musk中1的个数逐渐减少。例如生成的一组
musk为(11111100,11110000,11000000,00000000).
b)用fingerprint与musk取与操作,结果作为键值来聚类。具有相同的键值的Chunk会被聚合为一类。
2、本发明应用的系统架构或场景
本发明用于数据中心的数据压缩,包括网页、视频等。
待压缩数据会以块(Chunk)为单位来进行聚类,相似的数据块进行聚类能有效提高压缩的效果。
3、本发明核心方法的流程
本发明主要包括binary vector形式的fingerprint生成以及基于该fingerprint的聚类算法
1)Fingerprint生成
a)对OOPH/MinHash生成的k个hash值进行再次进行hash,然后对binary vector的长度(设为M)取模,映射到了binary vector上的对应位上,并将该位设为1。
b)该方法的优势在于,占用的空间与生成的Hash值数量无关,只与Bitmap的长度
(M)相关,因此可以通过减小M的大小来减轻空间占用问题。
c)通过生成更多的hash values,可以在降低空间的同时还保证相似度估计的精度。
OOPH/MinHash步骤中生成的hash values越多,相似度测量的精度越高,所以我们在这一步骤中生成了更多的hash values,以保证在压缩到一个更小的空间后,精度还得以保证。例如原本会生成16个hash values,占用1024bit(16*64);使用我们的方法会生成64个hash values,压缩到M=512bit的bitmap中。实验表明精度不变或者更优。
d)计算相似度使用的是极大似然估计法,这里给出基于两个Chunk的fingerprint的异或值的估计方法。
i.我们设N为每个Chunk产生的hash values数量,M为最终bitmap大小,C
为N对hash values中相同的个数。我们假设两个fingerprint异或值的1的个数(海明距离)为m,令p=m/M。例如图5异或中展示的那样,两个Chunk各选取了4个hashvalues,压缩到M=8bit的bitmap中,这两个fingerprint的海明距离m=2,则p=1/4。
ii.可以得到以下极大似然估计公式。
2)使用多级musk方式进行聚类的过程
a)首先所有Chunk的fingerprint(binary vector)对第一级的musk(11111100)进行与操作,生成一级键值key1。所有fingerprint根据key1进行哈希索引,索引到同一个桶中的fingerprint具有非常多相似的bit,也就说明它们对应的Chunk大概率非常相似(例如90%的相似度)。当一个桶中的Chunk数量达到一定规模时我们就可以将其聚类。
b)第一轮聚类完成之后,可能有很多个桶中都残留有很少的Chunk。这些Chunk可能也有很高的相似度(例如60%),所以我们将这些残留的Chunk再次进行聚类。这次使用二级musk(11110000)生成key2。二级musk相较于一级musk的严格程度降低,在第一轮聚类中没能聚合在一起的Chunk也有可能在第二轮聚合在一起。
c)依此类推直到所有的musk用完。最后一级musk为全0,所以所有剩下的Chunk都会聚合在一起。
d)图6展示了一个聚类的简单例子。有4个指纹等待聚类,他们先都与一级musk进行与操作,指纹1、2的结果相同,所以聚类为一类。指纹3,4互不相同,于是与下一级musk进行与操作,结果想用,聚类为一类。
本发明的压缩流程为:
1)将数据分割为等大小的数据块(Chunk),数据块大小一般为8KB。聚类压缩算法将以数据块为单位进行。接下来会先对每个数据块生成一个指纹(fingerprint),然后根据指纹将相似的数据块进行聚类。
2)对每一个数据块生成一个二进制向量作为指纹(fingerprint)
a)对每一个数据块,利用滑动窗口(shingle)方法生成8185个64bit的元素。
b)对于每个数据块的8185个元素,利用OOPH/MinHash算法生成k个哈希值(hashvalues)。
c)将得到的k个哈希值压缩到一个M bit的二进制向量(binary vector)中。
i.初始状态下的二进制向量每一维上都为0。
ii.对每个哈希值,将其映射到[0,M)区间上的一个位置,记作p。将二进制向量的第p维设为1。
iii.例如图3中,我们希望为数据块生成一个8bit的二进制向量。数据块经过a),b)步骤生成了4个哈希值0,6,10,13,分别映射到了3,0,4,6位置。所以向量的第0,3,4,6维为1,其他维为0,最终的向量为10011010。
3)根据得到的一系列指纹,将相似的数据块聚为一类
a)两个数据块越相似,它们的指纹的海明越小。根据这一原理设计了多级掩码(multilevel musk)的算法进行聚类。
i.预先设定好多级的掩码,掩码也是一个二进制向量,的长度与2)中生成指纹长度M相同。还需要保证越高等级的掩码(musk)含有的1的个数越少。例如设M=8,设置4级掩码,从1级到4级分别为11111100,11110000,11000000,00000000。如果两个指纹与掩码进行与操作后的结果一样,我们可以认为这两个指纹的海明距离可能很小。
ii.所有的指纹分别与1级掩码进行按位与,结果相同的指纹对应的数据块将聚为一类。对于剩下的,未能聚类的数据块,将其指纹与2级掩码进行同样的操作,即与2级掩码按位与,结果相同的指纹对应的数据块聚为一类。
图6展示了一个聚类的例子:数据块1,2,3,4分别生成了指纹1,2,3,4,指纹的值分别为10011010,10001011,01011000和01010100。四个指纹与掩码1
(musk1)进行按位与,得到指纹1’,2’,3’,4’,其中指纹1’和2’相同,所以指纹1,2对应的数据块聚为一类。指纹3,4则进入下一层,与掩码2进行与操作,得到的结果一样,所以指纹3,4对应的数据块聚为一类。
4)最后的压缩操作可以使用现有的压缩算法,例如德塔压缩。
使用bitmap只是一种压缩算法,还可以替换为例如hyperloglog等其他压缩方法。
尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

Claims (7)

1.一种数据聚类压缩方法,其步骤包括:
1)将待压缩数据分割为多个数据块,对每一所述数据块生成一个指纹;
2)预设多级掩码,每一级掩码为一个二进制向量,其长度与所述指纹长度相同;越高级掩码含有的1的个数越少;掩码最高级为J级;
3)从低级掩码开始,将每一所述指纹分别与第i级掩码进行按位与运算,将运算结果相同的指纹对应的数据块将聚为一类;对于剩下的未聚类的数据块,将其指纹与第i+1级掩码进行按位与运算,将运算结果相同的指纹对应的数据块将聚为一类;当完成与第j级掩码运算后未出现未能聚类的数据块,j∈J,则执行步骤4);当完成与最高级掩码运算后还剩余的未能聚类的数据块,直接聚为一类,然后执行步骤4);
4)根据步骤3)的聚类结果对每一聚类中的数据块进行压缩。
2.根据权利要求1所述的方法,其特征在于,生成所述指纹的方法为:
11)利用OOPH/MinHash算法生成每一所述数据块对应的k个哈希值;
12)初始化一个M bit的二进制向量;初始状态下的二进制向量每一维上都为0;
13)对于该k个哈希值中的每一哈希值,将其映射到[0,M)区间上的一个位置p;将该二进制向量的第p维设为1,将所得二进制向量作为所述数据块的指纹。
3.根据权利要求2所述的方法,其特征在于,所述数据块的大小为8KB;对每一所述数据块,利用滑动窗口方法生成8185个64bit的元素;根据所述数据块的8185个元素,利用OOPH/MinHash算法生成所述数据块对应的k个哈希值。
4.根据权利要求1或2或3所述的方法,其特征在于,采用德塔压缩算法、bitmap压缩算法或hyperloglog压缩算法对每一聚类中的数据块进行压缩。
5.根据权利要求1或2或3所述的方法,其特征在于,采用极大似然估计法计算各所述指纹的相似度。
6.一种服务器,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1至5任一所述方法中各步骤的指令。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5任一所述方法的步骤。
CN202311365329.3A 2023-10-20 2023-10-20 一种数据聚类压缩方法 Pending CN117459070A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311365329.3A CN117459070A (zh) 2023-10-20 2023-10-20 一种数据聚类压缩方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311365329.3A CN117459070A (zh) 2023-10-20 2023-10-20 一种数据聚类压缩方法

Publications (1)

Publication Number Publication Date
CN117459070A true CN117459070A (zh) 2024-01-26

Family

ID=89592152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311365329.3A Pending CN117459070A (zh) 2023-10-20 2023-10-20 一种数据聚类压缩方法

Country Status (1)

Country Link
CN (1) CN117459070A (zh)

Similar Documents

Publication Publication Date Title
US10430433B2 (en) Systems and methods for data conversion and comparison
US10394822B2 (en) Systems and methods for data conversion and comparison
US10423626B2 (en) Systems and methods for data conversion and comparison
US10938961B1 (en) Systems and methods for data deduplication by generating similarity metrics using sketch computation
US8344916B2 (en) System and method for simplifying transmission in parallel computing system
US9892237B2 (en) System and method for characterizing biological sequence data through a probabilistic data structure
CN107046812B (zh) 一种数据保存方法和装置
CN106326475B (zh) 一种高效的静态哈希表实现方法及系统
WO2010135082A1 (en) Localized weak bit assignment
CN112104725B (zh) 容器镜像去重方法、系统、计算机设备及存储介质
CN110032470B (zh) 一种基于哈夫曼树的异构部分重复码的构造方法
JP7108784B2 (ja) データ記憶方法、データ取得方法、及び機器
US11995050B2 (en) Systems and methods for sketch computation
CN111028897B (zh) 一种基于Hadoop的基因组索引构建的分布式并行计算方法
EP4078340A1 (en) Systems and methods for sketch computation
Li et al. Building fast and compact sketches for approximately multi-set multi-membership querying
CN110401451B (zh) 基于字符集变换的自动机空间压缩方法及系统
US20210191640A1 (en) Systems and methods for data segment processing
CN116795808A (zh) 数据处理方法以及相关设备
CN117459070A (zh) 一种数据聚类压缩方法
US11748255B1 (en) Method for searching free blocks in bitmap data, and related components
US12001237B2 (en) Pattern-based cache block compression
CN110413958B (zh) 用于自动机空间压缩的线性同余字符集变换方法及系统
CN111767287A (zh) 数据导入方法、装置、设备及计算机存储介质
CN113220214A (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