一种基于MapReduce的差分隐私K均值聚类方法与流程

文档序号:13073018阅读:279来源:国知局
一种基于MapReduce的差分隐私K均值聚类方法与流程

本发明涉及一种基于mapreduce的差分隐私k均值聚类方法,属于网络安全技术领域。



背景技术:

随着数据分析和发布等应用需求的出现和发展,如何保护数据隐私和防止敏感信息泄露成为当前大数据技术面临的重大挑战。差分隐私作为一种新出现的隐私保护框架,能够防止攻击者拥有任意背景知识下的攻击并提供有力的保护。为了保证大数据平台安全和促进大数据技术的应用,需要研究适用于大数据平台的差分隐私模型,扩展差分隐私保护框架,使其能够保护具有关联性的数据集。

隐私保护问题最早在20世纪70年代末被提出,此后众多学者陆续研发出许多隐私保护的模型。在当前已有的隐私保护模型中,k-匿名模型及在相同理论基础上的一些扩展模型是被大量研究和普遍应用的。但是,这些隐私保护模型中存在两个主要问题:(1)这些模型具有背景相关依赖性,即该模型假定了某一攻击模型或者攻击者所具备的相关知识;(2)这些模型普遍缺少较为严格的数学过程来说明隐私保护水平的高低,若是该类模型中的某些参数变化,分析并评价其隐私保护水平将十分困难。2006年,由dwork发表文献中定义的差分隐私(differentialprivacy,dp)方法很好地解决了这两个问题。

数据挖掘可以使用多种方法实现,其中一种常用的分析方法就是聚类分析。聚类分析就是在没有已知条件的情况下,将众多无规律、离散的数据记录依据各自具有的特性划分到与其特性近似的聚簇中。目前数据挖掘领域内涉及隐私保护方面的方法重点在分类和关联规则上,且差分隐私保护的研究仍处在初期阶段,因而将聚类分析与差分隐私保护两者结合进行研究的成果相对较少。

研究大数据平台上的差分隐私保护方法,着重于大数据中的数据挖掘领域,将聚类分析中经典的k均值(k-means)方法与差分隐私保护方法结合,并将其实施于hadoop平台中,保证大数据平台上聚类结果准确性和隐私性达到一定的平衡。



技术实现要素:

本发明的技术解决问题:针对hadoop平台现有安全技术的不足,提供一种基于mapreduce的差分隐私k均值聚类方法,以解决聚类分析过程中隐私泄露问题以及在大数据平台上的并行化实现问题。

本发明采取的技术方案是:一种基于mapreduce的差分隐私k均值聚类方法,它包含以下步骤:

步骤1:对数据进行归一化处理。数据集d中记录数为n条,分别记为xi(1≤i≤n),每条数据维数为d,即数据集d中某一数据值xi=(xi1,xi2,...,xid)t是d维属性,t表示行列式的转置运算。读取数据集d的每条记录xi(1≤i≤n),设置第一条记录x1的每维属性为其所在维的初始最大值max和初始最小值min,将剩余记录的各维属性分别与max和min比较大小,得到每维属性的最大值max和最小值min,通过归一化公式将xi的各维属性归一化处理至空间[0,1]d中,形成新数据集d'。

步骤2:确定优化canopy算法中每个map任务中的局部中心点。主任务driver调用mapreduce中的mapper类,map函数中设置集合q为空,设置迭代次数l为map函数中的局部数据集大小;在不超过迭代次数的前提下,若集合q为空,求数据集d'中数据点xi与坐标原点距离的最小值min,将该点保存至集合q,若集合q不为空,计算数据集d'中数据点xi与集合q中数据点的距离,得出最小距离中的最大者distmin,保存至集合q中;

步骤3:采用局部中心点确定聚类个数k值,确定canopy的区域半径t1。主任务driver调用mapreduce中的reducer类,reduce函数接收集合q={q1,...qn},首先计算p=count(q),p为集合q的数据总量,设置循环次数为在不超过循环次数的前提下,循环计算集合q中数据点之间距离最小值中最大者dist2min,并将该点保存至集合q',计算集合q'的数据总量k,设置循环次数为k。在不超过循环次数k的前提下,计算得到集合q'中depth(i)的最大值并输出区域半径t1=dist2min,将集合中前i个点赋值至空集合u中。

