1、K 匿名的隐私保护算法的初步学习一、 LBS先看看什么是 LBS。LBS 是基于位置的服务,它是通过电信移动运营商的无线电通讯网络(如GSM 网、CDMA 网)或外部定位方式( 如 GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标) ,在地理信息系统(外语缩写:GIS、外语全称:Geographic Information System)平台的支持下,为用户提供相应服务的一种增值业务。 (百度百科)LBS 的作用是根据无线信号或有线网络对用户位置进行确定,并提供相应服务。可以举几个例子:1. 例如我在秦皇岛和太原因为上学和放假的原因而变换了上网环境,上网的IP(不管是静态动态 IP 还
2、是拨号) ,网上的天气预报会改变预报的城市,百度推送的广告(有关位置的)会相应改变,qq 登陆会显示异地登陆等等。2. 打开手机地图类的 APP,能够得到“我的位置 ”的信息,如果 GPS 是开着的,一般定位比较准确,否则可能有偏差,例如你在街道上,显示你的位置在附近一个建筑物里,通常是你连接了这栋楼的基站得到的反馈。问题在于位置信息在 LBS 下容易泄露,对个人的隐私造成危害。所以要对地址信息进行加密,最好的方法就是使用虚拟位置信息,但是虚拟位置信息的生成有一些问题,例如用于生产虚拟位置的服务器被控制,或者生成虚拟位置的规则不合适,生成的位置在山脉,湖泊,河流等等不符合逻辑的位置,可以被简单
3、的规则过滤掉等。二、 K-匿名2.1 数据挖掘带来的挑战随着 Internet 技术、 大容量存储技术和数据处理技术的迅猛发展以及数据共享范围的逐步扩大, 数据的自动收集和发布越来越方便。然而, 在数据发布过程中隐私泄露问题也日益突出, 因此实施隐私保护就显得尤为重要。数据发布中隐私保护对象主要是用户敏感数据与个体身份之间的对应关系。通常使用删除标识符的方式发布数据是无法真正阻止隐私泄露的, 攻击者可以通过链接攻击获取个体的隐私数据。我曾经学习了部分机器学习的算法,例如 SVM,可以根据挖掘到一个人的信息,将每一个信息作为一个维度,在大量数据的情况下,可以学习出分割函数,建立超平面,从而进行分
4、类,将其归入某一类人里。同时在有丰富的个人信息(多维度)和大量数据作为全局信息,可以用 CRF 进行行为预测。如果是针对性的,可能通过链式攻击来获取个人的敏感信息。链式攻击:攻击者通过对发布的数据和其他渠道获取的外部数据进行链接操作, 以推理出隐私数据, 从而造成隐私泄露,相当于一种个人信息维度的扩充。最简单的例子就是数据库里两张表通过主键关联,得到更多的信息。2.2 k -匿名的引入为解决链接攻击所导致的隐私泄露问题,引入 k -匿名 (k-anonymity) 方法。k -匿名通过概括和隐匿技术, 发布精度较低的数据, 使得每条记录至少与数据表中其他 k1 条记录具有完全相同的准标识符属性
5、值, 从而减少链接攻击所导致的隐私泄露。攻击所导致的隐私泄露。我从网上找了一张 k 匿名化的截图:可以看到名字被隐藏,生日和 zip 也并非匿名化。匿名分为抑制和泛化。抑制,即彻底隐藏信息,如上图姓名。泛化,如将中国人,韩国人统一为亚洲人,上面的生日和 zip 也是泛化。2.3 聚类 k -匿名算法算法的基本思想是将 k -匿名问题视为聚类问题, 将数据对象分成若干类或簇,使同一簇中的对象之间关于已定义的相似性标准具有很高的相似度, 而不同簇中的对象之间高度相异。1.k 成员聚类问题传统的聚类过程要求指定具体的簇数目,然而,k -匿名问题并不限制簇的数目,而是要求每个簇至少包含 k 条记录。因
6、此,可以将 k -匿名问题视为聚类问题,通常称为 k 成员聚类问题。定义 1(k 成员聚类问题) k 成员聚类问题是将包含 n 条记录的集合划分成一系列簇,使得每个簇至少包含 k 条记录,并且要求簇内间距总和最小。形式地,令 S 为包含 n 条记录的集合, k 为具体的匿名化参数,则 k 成员聚类问题的最优解是产生满足以下条件的簇的集合 E= :1, 2, ,其中, 表示簇 e 的大小,p(l,i)表示簇 中的第 i 个数据点(将记录视| 1为数据点) ,D(x,y) 表示数据点 x 和 y 之间的距离。2.距离和代价度量聚类问题的核心是定义距离函数用以度量数据点间的相似性, 定义代价函数以使
7、聚类问题代价最小化。距离函数通常由数据点的数据类型(如数值型或分类型)决定,而代价函数则由聚类问题的具体目标来定义。由于 k -匿名问题所涉及的数据中可能既包含数值型属性,又包含有分类型属性,因此,需要定义能够处理不同类型数据的距离函数。以下描述适用于 k -匿名问题的距离和代价函数。定义 2(数值型数据间的距离)令 D 为有限数值域, 任意数值 D 间的标准距离定义为:,其中 | D |表示域 D 的最大值与最小值之间的差值定义 3(分类型数据间的距离)令 D 为分类域, 为 D 上的分类树, 任意分类值 D 间的标准距离定义为:,其中,(x,y) 代表分类树中以 x 和 y 的最小公共祖先
8、为根的子树, H(T) 表示分类树 T 的高度。结合数值域和分类域上的距离函数,来定义两记录间的距离如下。定义 4(记录间的距离)令 为数据表 T 的准标=1,2,1,2,识符,其中 (i=1,2, . ,m)为数值型属性, (j=1,2,n)为分类型属性,则任意记 录 T 间的距离定义为:1,2其中 A 表示记录 的属性 A 的值。既然 k 成员聚类问题的最终目标是实 现发布数据的 k-匿名,构造代价函数来表示泛化处理所产生的数据扭曲程度。由于每个簇中的记录被泛化成相同的准标识符值,假定数值型数据泛化成区间最小值,最大值 ,分类型数据泛化成不同属性值的集合。定义 5(信息损失)令 e= 是一
9、个簇(等价类) ,其准标识符包1,2,含数值型属性 和分类型属性 , 为分类型属性 域的分类1,2, 1,2, 树, 和 分别为簇 e 中数值型属性 的最小值和最大值, 表示簇 e 中分类型属性 不同属性值的集合,对簇 e 进行泛化处理所产生的信息损失 IL(e) 定义为:其中 | e | 表示簇 e 中的记录数, | N i |表示数值域 N i 的最大值与最小值之差,( )表示分类树中以 内所有值的最小公共祖先为根的子树,H(T)表示 分类树 T 的高度。基于上述定义,匿名化数据表的总信息损失定义如下。定义 6(总计信息损失)令 E 为匿名表 AT 的等价类的集合,则 AT 的总信息损失定
10、义为:Total-IL(AT)= ()由于 k 成员聚类问题的代价函数是所有簇内距离总和,其中簇内距离定义为簇内最远数据点间的距离,于是,对簇内记录进行泛化处理时,最小化信息损失就等同于 k 成员聚类问题中最小化代价函数,因此,聚类处理时需最小化的代价函数即为 Total-IL 。3.k 成员聚类算法输入 数据集 S 和匿名参数 k输出 簇的集合 result,其中每个簇至少包含 k 条记录1.如果数据集中记录个数小于 k,则返回;2.令簇集 result= ;3.从数据集 S 中随机选取一条记录 r;4.当数据集 S 的记录个数不小于 k 时,循环执行:(1) 从数据集 S 中随机选取一条记
11、录 r;(2) S=S r;(3) c=r;(4) 当簇 c 中记录个数小于 k 时,循环执行:a. 从数据集 S 中选取记录 r, 使其加入簇 c 产生的信息损失最小;b. S=Sr;c. c=cr;(5) result=resultc;5.当数据集 S 中有剩余记录时 ,循环执行:(1) 从数据集 S 中随机选取一条记录 r;(2) S=S r;(3) 从簇集 result 中选取簇 c,使 r 加入其中后产生的信息损失最小;(4) c=cr;6.返回簇集 result三、 总结我这次学习的是通过将 k-匿名问题转化为 k 成员聚类问题的 k-匿名算法,相对与简单的贪心策略时间开销增大,但是信息损失减小。结合我以前的聚类的学习,对 k 匿名有了一个初步了解。至于根据熵来决定匿名策略的还有在学习,而且侧重于位置信息,学习完后再发。