39、基于Kd树的隐私保护外包K-means聚类方案

基于Kd树的隐私保护外包K-means聚类方案

在数据挖掘和机器学习领域,K-means聚类是一种广泛应用的算法,但在处理敏感数据时,数据隐私保护成为关键问题。本文将介绍一种基于Kd树的数据结构和秘密共享范式的隐私保护外包K-means聚类(PPOKC)方案,它能在有效聚类的同时保护数据隐私。

核心算法介绍
  • 安全最小算法(SMin) :通过不断将数据集两两比较取最小值,逐步缩小数据集,直至得到最小值。例如,对于一个大数据集,先将其两两分组比较,得到一个包含n/2个整数的较小数据集,再重复此过程。该算法与求最大值算法差异不大。
  • 安全过滤算法(SF) :从Kd树的根节点开始遍历,为每个节点确定候选聚类。在迭代过程中,不断删除不符合要求的候选聚类,直到只剩下一个。以下是SF算法的详细步骤:
Algorithm 2 SF
Input: Kd-tree node ⟨c⟩, candidate cluster identifier ⟨pi⟩, i ∈[k], and initial cluster
center ⟨zi⟩, i ∈[k]
Output: Updated ⟨pi⟩, i ∈[k] and iteration termination identifier f
Performed by: C0 and C1
1: for i = 1 to n do
2:    ⟨di⟩←SED(⟨zi⟩, ⟨c⟩)
3:    ⟨di⟩←MUL(⟨di⟩, ⟨pi⟩) + MUL(⟨max⟩, 1 −⟨pi⟩)
4: end for
5: {⟨r1⟩, ..., ⟨rk⟩} ←SMin(⟨d1⟩, ..., ⟨dk⟩)
6: ⟨z∗⟩←Σk i=1MUL(⟨ri⟩, ⟨zi⟩)
7: for j = 1 to k do
8:    ⟨μ⟩←⟨zj⟩−⟨z∗⟩
9:    ⟨r⟩←SC(⟨μ⟩, 0)
10:    ⟨v⟩←MUL(⟨r⟩, ⟨c⟩min)+MUL(1 −⟨r⟩, ⟨c⟩max)
11:    ⟨d∗⟩←SED(⟨z∗⟩, ⟨v⟩)
12:    ⟨dj⟩←SED(⟨zj⟩, ⟨v⟩)
13:    ⟨dj⟩←MUL(⟨dj⟩, ⟨pj⟩) + MUL(⟨max⟩, 1 −⟨pj⟩)
14:    ⟨pj⟩←SC(⟨dj⟩, ⟨d∗⟩)
15: end for
16: ⟨f⟩←SC(Σk j=1⟨pj⟩, 2)
17: f ←Rec(⟨f⟩0, ⟨f⟩1)
PPOKC方案流程

该方案主要包括两个阶段:
1. 初始化阶段
- 用户在其数据集上生成Kd树。
- 将数据和Kd树的参数拆分为两个共享部分,分别发送给云服务器C0和C1。
2. 过滤阶段
- 云服务器对Kd树的每个节点执行过滤算法,将数据划分到相应的聚类中。
- 每次迭代结束后,更新聚类中心,并比较新旧聚类中心,判断是否满足终止条件。

以下是PPOKC方案的详细算法:

Algorithm 3 PPOKC
Input: Secret shared data xij, i ∈[n], j ∈[m], iteration termination parameter ϵ
Output: Secret shared cluster Centers ⟨z′ j⟩, j ∈[k]
1: Initialization (User)
2: Construct kd-tree on plaintext
3: Secret shared all related data, including raw data xij, kd-tree and random initial
cluster centers zj, j ∈[k] and send above data to C0 and C1
4: Clustering (C0, C1)
5: For root node, we have candidate cluster identifier array {⟨p1⟩, ..., ⟨pk⟩}, with all
value set to 1.
6: Traverse nodes in kd-tree until all nodes are clustered.
7: f ←SF(⟨c⟩, ⟨p⟩, ⟨z1⟩, ..., ⟨zk⟩)
8: if f == 1 then
9:    Update cluster ⟨z′ j⟩←⟨z′ j⟩+ MUL(⟨pj⟩, ⟨c⟩), j ∈[k]
10: else
11:    Repeat above process to child nodes of ⟨c⟩
12: end if
13: ⟨r⟩←SC(Σk i=1 SED(⟨zi⟩, ⟨z′ i⟩), ϵ)
14: if ⟨r⟩0 + ⟨r⟩1 == 1 then
15:    Finish clustering and return the secret shared results.
16: else
17:    {⟨z1⟩, ..., ⟨zk⟩} ←{⟨z′ 1⟩, ..., ⟨z′ k⟩}
18:    Go back to step 5.
19: end if
性能对比

为了验证PPOKC方案的性能,我们进行了实验,与其他方案进行了对比。以下是在一个小数据库(n = 8192, m = 5, k = 3)上的实验结果:
| 方案 | 计算成本 | 通信成本 |
| — | — | — |
| PPCOM | 401 min | 1430 MB |
| SEOKC | 17 s | 148 MB |
| PPOKC | 20 s | 405 MB |

从表中可以看出,PPOKC方案的计算效率远高于PPCOM,与SEOKC相近;通信成本适中。

实验分析
  • 真实世界数据集实验 :在KEGG代谢反应网络数据集和2维数据集上的实验表明,PPOKC方案在计算速度上明显优于其他方案,且能达到与原始算法相同的模型精度。
  • 合成数据集实验 :通过固定一个参数,变化另外两个参数的实验策略,我们发现维度m对计算和通信成本影响较小,而聚类数k的增加会使计算和通信成本几乎线性增加。

综上所述,PPOKC方案不仅高效,而且安全,适用于大规模数据集。它通过在不同距离数据上添加不同随机噪声,避免了信息泄露,为隐私保护的K-means聚类提供了一种可靠的解决方案。

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始]):::startend --> B(初始化):::process
    B --> C(构建Kd树):::process
    C --> D(数据秘密共享):::process
    D --> E(云服务器聚类):::process
    E --> F{是否满足终止条件?}:::decision
    F -- 是 --> G([结束]):::startend
    F -- 否 --> H(更新聚类中心):::process
    H --> E

这个流程图展示了PPOKC方案的整体流程,从初始化开始,经过构建Kd树、数据秘密共享,进入云服务器聚类阶段,不断迭代直到满足终止条件。

基于Kd树的隐私保护外包K-means聚类方案

安全分析

在安全方面,我们假设云服务器C0和C1可能成为潜在的对手。通过标准模拟论证,为包括SED、SC、SMin(S/L)和SF协议在内的核心构建模块提供了正式的安全证明。然后依据组合定理,证明了PPOKC方案在半诚实模型下也是安全的。以下是部分关键定理及证明思路:
- 定理1 :SED算法在半诚实模型下是安全的。因为SED中大部分操作由C1和C0本地执行,交互仅发生在安全的MUL算法中,所以其安全性很容易证明。
- 定理2 :SC算法在半诚实模型下是安全的。该算法基于已证明安全的百万富翁协议设计,C0用不同随机数对数据进行加扰后发送给C1,结合引理1以及布尔共享到加法共享转换的安全性证明,可得出SC的安全性。
- 定理3 :SMin(S/L)在半诚实模型下是安全的。小数据集上的SMin(S)协议是SC的另一种形式,其安全性可直接从SC的安全性得出。对于大数据集的SMin(L),通过证明云服务器的执行图像与模拟图像在计算上不可区分,从而得出其安全性。
- 定理5 :PPOKC方案在半诚实模型下是安全的,不会泄露任何中间信息。由于PPOKC方案是前面已证明安全的协议的顺序组合,根据组合定理可知其安全性。同时,由于两个云服务器不能勾结,它们无法得知数据记录被划分到哪个聚类,数据访问模式得以隐藏。而且Kd树结构使得每个节点包含的数据记录数量已知,但具体数据未知,云服务器无法追溯数据记录与节点的关系。