步骤4:将步骤3输出的canopy初始中心点集合u,以文件形式保存,再次调用mapper类map函数计算各节点数据与中心点之间的欧氏距离d。当d≤t1,则将该数据点xi归于对应的canopy,可以得到k个canopy并将结果输出。

步骤5:设置添加的随机噪声。随机噪声通常为laplace噪声,即该噪声服从laplace分布lap(b),b=δfε,δf为全局敏感度,ε为隐私保护预算。设置添加噪声的隐私保护预算参数ε。若聚类执行时迭代执行总m未知,那么在聚类迭代执行时不断变换隐私预算参数ε的值,通常采用的为首次迭代使用预算值是ε2,后续的迭代中每轮使用的隐私预算是剩余值的12,即εm=ε2m。设置添加噪声的全局敏感度参数δf,δf=d+1,d为数据维数。

步骤6:主任务driver读取步骤4输出的k个canopy,对于每个canopy计算其数据点之和sum=sum(canopy)

与集合内的数据点数目之和num=count(canopy),

对sum和num添加随机噪声x然后两者相除,将得到的数据点作为新的聚类中心

步骤7:主任务driver调用mapreduce中的mapper类,map函数首先读取文件中的聚类中心点其中m为迭代次数,读入到事先定义的集合r中,然后map函数读取该分任务中接收到的不同记录xi。分别得出每条记录与聚类中心点的距离值distance,得到与其距离值最小的聚类中心点ck,将其划分到此聚类,每个map函数输出的应是键值对(key,value),其中key为数据记录所在的聚类标号,value为数据记录的各维属性值和聚类当前数据记录的数目,此时数目都为1。

步骤8:主任务driver调用mapreduce中的reducer类,reduce分任务接收步骤7的键值对(key,value)后,合并属于同一个聚类标号即同一个key值的聚类,reduce函数可统计同一个类中数据数目总和numk和每条数据记录的各维属性值总和sumk,将两者添加随机噪声得到numk'和sumk',两者相除获取到新的聚类中心ck,并把该中心集合输出。

步骤9:主任务driver读取接收步骤8最新生成的聚类中心集合和步骤7的k个聚类中心集合,得到这两轮聚类中心点集合间的欧式距离dis,若这两轮中中心点集合的各维属性之差的距离dis小于指定阈值threshold或者循环次数已经到达迭代总数值m,则迭代终止,主任务driver调用mapreduce中的mapper类按照最新生成的聚类中心点集合c将数据集d'进行实现聚类操作,输出聚类后的结果;若不满足要求,继续重复步骤7~步骤9。

本发明与现有技术相比的优点在于:

(1)本发明提出的改进差分隐私k均值方法在一定程度上对随机选取中心点的问题作出了改进,并且在可以大数据环境下应用,在获得较好隐私保护的前提下,使聚类结果的可用性有较好的保障。

(2)本发明将差分隐私技术与经典的挖掘聚类方法相结合,基于hadoop中的mapreduce并行框架上实行操作,在可用性上得到了改善,并且最终聚类结果的准确性较好。

附图说明

图1为本发明的并行数据处理操作示意图。

图2为本发明的canopy算法优化选取示意图。

图3为本发明的差分隐私k均值聚类并行算法流程图。

图中符号说明如下:

k1,k2,k3,k4,key表示聚类标识;

values,val表示数据记录属性值;

(k1,values),(k2,values),(k3,values),(k1,val),(k1,val),(k3,val)表示键值对;

x1,x2,x3,x4表示基于优化canopy算法选取的数据点;

k表示聚类个数;

d'表示归一化数据集;

threshold表示判定迭代是否结束的阈值;

m表示设置的总迭代次数;

map阶段中value表示数据点各维属性,reduce阶段中value表示表示数据点的各维属性值以及当前聚类内数据点的总数和。

具体实施方式

本发明所提出的一种基于mapreduce的差分隐私k均值聚类方法,需解决以下两个问题:第一、如何解决聚类分析过程中隐私泄露问题;第二、如何部署差分隐私k均值聚类方法到大数据平台上。

下面分三个部分阐述本发明的具体实施方法:

1.k均值聚类方法及其隐私保护问题

