一种基于高维数据过滤器的近似成员查询方法技术领域
发明涉及一种近似成员查询方法,尤其是涉及一种基于高维数据过滤器的近似成
员查询方法。
背景技术
在很多应用领域中,如果查询数据与目标数据的距离越近,数据的价值就越高。例
如,安全官员想要检查某未知的物质(具有某些可检测的高维特征)是否属于清单所列的危
险化学品;网络管理员想要知道某用户的行为特征是否有害;摄影比赛裁判想检查提交的
照片是否与某一张大型数据库中的照片类似。这些查询都需要判断查询数据与(目标数据)
集合中数据的距离。如果是低维的小数据集,可通过线性查找解决,但是对一个海量的高维
数据集采用线性查找匹配的话,会非常耗时,很多情况下无法满足实时的需要。为提高处理
的速度,可以设置一个高维数据过滤器代表目标数据集合,根据距离过滤掉大部分查询数
据,少量剩下的数据可以再通过常规方法进一步处理,可显著提高系统的整体性能。
这个过滤器完成的就是近似成员查询(Approximate Membership Query,AMQ),即
回答“查询数据是否接近于数据集合中的某个数据”。现有AMQ过滤器主要是结合LSH(距离
敏感哈希,Locality-Sensitive Hashing)和Bloom filter(布鲁姆过滤器)技术的,其主要
代表有DSBF(Distance-sensitive Bloom filters)[1]、LSBF(Locality-Sensitive Bloom
Filter)[2]和MLBF(Multi-Granularity Locality-Sensitive Bloom Filter)[3]。
DSBF首次综合LSH和Bloom filter的方法来过滤AMQ查询,其返回组成员的近似查
询结果,近似度可采用不同的衡量标准,它可以改善网络和数据库应用程序的速度和空间,
从而避免对完整的最近邻查询等代价昂贵的比较操作。LSBF是DSBF的改进,使用LSH函数来
构造Bloom filter过滤AMQ查询,LSBF还采用了额外的位向量来降低假阳性率。
但是,使用DSBF和LSBF这两个技术来过滤AMQ查询都有一个限制,即他们仅能过滤
给定距离的AMQ查询。然而,给定一个合适的距离并不容易,过大或过小的距离值,可能会导
致不可接受的查询结果。而一旦过滤器的过滤网格参数固定后就不能改变,即能过滤的距
离值是确定的,如需要同时过滤多个不同的距离值,则需要根据原始数据重新构造过滤器,
也即改变过滤距离参数。然而,为节省空间,原始数据一般并不保存,无法构造不同的距离
参数的过滤器。
针对这一问题,MLBF构造时,不需要提前确定过滤距离,而是设置一个最小过滤距
离。以后过滤数据时,可以根据这一最小距离的2的指数倍过滤,即1倍、2倍、4倍、8倍、16倍
等过滤,达到了过滤距离动态变化的效果。但是,这一方法过滤最小距离的整数倍距离,如
需要过滤9倍距离时,只能选择8倍或者16倍,造成一定的误差。
发明内容
本发明所要解决的技术问题是提供一种基于过滤器的高维数据近似成员查询方
法,在固定过滤网格(距离)参数的过滤器的基础上,不需要重新构造过滤器,即能够实现更
多的过滤网格参数的近似成员查询,并且能够节省空间资源。
本发明解决上述技术问题所采用的技术方案为:一种基于高维数据过滤器的近似
成员查询方法,将目标数据集合定义为Ω,并构建一个容量为u,地址为0到u-1的位向量,定
义为SBF,并设定位向量中的每一位SBF[j]=0,j=0,1,2,…,u-1;将距离敏感哈希函数H定
义为其中t=1,2,…,k,k为每一函数组中的函数个数,o是多维数
据,at是与o维数相同的随机向量,其每一维的数据符合标准正态分布,·是点积运算,w是
正实数定义的最小距离过滤参数,是下取整运算,%是取余运算,m是SBF的个数,其中k小
于m,然后进行以下步骤的操作:
(1)构建一个容量为m个SBF,地址为0到m-1的SBF的组合,定义为ILBF,即SBF0,
SBF1,SBF2,…,SBFm-1;
(2)将目标数据集合Ω中的每一个数据oi编制唯一ID,即ID(oi),i=1,2,…,n,n是
目标数据集合Ω中的数据个数;
(3)对目标数据集合Ω中的每一个数据oi,计算k个哈希值,即
并以此为下标,在ILBF中选中k个SBF;
(4)用散列值为0到u-1均匀散列的k′个哈希函数将ID(oi),散列为k′个地址,将上
述所有k个SBF的k′个地址都置为1,其中k′小于u;
(5)将待查询的多维数据定义为q,然后用距离敏感哈希函数进行表征,即
其中t=1,2,…,k,并以此为地址,在ILBF中选中k个SBF;
(6)对于步骤(5)的每个将θ-1个邻居SBF按位或运算,并定义为VSBFt,即
(7)将上述k个VSBFt按位求和,并定义为向量SumBF;
(8)对于0.5k到0.8k之间的所有正整数,取其中一个正整数,并定义为v,如果向量
SumBF中有k′个数值大于或等于v,其中则确认q是目标数据集合Ω的近似成员,否则q不是
目标数据集合Ω的近似成员。
与现有技术相比,本发明的优点在于通过定义新的距离敏感哈希函数支持的新结
构,分别来表征目标数据集合中的多维数据和待查询的多维数据,不需要重新构造过滤器,
能够支持更多的过滤距离参数的近似成员查询,大幅度减少了空间代价,支持整数倍距离
的数据过滤。
具体实施方式
以下结合实施例对本发明作进一步详细描述。
一种基于高维数据过滤器的近似成员查询方法,将目标数据集合定义为Ω,并构
建一个容量为u,地址为0到u-1的位向量,定义为SBF,并设定位向量中的每一位SBF[j]=0,
j=0,1,2,…,u-1;将距离敏感哈希函数H定义为其中t=1,2,…,k,
k为每一函数组中的函数个数,o是多维数据,at是与o维数相同的随机向量,其每一维的数
据符合标准正态分布,·是点积运算,w是正实数定义的最小距离过滤参数,是下取整运
算,%是取余运算,m是SBF的个数,其中k小于m,然后进行以下步骤的操作:
(1)构建一个容量为m个SBF,地址为0到m-1的SBF的组合,定义为ILBF,即SBF0,
SBF1,SBF2,…,SBFm-1;
(2)将目标数据集合Ω中的每一个数据oi编制唯一ID,即ID(oi),i=1,2,…,n,n是
目标数据集合Ω中的数据个数;
(3)对目标数据集合Ω中的每一个数据oi,计算k个哈希值,即
并以此为下标,在ILBF中选中k个SBF;
(4)用散列值为0到u-1均匀散列的k′个哈希函数将ID(oi),散列为k′个地址,将上
述所有k个SBF的k′个地址都置为1,其中k′小于u;
(5)将待查询的多维数据定义为q,然后用距离敏感哈希函数进行表征,即
其中t=1,2,…,k,并以此为地址,在ILBF中选中k个SBF;
(6)对于步骤(5)的每个将θ-1个邻居SBF按位或运算,并定义为VSBFt,即
(7)将上述k个VSBFt按位求和,并定义为向量SumBF;
(8)对于0.5k到0.8k之间的所有正整数,取其中一个正整数,并定义为v,如果向量
SumBF中有k′个数值大于或等于v,其中则确认q是目标数据集合Ω的近似成员,否则q不是
目标数据集合Ω的近似成员。
下面对本发明的方法与参考文献[3]的方法的性能进行比较。数据集Ω是随机合
成,含500个数据,每个数据20维,每维数据服从[1,1000]均匀分布。为测试假阴性率,合成
查询对象与Ω中某数据对象每一维距离均匀分布于区间0.100-0.145;为测试假阳性率,合
成查询对象与Ω中某数据对象每一维距离均匀分布于区间10.0-14.5。由于计算成本主要
来自LSH函数的相乘运算,为公平起见,本发明和参考文献[3]的函数个数都设置成一致。实
验中,参考文献[3]的k=2,L=8或者k=4,L=4,即函数个数都是16,与本发明一致。空间消
耗也设置一样,参考文献[3]占218位,本发明占u=32,m=8192,共32×8192=218位。
由于参考文献[3]被设计为仅过滤2指数次方距离的数据,实验用保守的较大的距
离来过滤(即表1标记为*),如过滤距离5,参考文献[3]实际过滤距离为8。表1显示,参考文
献[3]可以控制假阳性率和假阴性率到比较低的水平,但保守的方法会导致在部分过滤距
离上产生"阶跃函数"的效果,影响准确率。而本发明的方法,由于参数v的控制,在基本上所
有距离上,准确率都比较高。
表1.本发明与参考文献[3]的性能比较
[1]Kirsch and M.Mitzenmacher,"Distance-sensitive Bloom Filters,"in
Proc.8th Workshop Algorithm Eng.Exper.,pp.41-50.
[2]Y.Hua,B.Xiao,B.Veeravalli,and D.Feng,"Locality-sensitive Bloom
Filter for Approximate Membership Query,"IEEE Trans.Comput.,vol.61,no.6,
pp.817-830,Jun.2012.
[3]J.Qian,Q.Zhu,and H.Chen,"Multi-granularity Locality-sensitive
Bloom Filter,"IEEE Trans.Comput.,vol.64,no.12,pp.3500-3514,Dec.2015.