Locally Private k-Means Clustering
- 本地私有k均值聚类
文章目录
论文题目
-
《Locally Private k-Means Clustering》(本地私有k均值聚类)
-
Author:Uri Stemmer
-
Publication: SODA '20: Proceedings of the Thirty-First Annual ACM-SIAM Symposium
on Discrete Algorithms January 2020 Pages 548–559
领域综述
聚类是机器学习中无标签背景下常用的算法,而k-means算法是聚类中最为经典的算法。如此“基于中心的聚类”,大多是寻找一个“最优”的中心集和通过分配数据集的划分。在超过60年的研究中,基于中心的聚类是无监督学习中的一个焦点问题,目的是使代价 cos t S ( C ) = ∑ cϵC ∥ x − c ∥ 2 \cos t_{S}\left( C \right) = \sum_{\text{cϵC}}^{}\left\| x - c \right\|^{2} costS(C)=cϵC∑∥x−c∥2最小。
由于聚类算法的大量应用,和用户对隐私意识的提高,对于私有k-means聚类算法的研究日益增长。差分隐私算法有两种主要模型:trusted-curator模型和local模型。前者假设了一个可以信任的负责人,收集所有的个人信息并分析它们,保证分析输出结果对于每个个体是隐藏的(但对负责人是可见的)。相反地,本地模型没有这个“负责人”,而是一个“不可信任的服务器”。这个服务器的目标是基于输入进行计算,但用户并不直接发送数据到服务器,而是在数据中添加一些噪音。本地模型的要求是每个用户的噪音对于模型数据分布几乎没有影响。在这篇论文中,正是基于这个模型进行研究。
在trusted-curator模型中,目前最先进的算法由Kaplan和Stemmer建立,拥有极小的 O ( 1 ) O\left( 1 \right) O(1)乘性误差以及 poly ( log n , k , d ) \text{poly}\left( \log n,\ k,\ d \right) poly(logn, k, d)的加性误差。其算法对于给定的 n n n输入点集合 S ∈ ( R d ) n S \in \left( R^{d} \right)^{n} S∈(Rd)n识别出一个还有 k k k个点的集合 C C C,满足
cos t S ( C ) ≤ O ( 1 ) ∙ O P T S ( k ) + p o l y ( log n , k , d ) \cos t_{S}\left( C \right) \leq O\left( 1 \right) \bullet OPT_{S}\left( k \right) + poly\left( \log n,\ k,\ d \right) costS(C)≤O(1)∙OPTS(k)+poly(logn, k, d)
其算法可以概括为3步:
私有地识别出候选中心集合 Y Y Y包含有大小为 k k k的子集,其代价较低;
计算每个候选中心以其为最近点的输入点的数量,把该值作为对噪音的估计,并保证满足LDP;
预处理候选中心以及噪音计数以识别低代价子集;
该算法的加性误差 ≈ n 2 3 \approx n^{\frac{2}{3}} ≈n32,而本论文正是在加性误差方面突破了瓶颈。
对于本地差分约束模型,有两个先进的研究:一个是由Nissim和Stemmer研究的算法,其乘性误差为 O ( k ) O(k) O(k)、加性误差为 ≈ n 2 3 \approx n^{\frac{2}{3}} ≈n32,其主要缺点是在用户和未信任服务器之间需要 O ( k ∙ log n ) O(k \bullet \log n) O(k∙logn)回合的信息交换;另一个研究继承与上一个研究,其改进算法仅需 O ( 1 ) O(1) O(1)回合的交互,且将乘性误差降低到 O ( 1 ) O(1) O(1),但没有降低加性误差。在这后一个研究中已经将交互回合数量和乘性误差降低得较为完美,但仍存在有巨大的加性误差。这两种方法的候选中心集合大小均 ≈ n 2 3 \approx n^{\frac{2}{3}} ≈n32,这导致其加性误差至少为 n 1 / 3 ∙ n = n 2 / 3 \sqrt{n^{1/3} \bullet n} = n^{2/3} n1/3∙n=n2/3。降低加性误差也正是本论文最为关键的部分。
论文阅读报告
摘要
该研究设计了一个在本地差分隐私模型运行的新算法。近似k均值聚类一定有两种误差:加性误差和乘性误差。该研究将该算法加性误差从 n 2 3 + a n^{\frac{2}{3}+ a} n32+a减少到 n 1 2 + a ( ∀ a > 0 ) n^{\frac{1}{2} + a}(\forall a > 0) n21+a(∀a>0)的同时,保持了当前最优乘性误差 O ( 1 ) O(1) O(1)。此外,该研究还证明加性误差的简单下界 ≈ n \approx \sqrt{n} ≈n对于k-means算法是必需的。
问题定义
客观上最小化k-means是NP难问题,因此研究集中在近似算法的研究上。近似算法存在着加性误差和乘性误差,减小这两种误差的理论值便是目前主流优化方向。
目前,在非隐私聚类领域,最优的乘性误差为 OP T s ( k ) = 6.357 \text{OP}T_{s}(k) = 6.357 OPTs(k)=6.357。这意味着该最优算法找出k个中心的集合所用代价不会多余最低可能代价。隐私模型相较于非隐私模型,在近似算法中会多出一个加性误差,该加性误差正比于该输入域的直径。乘性误差和加性误差在两种隐私模型中均存在。因此,在近似算法的研究中,都以减少乘性误差和加性误差为主要目标。
算法及证明
K-means聚类算法也称k均值聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为类簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。K-means聚类算法是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。算法实现步骤如下:
首先确定一个k值,即我们希望将数据集经过聚类得到k个集合。
从数据集中随机选择k个数据点作为质心。
对数据集中每一个点,计算其与每一个质心的距离(如欧式距离),离哪个质心近,就划分到那个质心所属的集合。
把所有数据归好集合后,一共有k个集合。然后重新计算每个集合的质心。
如果新计算出来的质心和原来的质心之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),我们可以认为聚类已经达到期望的结果,算法终止。
如果新质心和原质心距离变化很大,需要迭代3~5步骤。
以上k-means算法的计算服务器对每个输入数据的了解都是精准的,换句话说,数据是公开的,对于服务器没有隐私。在要求保护隐私的服务器的目标是基于输入进行计算,但用户并不直接发送数据到服务器,而是在数据中添加一些噪音。本地模型的要求是每个用户的噪音对于模型数据分布几乎没有影响。而这一模型的基础理论便是本地差分隐私(LDP)。本地差分隐私是该模型最为重要的部分之一。多个分布式数据库作为多个可信任的部分,基于协议进行多轮传输。在每轮传输中,每个部分选择一段根据输入、内部投币和之前收到的消息生成的新消息。协议的输出由所交换消息的转录本的确定性函数指定。
在朴素的k-means算法中,选择中心具有极大的不确定性。再加上私有模型,为了减少交互次数,不能频繁访问输入点,这些都给中心选择带来不便。比如使用k-means++会极大增加未信任服务器和用户的交互次数。不从输入点选中心,从候选中心中选(输入点之前先计算好);分配点,不分配到最近的中心,而是设置候选中心新属性,分配满足条件。本论文算法的主要思路如下:
- 任取一个点作为1个中心
- 再取k-1个点作为中心,每取一个点作为中心要使得代价最低
前面提到的两个研究中,已经将交互回合数量和乘性误差降低得较为完美,但仍存在有巨大的加性误差。这两种方法的候选中心集合大小均 ≈ n 2 3 \approx n^{\frac{2}{3}} ≈n32,这导致其加性误差至少为
n 1 / 3 ∙ n = n 2 / 3 \sqrt{n^{1/3} \bullet n} = n^{2/3} n1/3∙n=n2/3
降低加性误差也正是本论文最为关键的部分。因此本文的思路主要从如何减小候选中心集合大小入手。
为了识别出 k k k个低代价中心,该论文设计了 WeightedCenter \text{WeightedCenter} WeightedCenter算法。该算法首先需要在分布式数据库上执行* GoodCenter \text{GoodCenter} GoodCenter*算法。*该算法继承与在先前最优研究,该算法旨在从输入点中筛选出若干候选中心。然而在参数 r r r的选择数量和出现指数级的增长。对于任意一次算法执行及其特定的参数 r r r,能够删选出若干组中心的子集(即假定中心)。详细来说,当 l ϵ [ k ] l\epsilon\left\lbrack k \right\rbrack lϵ[k]*时,对于
r l opt = 2 ∣ S l opt ∣ ∑ xϵ S l opt ∥ x − c l opt ∥ 2 r_{l}^{\text{opt}} = \sqrt{\frac{2}{\left| S_{l}^{\text{opt}} \right|}\sum_{\text{xϵ}S_{l}^{\text{opt}}}^{}\left\| x - c_{l}^{\text{opt}} \right\|^{2}} rlopt=∣∣Slopt∣∣2xϵSlopt∑∥∥x−clopt∥∥2
算法使这些中心以* r l opt r_{l}^{\text{opt}} rlopt为半径的情况下包含的点尽可能多,即该聚类尽可能大,形式化描述为 ∣ S l opt ∣ ≤ n \left| S_{l}^{\text{opt}} \right| \leq \sqrt{n} ∣∣Slopt∣∣≤n(较小的聚类可以忽略,因它们只会引起可以接受的、至多 n \sqrt{n} n*的加性误差)。当聚类在一定范围内,即
∥ y l − c l opt ∥ ≤ O ( r l opt ) \left\| y_{l} - c_{l}^{\text{opt}} \right\| \leq O\left( r_{l}^{\text{opt}} \right) ∥∥yl−clopt∥∥≤O(rlopt)
若用一个“足够近”的点来代替,能保证只有乘性的常数误差。对于每个候选中心* Y Y Y子集 P P P(满足 ∣ P ∣ ≥ n \left| P \right| \geq \sqrt{n} ∣P∣≥n,对算法隐藏),在分布式数据中满足 P ∈ S P \in S P∈S,至少有 1 − β 1 - \beta 1−β的可能性 Y Y Y包含一个中心 y y y*满足
∥ y − A v e r a g e ( P ) ∥ < O ( d i a m ( P ) ) \left\| y - Average(P) \right\| < O(diam\left( P \right)) ∥y−Average(P)∥<O(diam(P))
这样通过 GoodCenter \text{GoodCenter} GoodCenter算法选出来的点即被称为候选中心 Y Y Y。
前人尝试过基于以上算法,进行对带噪音的数据统计每个候选中心以其为最近点的输入数据个数,记为* # s ( y ) \# s(y) #s(y),但是这样的方法会使噪音叠加,导致加性误差增大。因此本论文改进了算法,设计了 WeightedCenter \text{WeightedCenter} WeightedCenter*算法。基于已经选择好的候选中心,执行以下算法:
WeightedCenter 算 法 \text{WeightedCenter}算法 WeightedCenter算法
输入:失败可能性 β \beta β,隐私参数 ε , δ \varepsilon,\ \delta ε, δ
设置:每个参与者$ jϵ [ n ] \text{jϵ}\lbrack n\rbrack jϵ[n]拥有 x i ϵ B ( 0 , Λ ) x_{i}\epsilon B(0,\ \Lambda) xiϵB(0, Λ),定义数据集 S = ( x 1 , x 2 , ⋯ , x n ) S = (x_{1},\ x_{2},\cdots,x_{n}) S=(x1, x2,⋯,xn)
构造候选中心:以预设的 t t t, r r r和隐私参数 ε 4 l o g ( n ) \frac{\varepsilon}{4log(n)} 4log(n)ε, δ l o g ( n ) \frac{\delta}{log(n)} log(n)δ作为参数在数据集 S S S执行 GoodCenter \text{GoodCenter} GoodCenter算法,得出若干中心点集合 Y i r Y_{i}^{r} Yir
将数据集的点分配给候选中心:将 a ( i , x i ) a(i, x_{i}) a(i,xi)极为每个用户被分配到的 Y Y Y中的中心之一。计算 a ( i , x i ) a(i, x_{i}) a(i,xi)满足下列条件:使聚类半径 r i r_{i} ri最小,以至于 x i x_{i} xi以 r i r_{i} ri构造中心, y ( i , x i , r i ) y(i,x_{i},r_{i}) y(i,xi,ri)记为这个中心,将 y i ∗ y_{i}^{*} yi∗记为 x i x_{i} xi最近距离的中心。根据 ∥ x i − y i ∗ ∥ \left\| x_{i} - y_{i}^{*} \right\| ∥xi−yi∗∥和 ∥ x i − y ( i , x i , r i ) ∥ \left\| x_{i} - y(i,x_{i},r_{i}) \right\| ∥xi−y(i,xi,ri)∥大小关系选择更近的中心。
估计候选中心的权值:使用 ε 4 − LDP \frac{\varepsilon}{4}-\text{LDP} 4ε−LDP算法获得每个中心的估计值 a ^ ( y ) ≈ a ( y ) ≜ ∣ { i : a ( i , x i ) = y } ∣ \hat{a}(y)\ \approx \ a(y) \triangleq |\{ i\ :\ a(i,\ xi)\ = y\}| a^(y) ≈ a(y)≜∣{i : a(i, xi) =y}∣,即估计每个中心“以该中心为最近中心的输入点的个数”。
重新分配点给候选中心:记 b ( i , x i ) b(i, x_{i}) b(i,xi)为重新分配的中心。挑选“分配到足够多点”的中心的集合 W W W,若有输入点的中心不在 W W W中,则将该输入点分配到 W W W中最近的一个点。
重新估计候选中心的权值:按照第3步的方法估计权值: b ^ ( y ) ≈ b ( y ) ≜ ∣ { i : b ( i , x i ) = y } ∣ \hat{b}(y)\ \approx b(y) \triangleq |\{ i\ :\ b(i,\ xi)\ = \ y\}| b^(y) ≈b(y)≜∣{i : b(i, xi) = y}∣。
K-Means++采样:初始化 Z 0 = ∅ Z_{0} = \varnothing Z0=∅,做以下操作 t = 100 k t = 100k t=100k次:
6.1. 在候选中心中选出一个点 w w w,每个点选出的概率与其和 Z 0 Z_{0} Z0中距离最近的点的距离成比例。
6.2. Z i = Z i − 1 ∪ { w } Z_{i} = Z_{i - 1} \cup \{ w\} Zi=Zi−1∪{w}
放大成功概率:重复步骤六 O ( log 1 β ) O(\log\frac{1}{\beta}) O(logβ1)次,将 Z Z Z记为获得的集合 Z t Z_{t} Zt的并集, Z Z Z是一个大小为 O ( k ∙ log 1 β ) O(k \bullet \log\frac{1}{\beta}) O(k∙logβ1)的集合。
估计采样中心的临近点数量:使用 ε 4 − LDP \frac{\varepsilon}{4} -\text{LDP} 4ε−LDP算法获得每个中心的估计值,即估计每个中心“以该中心为最近中心的输入点的个数”。
输出:非私有地识别出一个大小为 k k k的低代价子集。
实验结论
基于隐私模型的k-means算法需要对于带噪音的数据进行聚类,噪音带来了乘性和加性误差。在中心初值的选取过程中,首先要在预处理阶段运用 GoodCenter \text{GoodCenter} GoodCenter算法筛选出可能成为中心的“候选中心”集合 Y Y Y,满足以每个候选中心 y y y的聚类达到 O ( n ) O\left( \sqrt{n} \right) O(n)的数据规模,该算法有效降低了乘性误差。再通过 Weig h tedCenter \text{Weig}h\text{tedCenter} WeightedCenter算法从大集合 Y Y Y筛选出大小为 k k k的子集,通过分配后的 # s ( y ) \# s(y) #s(y)求值对每个中心进行赋权,然后通过再分配是的聚类进一步密集,取出子集作为中心集合初值。该方法保持了最优乘性误差 O ( 1 ) O(1) O(1),并将加性误差降低到了 n 1 2 n^{\frac{1}{2}} n21。再此基础上,论文给出了一个简单的、基于连续回合LDP算法的近似k-means问题的加性误差下界,结果从间隙阈值问题进行结果的迁移。
方法不足
本研究的理论加性误差为
O ~ ( n 1 2 + a ∙ k ∙ m a x { d , k } ) \tilde{O}(n^{\frac{1}{2} + a} \bullet k \bullet max\left\{ \sqrt{d},\ \sqrt{k} \right\}) O~(n21+a∙k∙max{d, k})
在该论文之前由Kaplan完成的研究中加性误差为
O ~ ( n 2 3 + a ∙ d 1 3 ∙ k 2 ) \tilde{O}(n^{\frac{2}{3} + a} \bullet d^{\frac{1}{3}} \bullet k^{2}) O~(n32+a∙d31∙k2)
其中 n n n为数据集规模, d d d为数据集直径, k k k为聚类簇数。
可以直观看出,在数据集较大的情况下,本研究的算法(记为算法A)是远优于另一个研究的算法(记为算法B)。但是在输入点数、直径和簇数变化的情况下,本研究的算法可能没有明显优势。当满足
O ~ ( n 1 2 + a ∙ k ∙ m a x { d , k } ) O ~ ( n 2 3 + a ∙ d 1 3 ∙ k 2 ) ≤ O ( 1 ) \frac{\tilde{O}(n^{\frac{1}{2} + a} \bullet k \bullet max\left\{ \sqrt{d},\ \sqrt{k} \right\})}{\tilde{O}(n^{\frac{2}{3} + a} \bullet d^{\frac{1}{3}} \bullet k^{2})} \leq O(1) O~(n32+a∙d31∙k2)O~(n21+a∙k∙max{d, k})≤O(1)
时,算法A占优;反之算法B占优。
O ~ ( n 1 2 + a ∙ k ∙ m a x { d , k } ) O ~ ( n 2 3 + a ∙ d 1 3 ∙ k 2 ) = O ~ ( max { d , k } n 1 6 ∙ d 1 3 ∙ k ) ≤ O ( 1 ) \frac{\tilde{O}(n^{\frac{1}{2} + a} \bullet k \bullet max\left\{ \sqrt{d},\ \sqrt{k} \right\})}{\tilde{O}\left( n^{\frac{2}{3} + a} \bullet d^{\frac{1}{3}} \bullet k^{2} \right)} = \tilde{O}\left( \frac{\max\left\{ \sqrt{d},\ \sqrt{k} \right\}}{n^{\frac{1}{6}} \bullet d^{\frac{1}{3}} \bullet k} \right) \leq O\left( 1 \right) O~(n32+a∙d31∙k2)O~(n21+a∙k∙max{d, k})=O~⎝⎛n61∙d31∙kmax{d, k}⎠⎞≤O(1)
两边省略常数后,粗略地得到:
max { d , k } ≪ n 1 6 ∙ d 1 3 ∙ k \max\left\{ \sqrt{d},\ \sqrt{k} \right\} \ll n^{\frac{1}{6}} \bullet d^{\frac{1}{3}} \bullet k max{d, k}≪n61∙d31∙k
当 d ≥ k d \geq k d≥k,即 O ( d ) ≥ O ( k ) O(d) \geq O(k) O(d)≥O(k)时,可以化简为
d ≪ n 1 6 ∙ d 1 3 ∙ k \sqrt{d} \ll n^{\frac{1}{6}} \bullet d^{\frac{1}{3}} \bullet k d≪n61∙d31∙k
d 1 6 ≪ n 1 6 ∙ k d^{\frac{1}{6}} \ll n^{\frac{1}{6}} \bullet k d61≪n61∙k
因此,当 O ( d ) ≪ O ( n ) O(d) \ll O(n) O(d)≪O(n)时,算法A更优;而当 O ( d ) ≈ O ( n ) O(d) \approx O(n) O(d)≈O(n)时,即当数据过于离散、且数据量不够充足时,算法A则不显著优于算法B。
当 d ≤ k d \leq k d≤k,即 O ( d ) ≤ O ( k ) O(d) \leq O(k) O(d)≤O(k)时,可以化简为
k ≪ n 1 6 ∙ d 1 3 ∙ k \sqrt{k} \ll n^{\frac{1}{6}} \bullet d^{\frac{1}{3}} \bullet k k≪n61∙d31∙k
n 1 6 ∙ d 1 3 ∙ k 1 2 ≫ 1 n^{\frac{1}{6}} \bullet d^{\frac{1}{3}} \bullet k^{\frac{1}{2}} \gg 1 n61∙d31∙k21≫1
因此当
{ O ( n ) ≫ O ( 1 ) O ( d ) ≫ O ( 1 ) O ( k ) ≫ O ( 1 ) \left\{ \begin{matrix} O\left( n \right) \gg O(1) \\ O\left( d \right) \gg O(1) \\ O\left( k \right) \gg O(1) \\ \end{matrix} \right.\ ⎩⎨⎧O(n)≫O(1)O(d)≫O(1)O(k)≫O(1)
成立时,算法A更优;而反之,即极小数据集聚类,算法A并不适用。实际上小数据集上近似算法难以执行。因此该情况不在考虑范围之内。
此外Nissim研究的算法(算法C),加性误差
≈ O ~ ( n 2 3 + a ∙ d 1 3 ∙ k ) \approx \tilde{O}(n^{\frac{2}{3} + a} \bullet d^{\frac{1}{3}} \bullet \sqrt{k}) ≈O~(n32+a∙d31∙k)
优于算法B,缺点在于交互回合 O ( k log n ) O(k\log n) O(klogn)较大。不过在交互能力较强的系统上,可以考虑用算法C代替算法B。