k均值聚类方法的核心思想是将聚簇个数k作为输入参数,随机找到k个聚类中心点c1,c2,...ck,将包含n个数据点的数据集根据每个数据点xi(1≤i≤n)与聚类中心的距离进行划分,得到k个聚类,使得每个聚类内数据点相似性尽可能大,各个类别间的相似值尽可能小。为了达到上述目标,应尽可能使最后输出的每个数据点与其处于的聚簇的中心点之间的误差平方和收敛。

在k均值聚类执行过程中存在隐私泄露的情况有两种:

(1)在方法迭代过程中会计算各个数据点与聚类中心集合的距离大小,这个操作有可能导致隐私信息的泄露。若假定攻击者得知了每一轮迭代过程中目标数据点和每个聚类中心点之间的距离值,则攻击者就能使用已获取的距离值进行计算推理出目标数据点准确的属性数值,并且当数据点具有的属性数量越少,迭代重复次数越多时,目标数据点的隐私被泄露地就越准确。

(2)k均值方法执行完成后得到并且公布的聚类中心点集合,若被攻击者联合自身拥有的背景知识可能造成隐私信息泄露的情况。该聚类过程最后得到的结果为聚类中心点集合,基于此集合就可以获知数据集的具体情况,若攻击者有最大背景知识,也就是假设攻击者已知数据点xj属于以ci为聚类中心点的聚类a(x1,x2,...xj)中,并且已知该聚类中除了数据点xj之外的所有数据样本,则攻击者能计算出数据点xj属性的具体值。

从k均值聚类具体过程可知,方法执行中避免泄露隐私信息的重点在于聚类的中心点。聚类中心点是每个聚类中数据点之和与聚类内数据点数目之和进行相除计算得到的结果。在对某一数据集结果对外发布时,具体数据点属性值信息是不必要发布的,只要将聚类中心集合的大致近似值发布即可,这种方式就能使数据集中的隐私信息不被泄露,而且也不会对最终的结果产生太大的影响。因此,差分隐私k均值聚类方法基本思想是通过在原始k均值聚类计算得出的聚类中心点处加入适量的随机噪声,使聚类中心点的披露风险满足差分隐私保护。这种情况下即使攻击者拥有最大背景知识,也无法通过已经获取的中心点和其他数据点的信息来推断某一数据点属性的具体值。差分隐私k均值聚类方法基本过程描述如下:

步骤1:在待处理数据集d中随机地选择k个数据点后并为其添加随机噪声,将其看作初始聚类中心点c1,c2,...ck;

步骤2:由欧式距离公式分别计算输入数据集d中每个数据点与k个聚类中心点的距离,并把它划分至距其最小距离的聚类内,得到k个数据点集合d1,d2,...,dk;

步骤3:对于每个数据点集合di(1≤i≤k),计算其数据点之和sum=∑xj(xj∈di)与集合内的数据点数目之和num=|di|,对sum和num添加随机噪声后两者相除,将得到的数据点作为新的聚类中心;

步骤4:对步骤2、步骤3不断进行重复直到数据点集合d1,d2,...,dk不再变化或者相邻两轮迭代中数据点集合的变化小于阈值,或者迭代次数达到上限。

在步骤1和步骤3中添加的随机噪声通常为laplace噪声。该噪声服从laplace分布lap(b),b=δf/ε,δf为全局敏感度,ε参数称为隐私保护预算。

经过上述过程得到的聚类结果很好地解决了迭代过程中隐私信息可能被泄露的相关问题,即使攻击者拥有最大背景知识,也无法通过已经获取的中心点和其他数据点的信息来推断计算出目标数据点属性的具体值。

然而,上述过程中仍然存在一些问题:

(1)经由实验证明,该方法执行过程中初始聚类中心点的选取比较敏感。若初始聚类中心点随机地选取,则方法迭代中对初始聚类中心点加入随机噪声后得到的新聚类中心点通常情况下与初始聚类中心点有较大偏差,使最终聚类结果受到影响,并且在不超过设置迭代次数的条件下,这种情况可能导致迭代次数的增多,进而使隐私保护预算ε不断消耗减小,加入的噪声值随之会越来越大,导致聚类最终结果的可用性迅速降低。

