CN117459070A - 一种数据聚类压缩方法 - Google Patents
一种数据聚类压缩方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000007906 compression Methods 0.000 title claims abstract description 25
- 230000006835 compression Effects 0.000 title claims abstract description 25
- 239000013598 vector Substances 0.000 claims abstract description 43
- 238000004422 calculation algorithm Methods 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 8
- 238000007476 Maximum Likelihood Methods 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 2
- 241000402754 Erythranthe moschata Species 0.000 description 18
- 238000010586 diagram Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000013144 data compression Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 101100269850 Caenorhabditis elegans mask-1 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011524 similarity measure Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-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任一所述方法的步骤。
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) |
-
2023
- 2023-10-20 CN CN202311365329.3A patent/CN117459070A/zh active Pending
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 |