与其他方案的对比及优势

近年来,许多研究聚焦于隐私保护的K - means聚类协议,主要分为多方计算和外包计算两种场景。
- 多方计算场景
- 水平分区数据 :Patel等人使用基于椭圆曲线密码学的ElGamal方案,减少了每个站点的多次加密操作,在计算成本上较为高效,且通过环形拓扑通信降低了通信成本,但会泄露中间值,安全性不足。Mohassel等人基于1 - out - of - N不经意传输提出了通信高效的安全乘法方法,提出了可扩展且无安全问题的隐私保护聚类算法,在两方计算场景中既高效又安全。
- 垂直分区数据 :Doganay等人使用加法秘密共享方案进行K - means聚类,不泄露本地数据库。Lin等人结合同态加密和加法秘密共享提出近似比较协议,聚类精度与标准K - means算法相近。
- 外包计算场景
- Liu使用Liu加密算法和Paillier加密算法加密数据后外包给一个云,但用户在每次迭代中高度参与,且整个过程会泄露中间值,如聚类大小和质心。
- Jaschke等人提出了一个安全方案,但计算效率较低。

与这些方案相比,我们提出的PPOKC方案具有明显优势。例如,在与Wu的方案对比中,Wu的方案在S3ED算法中对同一行的所有向量距离添加相同噪声,无法保护向量距离的分布信息。而PPOKC方案在不同距离数据上添加不同随机噪声,不会泄露原始数据的任何信息。

实际应用建议

如果要在实际场景中应用PPOKC方案,可以按照以下步骤进行:
1. 数据准备 :收集需要进行聚类的数据,并确定数据的维度m、数据记录数n和聚类数k。
2. 环境搭建 :准备好具有合适计算资源的服务器,如Intel Core i9 - 10980XE 3.00 GHz CPU和64 GB RAM的服务器,或者匹配对比方案计算性能的服务器。
3. 方案实现 :使用C++实现整个系统,其中安全比较协议可使用百万富翁协议。
4. 运行实验
- 选择合适的数据集,如真实世界数据集或合成数据集。
- 按照PPOKC方案的算法流程进行聚类操作,设置好迭代终止参数ϵ。
5. 结果评估 :根据实验结果评估方案的性能,包括计算成本、通信成本和模型精度等。

总结与展望

PPOKC方案通过引入Kd树数据结构和秘密共享范式,为隐私保护的外包K - means聚类提供了一种高效且安全的解决方案。在性能上,它在计算效率和通信成本方面表现出色,尤其在处理大规模数据集和较多聚类数时优势明显。在安全方面,通过严格的安全证明,确保了在半诚实模型下不会泄露中间信息。

未来,我们可以进一步优化该方案,例如探索更高效的安全协议实现方式,以降低计算和通信成本。同时,可以考虑将该方案扩展到更多的应用场景,如分布式数据的聚类分析等。

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px

    A([开始实验]):::startend --> B{选择数据集类型}:::decision
    B -- 真实世界数据集 --> C(KEGG数据集实验):::process
    B -- 合成数据集 --> D(生成合成数据集):::process
    C --> E(计算性能评估):::process
    D --> F(设置参数: n, m, k):::process
    F --> G(进行实验):::process
    G --> E
    E --> H{是否满足需求?}:::decision
    H -- 是 --> I([结束实验]):::startend
    H -- 否 --> J(调整参数):::process
    J --> F

这个流程图展示了实验的整体流程,从选择数据集类型开始,分别对真实世界数据集和合成数据集进行实验,经过计算性能评估后,根据是否满足需求决定是否结束实验或调整参数重新实验。

通过以上的分析和实验,我们可以看到PPOKC方案在隐私保护的K - means聚类领域具有很大的潜力和应用价值。它为需要处理敏感数据的聚类任务提供了一个可靠的解决方案,能够在保证数据隐私的同时,实现高效的聚类分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值