(2)在添加服从laplace分布的随机噪声时,lap(b)中参数b=δf/ε,需要设置隐私保护预算ε和全局敏感度δf,上述步骤中没有明确指出设置方式。

2.mapreduce框架

hadoop大数据平台上的mapreduce框架是开源实现的,其计算工作具有以下特点:该工作内容可以被划分为多项子工作,且这些子工作相对独立,彼此之间无牵制,可以并行计算完成,子工作完成后,该项工作内容也随之完成。mapreduce应用于大规模数据集的并行编程接口,基于“分而治之”的思想实现,其归纳了经典的顺序式处理大数据的流程和特点,并借助函数式设计语言lisp的基本思想,将map函数和reduce函数设计为两个高级的并行编程接口和抽象模型,通过在这两个并行接口上进行编程处理就可以迅速进行并行化计算。

mapreduce框架主要由以下部分组成。

1)jobtracker

jobtracker是在master节点上进行的一个服务,工作范围是接收job,协调处理job每个子任务task运行在tasktracker上,会监控任务的运行,若观察到出现错误的task,则重新运行它们。

2)tasktracker

tasktracker是在多个节点上进行的slaver服务,通过心跳机制与jobtracker进行通信,接收并执行job。

3)jobclient

每个job都会在用户端通过jobclient类将应用程序以及用户的配置参数configuration打包成jar文件,存储在hdfs中,并将设置好的参数上传至jobtracker的master中,由master创建task任务并将其划分至每个tasktracker中实现。

4)jobinprogress

jobclient提交job后,jobtracker创建一个jobinprogress来跟踪和调度这个job并将其添加到job队列中。此外会依照已提交jar任务中已设置的输入数据集来产生出一批taskinprogress用来观察和协调各个maptask,此时也会产生已经设置好的一定数量的taskinprogress用于观察和协调reducetask。

5)taskinprogress

jobtracker启动任务是通过每个taskinprogress来运行task,并将此次task序列化地传输至相应的tasktracker中,tasktracker收到任务后产生相应的taskinprogerss用于观察和协调task。启动具体的task进程,主要通过taskinprogerss进行管理,通过taskrunner对象来运行。taskrunner会自动下载任务的jar文件并依照情况定义环境变量,然后运行一个独立的javachild去实现task。

6)maptask与reducetask

一个完整的job会自动执行mapper、combiner和reducer。mapper和combiner是由maptask调用执行,reducer由reducertask调用。combiner实际上是reducer接口类的实现。mapper会读取(key1,value1)键值对,输出(key2,value2)键值对,若定义了combiner,maptask会使用combiner类将同一key值做出合并,减少任务中输出的键值对数量,然后再交由reducetask进程中的reducer进行最终计算,输出(key3,value3)键值对。

整个mapreduce框架数据处理能分为两部分,map阶段和reduce阶段,分别是两个编程接口,其中分别定义了mapper类、reducer类,使用者通过对其进行编程实现。

map:(k1,v1)→[(k2,v2)]

其中,输入参数是键值对(k1,v1)表示的数据,处理过程是:一个数据记录,比如文件中的某一行,会以键值对的形式传入map函数中;map函数对输入的键值对进行相应计算后用另外形式的键值对代表的中间结果[(k2,v2)]进行输出。

reduce:(k2,[v2])→[(k3,v3)]

其中,输入参数是由map函数输出的键值对(k2,[v2]),[v2]表示值集合,因为同一个主键k2下通过往往包含不同的输出值v2,到达reduce函数时会把含有同样键值k2中的v2集中至一个集合中计算。处理过程是将map阶段输出的中间计算值接着执行一些处理计算,最终的输出为[(k3,v3)]形式的键值对结果。

map和reduce函数将数据从一个数据集转换为另一个数据集,处理过程如图1所示。并行数据处理模型的基本过程如下:

1)分配一定数目的map节点将已划分的若干个数据块实施并行操作,由每个数据块生成对应的结果输出;

2)分配相应的reduce节点对应地计算处理,每个担任不同key值的计算处理;

3)在数据块进入reduce节点之前,要等待全部的map节点计算完成。如图1所示,在传输到reduce节点前一步骤中需要同步障(barrier)阶段,这一步骤中会对map节点输出的键值对结果实现收集整理(aggregation&shuffle)操作,这项操作使得reduce节点可方便地只对各自节点上的数据集进行处理从而得到输出值;

