基于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聚类领域具有很大的潜力和应用价值。它为需要处理敏感数据的聚类任务提供了一个可靠的解决方案,能够在保证数据隐私的同时,实现高效的聚类分析。
超级会员免费看

被折叠的 条评论
为什么被折叠?



