[发明专利]一种基于MapReduce的差分隐私K均值聚类方法有效
申请号: | 201710546207.2 | 申请日: | 2017-07-06 |
公开(公告)号: | CN107423636B | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 尚涛;赵铮;杨英;马旭;关振宇;刘建伟 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F21/62 | 分类号: | G06F21/62;G06K9/62;G06F16/2458 |
代理公司: | 北京慧泉知识产权代理有限公司 11232 | 代理人: | 王顺荣;唐爱华 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 mapreduce 隐私 均值 方法 | ||
1.一种基于MapReduce的差分隐私K均值聚类方法,其特征在于:该方法包含以下步骤:
步骤1:对数据进行归一化处理;数据集D中记录数为N条,分别记为xi,1≤i≤N;每条数据维数为d,即数据集D中某一数据值xi=(xi1,xi2,...,xid)T是d维属性,T表示行列式的转置运算;读取数据集D的每条记录xi,设置第一条记录x1的每维属性为其所在维的初始最大值max和初始最小值min,将剩余记录的各维属性分别与max和min比较大小,得到每维属性的最大值Max和最小值Min,通过归一化公式将xi的各维属性归一化处理至空间[0,1]d中,形成新数据集D';
根据MapReduce框架,将数据处理任务分为两部分:Map阶段和Reduce阶段,其中分别定义了Mapper类、Reducer类;
从步骤2到步骤4,用于在MapReduce中实现优化的Canopy算法,确定初始中心点;
步骤2:确定优化Canopy算法中每个Map任务中的局部中心点;主任务Driver调用MapReduce中的Mapper类,map函数中设置集合Q为空,设置迭代次数L为map函数中的局部数据集大小;在不超过迭代次数的前提下,若集合Q为空,求数据集D'中数据点xi与坐标原点距离的最小值min,将该数据点xi保存至集合Q,若集合Q不为空,计算数据集D'中每个数据点与集合Q中每个数据点的距离得出数据集D'中任意一个数据点与集合Q中每个数据点的最小距离,从所述最小距离中获取最大者Distmin,保存至集合Q中;
设已知前m个中心点,那么第m+1个中心点应是待选取数据点中与前m个中心点之间最小距离中最大者,公式如下:
L表示当前任务中数据集的数据总量,DisCollect(m+1)表示待确定的第m+1个中心点与前m个中心点间距中的最小值,Distmin(m+1)表示第m+1个中心点应是最小距离中的最大值;这样就避免了区域半径T2的设置;
首先,使用距离坐标原点最近、最远的数据点代替数据集中初始距离最远的数据;其次,先求取局部Canopy中心点,以此为基础求取全局中心点;最后,生成局部Canopy中心点时,为降低迭代次数,选择迭代次数为此处L为局部数据集大小,
步骤3:采用局部中心点确定聚类个数K值,确定Canopy的区域半径T1;主任务Driver调用MapReduce中的Reducer类,reduce函数接收集合Q={Q1,...Qn},n为大于1的正整数;首先计算P=Count(Q),P为集合Q的数据总量,设置循环次数为在不超过循环次数的前提下,循环计算集合Q中数据点之间距离最小值中最大者Dist2min,并将Dist2min对应的集合Q中数据点保存至集合Q',计算集合Q'的数据总量K,设置循环次数为K;在不超过循环次数K的前提下,计算得到集合Q'中Depth(i)的最大值并输出区域半径T1=Dist2min,将集合中前i个点赋值至空集合U中;
当Canopy个数低于或者超过类别数时,Distmin的变化幅度小;当Canopy个数接近或达到类别数时,该Distmin值变化大;为了确定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两者间的欧氏距离,定义如下:
d(xj,ci)=||xj-ci||2
其中
表示第i个聚类的中心点位置,i=1,2,...,K,ni是第i个聚类Ci中的数据点数目,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:D→Rd,输入是数据集D,输出是d维实数向量,对于任意两个邻近数据集D1和D2:
则称Δf为函数的全局敏感度;
对于两个邻近数据集D1和D2,两个数据集的属性均为d维,基于步骤4)中数据点数目之和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然后两者相除,将得到的数据点作为新的聚类中心
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',两者相除获取到新的聚类中心,并把该新的聚类中心的集合输出;
步骤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两者间的欧氏距离,定义如下:
d(xj,ci)=||xj-ci||2
其中
表示第i个聚类的中心点位置,i=1,2,…,K,ni是第i个聚类中的数据点数目,xj是第i个聚类中的数据点;
MapReduce并行框架下实施聚类过程时通过在每步reduce函数操作中添加服从Laplace分布的随机噪声来满足保护隐私信息的需求;该聚类过程中的每次迭代与多个随机算法的序列组合相似,根据差分隐私的组合性质可知,设共有M次迭代,则该算法总共的ε值应为:
其中εm代表第m次迭代消耗的隐私预算,预算分配方面,已确定的εm=ε/2m;
聚类中每次进行迭代操作时,各个Reduce分任务之间是并行地处理,每输出的结果与随机算法的并行组合相似,根据并行组合性质,则每次迭代中Reduce分任务执行操作是使用的隐私预算均是εm。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710546207.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种二次再热超超临界锅炉
- 下一篇:燃气蒸汽机