4)将全部reduce节点得到的键值对数据进行汇总,即可获得输出的最终结果。

上面步骤中阐述的mapreduce框架处理过程中,还有一个可供选择的步骤即combiner类,位置应处在reduce节点接收到数据块之前,mapreduce框架中可以运用combiner类对map节点得到的键值对实现一定的排序及合并处理。hadoop平台设计是为了降低工作执行过程中开销比较高的部分,一般情况下是磁盘和网络部分,但是map节点的输出往往是巨大的,可能是原始输入数据的许多倍,直接传输给reduce节点的话,将造成巨大的网络传输开销,因而为了完成这种中间结果的数据传输优化,combiner可专门负责这类事情,从而优化传输效率。虽然combiner类没有属于自己的编程接口,但是它计算处理数据与reduce节点有同样的特性,因而它同样继承的也是reducer类。

3.基于mapreduce的差分隐私k均值聚类方法

为了解决传统k均值聚类的隐私泄露和确定聚类个数k较为困难的两个问题,设计了改进的差分隐私k均值聚类方法,并部署在mapreduce中进行并行化处理以提高数据处理效率。

本专利的方法首先使用改进的canopy算法得到聚类个数k,其次使用差分隐私k均值聚类算法得到满足差分隐私保护的聚类中心点。本专利的方法包括两部分:1)在mapredcue中实现改进canopy算法,确定初始中心点;2)在mapreduce中实现差分隐私k均值算法得到最终结果。

一种基于mapreduce的差分隐私保护k均值聚类方法具体过程如下:

步骤1:对数据进行归一化处理。数据集d中记录数为n条,分别记为xi(1≤i≤n),每条数据维数为d,即数据集d中某一数据值xi=(xi1,xi2,...,xid)t是d维属性,t表示行列式的转置运算。读取数据集d的每条记录xi(1≤i≤n),设置第一条记录x1的每维属性为其所在维的初始最大值max和初始最小值min,将剩余记录的各维属性分别与max和min比较大小,得到每维属性的最大值max和最小值min,通过归一化公式将xi的各维属性归一化处理至空间[0,1]d中,形成新数据集d'。

在大数据处理时,并行化可从两个方面入手:算法的并行和数据的并行。差分隐私k均值聚类方法的重点集中于聚类中心点和数据点之间的欧式距离的计算并得到较准确的聚类中心点,这种方法下进行计算的数据有一定的并行性,因此本专利采用的并行化方法应为数据的并行,即先将输入的数据集分为几块,分配到同等数量的子节点中,子节点分别计算分配到的数据块,同步更新聚类中心点后子节点再继续计算和分类数据块,直到聚类中心点的变化小于阈值或者迭代次数达到上限。另外,关于聚类个数k的选取采用优化的canopy算法,优化的canopy算法的为了避免局部最优的情况,使最初任意两个canopy之间的距离尽可能远,因此假设已知前m个中心点,那么第m+1个中心点应是待选取数据点中与前m个中心点之间最小距离中最大者,针对大数据集,可先求取局部canopy中心点,以此为基础求取全局中心点,这种方法计算时的数据有一定的并行性,因此计算聚类个数k的也采用数据并行的方法,即将输入的数据集分为几块,分配到同等数量的子节点中,子节点分为计算分配到的数据块得到局部的canopy中心点,以此为基础合并求取全局中心点。

本专利实施方案中聚类过程若要实现并行化处理,需要注意两个重要因素,分别是执行操作时的全局性和局部性。优化的canopy算法中得到k个canopy有两个操作应加以考虑,一是在不同子节点中计算分配到的数据块,得到canopy中心点,此操作属于局部过程,得到局部canopy中心点,二是对每个局部canopy中心点,汇集局部canopy中心点,在此基础上计算全局canopy中心点并得到聚类个数k,此操作属于全局过程,得到最初k个canopy中心点;聚类算法中有两个主要步骤应加以考虑,一是得到数据点到聚类中心点的距离大小从而将其正确地归类,该步骤属于局部过程,分任务中只须有聚类中心点和数据点就能实现聚类步骤;二是对每个聚类的操作,计算出新的聚类中心并且使所有分任务执行更新操作,该步骤属于全局过程。根据mapreduce框架,将数据处理任务分为两部分:map阶段和reduce阶段,其中分别定义了mapper类、reducer类。

