KNN算法 比较

Pre

安全操作参考链接

Hufu

在这里插入图片描述

hufu算法详细信息。Alg.1 示出了对联合kNN查询的分解。line 1-8得出半径。我们初始化半径的下界(l=0)和上界(u=v0),其中v0可以设置为区域的直径或由用户定义。然后,我们在第2-8行执行二进制搜索,其中ε0是距离的精度下限,可以设置为位置坐标的精度。在每次迭代中,第3行中的thres设置为(l+u)/2。对于当前的半径thres,我们在第4行中对每个data silo执行明文范围计数(plaintext),并在第5行中对各个silo的计数之和(βi)和整数k进行安全比较。第6-8行调整搜索半径的边界。如果总计数小于k,则当前半径太短,并且我们将l更新为thres作为新的下界(第6行)。如果总计数大于k,则意味着thres内有足够的点,并且我们将上界u更新为第7行中的thres。二进制搜索保证thres足够接近第k个最近距离。在最后一轮(第9-10行)中,对每个silo执行明文范围查询(plaintext range query)PRQFi(circle(p,thres)),我们使用secure set union来获得最终结果。

One Round

在这里插入图片描述Alg。1说明了详细的过程。在第1-2行中,每个数据所有者执行其本地kNN。在第3-5行中,我们使用半径ri表示到查询位置lq的第k个最近距离,使用areai表示到中心lq的半径为ri的圆的面积。然后,数据所有者Si的局部kNN对最终结果的贡献率ratei与areai成反比。为了计算ratei,我们首先通过安全求和运算SecureSum()计算在这里插入图片描述
,然后每个数据所有者Si可以将ratei计算为在这里插入图片描述
。因此,Si提供top(ratei×k)NN作为部分结果resi。最后,空间数据联邦在这些部分结果res1、res2、··、resn之间执行安全联合SecureUnion(),以收集最终结果。

Multi Round

在这里插入图片描述

Alg。2说明了详细的过程。在第1-3行中,每个数据所有者Si维护包含候选对象的集合UnadSeti和包含所选对象的集合AdSeti。Si的局部kNN被放入UnadSeti中作为初始化。与Alg.1 不同。Alg.2采用W(W>1)个循环来计算第4-8行中的最终结果,并且每个循环决定k/W个最近邻居(k/W NN)。具体来说,对于每一轮w,我们估计UnadSet1、UnadSet2、··、UnadSetn在这一轮中对k/w NN的贡献率,这与一轮算法类似。注意,在第w(w≥2)轮中,我们将areai微调为π[(ri)2−(r′i)2],其中ri定义为Alg.1的第4行。r′i是第(w−1)轮中ri的缓存值。Si的选定对象将从UnadSeti移除到AdSeti。在第9行中,最终结果由AdSet1、AdSet2、··、AdSetn上的安全集并集计算。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值