一种基于高维数据过滤器的近似成员查询方法
技术领域
本发明涉及一种近似成员查询方法,尤其是涉及一种基于高维数据过滤器的近似成员查询方法。
背景技术
在很多应用领域中,如果查询数据与目标数据的距离越近,数据的价值就越高。例如,安全官员想要检查某未知的物质(具有某些可检测的高维特征)是否属于清单所列的危险化学品;网络管理员想要知道某用户的行为特征是否有害;摄影比赛裁判想检查提交的照片是否与某一张大型数据库中的照片类似。这些查询都需要判断查询数据与(目标数据)集合中数据的距离。如果是低维的小数据集,可通过线性查找解决,但是对一个海量的高维数据集采用线性查找匹配的话,会非常耗时,很多情况下无法满足实时的需要。为提高处理的速度,可以设置一个高维数据过滤器代表目标数据集合,根据距离过滤掉大部分查询数据,少量剩下的数据可以再通过常规方法进一步处理,可显著提高***的整体性能。
这个过滤器完成的就是近似成员查询(Approximate Membership Query,AMQ),即回答“查询数据是否接近于数据集合中的某个数据”。现有AMQ过滤器主要是结合LSH(距离敏感哈希,Locality-Sensitive Hashing)和Bloom filter(布鲁姆过滤器)技术的,其主要代表有DSBF(Distance-sensitive Bloom filters)[1]和LSBF(Locality-SensitiveBloom Filter)[2]。
DSBF首次综合LSH和Bloom filter的方法来过滤AMQ查询,其返回组成员的近似查询结果,近似度可采用不同的衡量标准,它可以改善网络和数据库应用程序的速度和空间,从而避免对完整的最近邻查询等代价昂贵的比较操作。LSBF是DSBF的改进,使用LSH函数来构造Bloom filter过滤AMQ查询,LSBF还采用了额外的位向量来降低假阳性率。
但是,使用DSBF和LSBF这两个技术来过滤AMQ查询都有一个限制,即他们仅能过滤给定距离的AMQ查询。然而,给定一个合适的距离并不容易,过大或过小的距离值,可能会导致不可接受的查询结果。而一旦过滤器的过滤网格参数固定后就不能改变,即能过滤的距离值是确定的,如需要同时过滤多个不同的距离值,则需要根据原始数据重新构造过滤器,也即改变过滤距离参数。然而,为节省空间,原始数据一般并不保存,无法构造不同的距离参数的过滤器。其次,DSBF存在假阳性率过高的问题,LSBF存在假阴性率过高的问题。
通过定义新的距离敏感哈希函数支持的新结构MLBF,分别来表征目标数据集合中的多维数据和待查询的多维数据,同时通过构建一个实体校验器,不仅不需要重新构造过滤器就能够支持更多的过滤距离参数的近似成员查询,而且通过校验,大大降低了不同虚拟过滤器的假阳性率。但是这种方法同时也会占用较大的资源。
发明内容
本发明所要解决的技术问题是提供一种基于过滤器的高维数据近似成员查询方法,在固定过滤网格(距离)参数的过滤器的基础上,不需要重新构造过滤器,即能够实现更多的过滤网格参数的近似成员查询,并且能够节省空间资源。
本发明解决上述技术问题所采用的技术方案为:一种基于过滤器的高维数据近似成员查询方法,将目标数据集合定义为Ω,并将距离敏感哈希函数H定义为其中t=1,2,…,k,j=1,2,…,L,L为函数组数,k为每一函数组中的函数个数,o是多维数据,at,j是与o维数相同的随机向量,其每一维的数据符合标准正态分布,·是点积运算,2θw是距离过滤参数,θ=0,1,2,…,S-1,S为过滤距离的种类数,w是正实数定义的最小距离过滤参数,是下取整运算,然后进行以下步骤的操作:
(1)构建一个容量为m′,地址为0到m′-1的位向量,定义为MVBF,并设定MVBF[i]=0,i=0,1,2,…,m′-1;
(2)将目标数据集合Ω中的每一个数据oy的第j组的k个哈希值,即 转换成2进制字符串,并定义为et,j,其中y=1,2,…,n,n属于目标数据集合Ω,t=1,2,…,k,以其中最长的一个2进制字符串长度为标准字符串长度,在其余的2进制字符串前添加0来使其达到标准字符串长度;
(3)将et,j分为两个字符子串,即其中表示字符串的串接,的长度为S-1,的长度为标准字符串长度减S-1;
(4)用一个均匀散列的哈希函数将串接的字符串散列为k′个地址,定义为:其中p=1,2,…k′,并定义该均匀散列的哈希函数为f1;
(5)将t=1,2,…,k的所有字符串中相同序号的字符按顺序串接成新的字符串其中,v为1,…,S-1,是字符串中字符的序号,为字符串的第v个字符,然后用一个均匀散列的哈希函数将字符串散列为k′位地址,定义为:其中p=1,2,…k′,并定义该均匀散列的哈希函数为f2;
(6)将步骤(4)中的地址与步骤(5)中的地址进行重新组合成新的地址,定义为其中v为1,…,S-1,
(7)在MVBF中将第j组的k′个地址置1;
(8)将待查询的多维数据定义为q,然后用上述的距离敏感哈希函数进行表征,即
(9)将待查询的多维数据q的第j组的k个哈希值,即转换成2进制字符串,在前添加0来使其达到标准字符串长度-θ,并定义为e′t,j;
(10)将e′t,j分为两个字符子串,即其中为字符串的串接,的长度为S-1-θ,的长度为标准字符串长度减S-1;
(11)用同样的哈希函数f1将串接的字符串散列为k′个地址,定义为:其中p=1,2,…k′;
(12)将t=1,2,…,k的所有字符串中相同序号的字符按顺序串接成新的字符串其中,v′为1,…,S-1-θ,是字符串中字符的序号,为字符串的第v′个字符,然后用同样的哈希函数f2将字符串散列为k′位地址,定义为:其中p=1,2,…k′;
(13)将步骤(11)中的地址与步骤(12)中的地址进行重新组合成新的地址,定义为其中v′为1,…,S-1-θ;
(14)在第j组的k′个哈希值后接上θ个0,定义为D′1,j,D′2,j,…,D″k,j,p=1,2,…k′;
(15)如MVBF[D′1,j],MVBF[D′1,j+1],…,MVBF[D′1,j+2θ-1]中有一个为1,则定义D′1,j地址通过;如D′1,j,D′2,j,…,D″k,j都通过,则定义第j组在过滤器MVBF通过,如果L组中任意一组在过滤器MVBF通过,则确认q是目标数据集合Ω的近似成员,否则q不是目标数据集合Ω的近似成员。
与现有技术相比,本发明的优点在于通过定义新的距离敏感哈希函数支持的新结构,分别来表征目标数据集合中的多维数据和待查询的多维数据,不需要重新构造过滤器,能够支持更多的过滤距离参数的近似成员查询,大幅度减少了空间代价,本发明使用了多个函数组数,且每个函数组数包含多个函数,在最终确认是否目标数据集合Ω的近似成员时使用“与-或”结合的方式进行判断,也能够降低过滤器的假阴性率,同时,本发明通过构建一个实体校验器,通过校验,大大降低了不同虚拟过滤器的假阳性率。此外,通过验证,本发明的技术方案在准确性略有降低的情况下,节省了较多的空间资源。
附图说明
图1为本发明过滤器中关键结构MVBF的构造步骤示意图;
图2为具体实施例中本发明方法与现有技术LSBF方法的假阳性率和假阴性率比较示意图;
图3为具体实施例中本发明方法不同过滤距离参数过滤器的错误率示意图;
图4为具体实施例中本发明方法与现有技术LSBF方法的空间代价比较示意图;
图5为具体实施例中本发明与现有技术MLBF方法的错误率比较示意图。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
我们使用真实手写数字字母识别数据集来评估比较本发明的方法和现有的LSBF方法。该数据集包含5,620个数据,每个数据以64维特征代表手写的***数字,即,'0','1',…,'9'。特征值范围是0到16的整数。将'0'的数据分为两组,一组共100个数据作为集合Ω,另一组作为测试数据q,以测试假阴性率;另外,取为'1'的100个数据作为集合Ω,其他数据作为测试数据q,以测试假阳性率。实验结果是10000次随机计算的平均值。
一种基于过滤器的高维数据近似成员查询方法,将目标数据集合定义为Ω,并将距离敏感哈希函数H定义为其中t=1,2,…,k,j=1,2,…,L,L为函数组数,k为每一函数组中的函数个数,o是多维数据,at,j是与o维数相同的随机向量,其每一维的数据符合标准正态分布,·是点积运算,2θw是距离过滤参数,θ=0,1,2,…,S-1,S为过滤距离的种类数,w是正实数定义的最小距离过滤参数,是下取整运算,然后进行以下步骤的操作:
(1)构建一个容量为m′=65536,地址为0到m′-1的位向量,定义为MVBF,并设定MVBF[i]=0,i=0,1,2,…,m′-1;
(2)将目标数据集合Ω中的每一个数据oy的第j组的k个哈希值,即 转换成2进制字符串,并定义为et,j,其中t=1,2,…8,以其中最长的一个2进制字符串长度为标准字符串长度,在其余的2进制字符串前添加0来使其达到标准字符串长度;
(3)将et,j分为两个字符子串,即其中表示字符串的串接,的长度为S-1,的长度为标准字符串长度减S-1,S为过滤距离的种类数,取S=4;
(4)用一个均匀散列的哈希函数将串接的字符串散列为k′个地址,取k′=5,定义为:其中p=1,2,…5,并定义该均匀散列的哈希函数为f1;
(5)将t=1,2,…8的所有字符串中相同序号的字符按顺序串接成新的字符串其中,v为1,2,3,是字符串中字符的序号,为字符串的第v个字符,然后用一个均匀散列的哈希函数将字符串散列为k′=5位地址,定义为:其中p=1,2,…5,并定义该均匀散列的哈希函数为f2;
(6)将步骤(4)中的地址与步骤(5)中的地址进行重新组合成新的地址,定义为其中v为1,2,3;
(7)在MVBF中将第j组的k′个地址置1;
(8)将待查询的64数据定义为q,然后用上述的距离敏感哈希函数进行表征,即S为过滤距离的种类数,取S=4;
(9)将待查询的64数据q的第j组的k=8个哈希值,即转换成2进制字符串,在前添加0来使其达到标准字符串长度-θ,并定义为e′t,j;
(10)将e′t,j分为两个字符子串,即其中为字符串的串接,的长度为S-1-θ,的长度为标准字符串长度减S-1;
(11)用同样的哈希函数f1将串接的字符串散列为k′=5个地址,定义为:其中p=1,2,…5;
(12)将t=1,2,…,k的所有字符串中相同序号的字符按顺序串接成新的字符串其中,v′为1,…,S-1-θ,是字符串中字符的序号,为字符串的第v′个字符,然后用同样的哈希函数f2将字符串散列为k′=5位地址,定义为:其中p=1,2,…5;
(13)将步骤(11)中的地址与步骤(12)中的地址进行重新组合成新的地址,定义为其中v′为1,…,S-1-θ;
(14)在第j组的k′=5个哈希值后接上θ个0,定义为D′1,j,D′2,j,…,D″k,j,p=1,2,…5;
(15)如MVBF[D′1,j],MVBF[D′1,j+1],…,MVBF[D′1,j+2θ-1]中有一个为1,则定义D′1,j地址通过;如D′1,j,D′2,j,…,D″k,j都通过,则定义第j组在过滤器MVBF通过,如果L组中任意一组在过滤器MVBF通过,则确认q是目标数据集合Ω的近似成员,否则q不是目标数据集合Ω的近似成员。
从图2的实验结果可知,本发明的方法比现有技术的LSBF方法的假阴性率低很多,假阳性率基本接近。假阴性率线和假阳性率线相交时对应的误差,本发明方法优于现有技术的LSBF方法,所以实际效果更好。图3显示了两个不同过滤参数过滤器的错误率。从图上可以看到随着w的增加,假阳性率增加,假阴性率降低。当θ=0,MVBF结构具有最低的假阳性率。对于特定的应用程序,我们可以选择的一个适当的值。例如,如果θ=0,可以选择w=5,此时的假阳性和阴性率都接近0.08。如果θ=1,我们可以选择w=4,此时的假阳性和阴性率都接近0.07。从图4的空间代价比较可以看出,因为本发明的方法只需要建立一个实体过滤器即可产生4个不同过滤距离,这等于使用了4个虚拟过滤器;而现有技术的LSBF方法需针对不同过滤距离,建立对应的实体过滤器。因此,随着不同过滤距离需求的增加,即S的增加,现有技术LSBF方法的空间代价增加,而本发明的方法则保持不变。
图5显示了两种过滤器,即MLBF和MVBF的错误率。从图上可以看到MVBF与MLBF错误率很接近,但MVBF比MLBF少一个实体过滤器,因此空间效率高很多。