从步骤2到步骤4,主要用于在mapreduce中实现优化的canopy算法,确定初始中心点。

步骤2:确定优化canopy算法中每个map任务中的局部中心点。主任务driver调用mapreduce中的mapper类,map函数中设置集合q为空,设置迭代次数l为map函数中的局部数据集大小;在不超过迭代次数的前提下,若集合q为空,求数据集d'中数据点xi与坐标原点距离的最小值min,将该点保存至集合q,若集合q不为空,计算数据集d'中数据点xi与集合q中数据点的距离,得出最小距离中的最大者distmin,保存至集合q中;

关于聚类个数为k的设置问题,在大多数聚类个数未知的情况下,k的选取是依据经验值确定,设置的经验值不同会影响到聚类效果,因此需要解决k的设置问题。

仿真实验证明可以通过canopy算法确定k值,但是从原理上可以看出传统的canopy算法易受区域半径t1和t2的影响。当t1过大时,将会使某一点属于多个canopy内;当t2过大时,将减小聚类个数k。另外,canopy中初始中心点的个数决定了聚类个数k,这种方式多由经验决定,对于不同的数据集,k的取值没有借鉴性。为了解决上述两个问题,可依据“最大最小原则”来提高canopy算法中分类个数的准确性。

canopy算法的基本思想是将数据集分为若干个canopy,其中任意两个canopy的距离表示的是聚类间的间距大小。为避免聚类的结果出现局部最优的情况,最初任意两个canopy中心的距离应尽可能远。假设已知前m个中心点,那么第m+1个中心点应是待选取数据点中与前m个中心点之间最小距离中最大者,公式如下:

l表示当前任务中数据集的数据总量,discollect(m+1)表示待确定的第m+1个中心点与前m个中心点间距中的最小值,distmin(m+1)表示第m+1个中心点应是最小距离中的最大值。这样就避免了区域半径t2的设置。

由于canopy中心点并非最终聚类中心点,在确定时只需要保证各canopy中心点间距离间距最大,因此采用更为简单的方式。首先,使用距离坐标原点最近、最远的数据点代替数据集中初始距离最远的数据,具体选取优化如图3所示;其次,先求取局部canopy中心点,以此为基础求取全局中心点;最后,生成局部canopy中心点时,为降低迭代次数,可选择迭代次数为此处l为局部数据集大小,一般情况下

步骤3:采用局部中心点确定聚类个数k值,确定canopy的区域半径t1。主任务driver调用mapreduce中的reducer类,reduce函数接收集合q={q1,...qn},首先计算p=count(q),p为集合q的数据总量,设置循环次数为在不超过循环次数的前提下,循环计算集合q中数据点之间距离最小值中最大者dist2min,并将该点保存至集合q′,计算集合q′的数据总量k,设置循环次数为k。在不超过循环次数k的前提下,计算得到集合q'中depth(i)的最大值并输出区域半径t1=dist2min,将集合中前i个点赋值至空集合u中。

在实际应用时应注意:当canopy个数低于或者超过类别数是,distmin的变化幅度较小;当canopy个数接近或达到类别数时,该值有较大变化。因此,为了确定canopy个数和区域半径t1,可引入指标depth(i)表示dist2min变化幅度,公式如下:

depth(i)=|dist2min(i)-dist2min(i-1)|+|dist2min(i+1)-dist2min(i)|

(改)

当i达到一定值时,depth(i)可取得最大值,此时可设区域半径t1=dist2min。

步骤4:将步骤3输出的canopy初始中心点集合u,以文件形式保存,再次调用mapper类map函数计算各节点数据与中心点之间的欧氏距离d。当d≤t1,则将该数据点xi归于对应的canopy,可以得到k个canopy并将结果输出。

计算数据样本xj和聚类中心ci两者间的欧氏距离,定义如下:

其中

表示第i个聚类的中心点位置,i=1,2,...,k,ni是第i个聚类中的数据点数目,xj是第i个聚类中的数据点。

关于初始中心点的选择问题,由于随机性中心点对聚类的最后结果的影响较大,上述步骤中输出了k个canopy,在此基础上本专利实施方案中按照差分隐私k均值聚类方法得到加噪后的中心点,将其作为初始聚类中心点。即对于每个canopy计算其数据点之和sum=sum(canopy)与集合内的数据点数目之和num=count(canopy),对sum和num添加随机噪声x然后两者相除,将得到的数据点作为新的聚类中心随机噪声x通常为laplace噪声,即该噪声服从laplace分布lap(b),b=δf/ε,δf为全局敏感度,ε为隐私保护预算。

步骤5:设置添加的随机噪声。随机噪声通常为laplace噪声,即该噪声服从laplace分布lap(b),b=δf/ε,δf为全局敏感度,ε为隐私保护预算。设置添加噪声的隐私保护预算参数ε。若聚类执行时迭代执行总m未知,那么在聚类迭代执行时不断变换隐私预算参数ε的值,通常采用的为首次迭代使用预算值是ε/2,后续的迭代中每轮使用的隐私预算是剩余值的1/2,即εm=ε/2m。设置添加噪声的全局敏感度参数δf,δf=d+1,d为数据维数。

为了实现差分隐私保护,需要在数据中加入随机噪声。噪声多少是决定聚类效果的关键因素,添加随机噪声的决定参数包括隐私保护预算ε和全局敏感度δf。

根据dwork在发表的文章,关于差分隐私k均值算法过程中隐私预算ε设置的重要性和如何设置隐私预算有两种方式。第一,若聚类过程中总迭代次数已知为m,则每次迭代时消耗隐私预算为ε/m,可保证算法执行过程中隐私预算的消耗不超过指定值,从而使全部的迭代执行过程都满足差分隐私保护。第二,若聚类执行时迭代执行总m未知,那么在聚类迭代执行时不断变换隐私预算参数ε的值,通常采用的为首次迭代使用预算值是ε/2,后续的迭代中每轮使用的隐私预算是剩余值的1/2,即εm=ε/2m

考虑到使用算法、数据集规模、属性等都会造成迭代总数的差异,并且没有明确的标准来指定迭代总次数,不能说明迭代总数的设置是否合理;根据以往聚类算法的实验说明,通常情况下迭代中前期产生的聚类对最终的聚类会造成较大影响,本专利采取了第二种方式,前期消耗的隐私预算较多添加噪声较小,可在一定程度上降低中心点的误差。

定义设有函数f:d→rd,输入是数据集d,输出是d维实数向量,对于任意两个邻近数据集d1和d2:

则称δf为函数的全局敏感度。

对于两个邻近数据集d1和d2,两个数据集的属性均为d维,由全局敏感度定义公式,差分隐私k均值聚类方法基本步骤3)中数据点数目之和num在两个数据集中最多只有一条记录之差,对于计数查询而言,num的敏感度值为δfnum=1;对于的数据点之和sum,为便于求和查询函数的分析,将两个数据集d1和d2的d维属性分别进行归一化处理,归一化到[0,1]d,则差分隐私k均值聚类方法获取中心点的计算就相当于直方图查询时在区间[0,1]d中进行了划分,因此对于sum来说,当数据集d1和d2只有至多有一条记录不同时,计算数据点之和每个属性值变化最大为1,由公式可知该求和查询sum的全局敏感度为δfsum=d,所以整体δf=d+1。

步骤6:主任务driver读取步骤4输出的k个canopy,对于每个canopy计算其数据点之和sum=sum(canopy)

与集合内的数据点数目之和num=count(canopy),

对sum和num添加随机噪声x然后两者相除,将得到的数据点作为新的聚类中心

从差分隐私k均值聚类过程来看,在迭代过程中需要对数据点进行不断地调整,同时意味着会进行很多次聚类中心点的计算。随着大规模数据集的陆续出现,聚类算法对数据点较多的数据集处理效果并不理想,而且若数据点较多时,聚类过程的时间复杂度变大,处理的效率也会降低。在这种情况下为使其能够有效的执行聚类过程,本专利实施方案从并行计算角度出发,使聚类算法结合mapreduce并行计算框架中,来解决这个问题。

map阶段负责的任务有:(1)map函数开始时会读入上轮迭代或者初始的聚类中心点;(2)每一个map任务对于接收到的数据块,分别执行数据点与聚类中心点距离的计算操作,并把该点归至最小距离的聚类;(3)输出键值对(key,value),key为数据所在的聚类标号,value为数据的各维属性向量值。之后对该过程得到的键值对执行归并操作,将带有同样key值的键值对进行(key,value)归并统计每个聚类下的数据点数目,此时key仍代表聚类标号,value1则代表数据的各维属性值和聚类中的数据数目,将新的键值对(key,value1)输出。

reduce阶段负责的任务有:接收键值对(key,value1),计算同一聚类下的数据点各维属性之和sum,根据数据点之和sum和数据点数目之和num计算新的聚类中心点。之后由主任务决定是否符合迭代结束条件。

从步骤7到步骤9,主要用于在mapreduce中实现差分隐私k均值算法得到最终结果。

步骤7:主任务driver调用mapreduce中的mapper类,map函数首先读取文件中的聚类中心点其中m为迭代次数,读入到事先定义的集合r中,然后map函数读取该分任务中接收到的不同记录xi。分别得出每条记录与聚类中心点的距离值distance,得到与其距离值最小的聚类中心点ck,将其划分到此聚类,每个map函数输出的应是键值对(key,value),其中key为数据记录所在的聚类标号,value为数据记录的各维属性值和聚类当前数据记录的数目,此时数目都为1。

步骤8:主任务driver调用mapreduce中的reducer类,

reduce分任务接收键值对(key,value)后,合并属于同一个聚类标号即同一个key值的聚类,reduce函数可统计同一个类中数据数目总和numk和每条数据记录的各维属性值总和sumk,将两者添加随机噪声得到numk'和sumk',两者相除获取到新的聚类中心ck,并把该中心集合输出。

步骤9:主任务driver读取接收步骤8最新生成的聚类中心集合和步骤7的k个聚类中心集合,得到这两轮聚类中心点集合间的欧式距离dis,若这两轮中中心点集合的各维属性之差的距离dis小于指定阈值threshold或者循环次数已经到达迭代总数值m,则算法迭代终止,主任务driver调用mapreduce中的mapper类按照最新生成的聚类中心点集合c将数据集d'进行实现聚类操作,输出聚类后的结果;若不满足要求,继续重复步骤7~步骤9。

假设有n个数据样本x={x1,x2,...,xn}为待处理数据集,其中xj=(xj1,xj2,...,xjd)t是d维向量,该算法目标是得到总数为k的聚类中心点集合c={c1,c2,...,ck}t,再将数据集进行划分,判断迭代是否重复的条件之一就是通过误差平方和函数:

公式中si代表第i个聚类中数据样本的集合,ci是第i个聚类的中心点,d(xj,ci)代表计算数据样本xj和聚类中心ci两者间的欧氏距离,定义如下:

其中

表示第i个聚类的中心点位置,i=1,2,...,k,ni是第i个聚类中的数据点数目,xj是第i个聚类中的数据点。

从上述步骤中可以看出mapreduce并行框架下实施本专利实施方案的聚类过程时通过在每步reduce函数操作中添加服从laplace分布的随机噪声来满足保护隐私信息的需求。该聚类过程中的每次迭代与多个随机算法的序列组合相似,根据差分隐私的组合性质可知,假设共有m次迭代,则该算法总共的ε值应为:

其中εm代表第m次迭代消耗的隐私预算,预算分配方面,已确定的εm=ε/2m

聚类中每次进行迭代操作时,各个reduce分任务之间是并行地处理,每输出的结果与随机算法的并行组合相似,根据并行组合性质,则每次迭代中reduce分任务执行操作是使用的隐私预算均是εm。由公式可知,numk的全局敏感度为δfnum=1,并且数据集归一化后,sumk的全局敏感度δfsum=d,根据序列组合性,整个算法的全局敏感度为δf=d+1。由laplace机制可知,在初始中心点的计算过程中在加入的噪声服从lap(b)分布(b=(d+1)*2/ε),在算法第m次迭代中numk和sumk添加的噪声服从lap(b)分布(b=(d+1)*2m/ε)。

本发明说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

以上所述仅是本发明一种基于mapreduce的差分隐私k均值聚类方法优选的实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明一种基于mapreduce的差分隐私k均值聚类方法原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明一种基于mapreduce的差分隐私k均值聚类方法的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1