《Generating Synthetic Decentralized Social Graphs with Local Differential Privacy》 论文笔记

  • 写在前面的话
    • 摘要
      • 问题
      • 对策
      • 实验
        • 数据集
        • 指标
    • 介绍
      • 总结
    • 背景
    • 基线方法
      • 随机响应
      • 基于度的图像合成方法
      • 对比
    • LDPGen
      • 一般框架
        • 思路
        • 问题:怎么分区?
        • 问题:怎么合成?
        • 具体步骤
          • 初始分组
          • 分组细化
          • 图形生成
      • 初始分组阶段设计
      • 分组细化阶段设计
      • 图形生成阶段设计
    • 进一步分析
    • 讨论
    • 实验
    • 评价指标
    • LDPGen的效用
    • LDPGen参数研究
    • 相关工作
    • 结论

写在前面的话

这篇文章是我读了《Analyzing Subgraph Statistics from Extended Local Views with Decentralized Differential Privacy》之后找的,里面所提到的LDPGen方法被用来对比,并且这两篇文章的作者团队基本一致,所以这篇论文值得一读。(以下内容仅供参考,个人笔记比较矛盾)

摘要

问题

如何在既收集了结构信息又生成具有代表性的合成社会图的过程中完成隐私保?目前的技术的缺点在于1、过度的噪声注入2、不能保留重要的图结构3、两者兼有

对策

作者团队提出LDPGen,一种新的多阶段技术。每个用户都有自己的直接连接,看似连接的是个体,实际上连接的是整个网络中的不同分区(把个体看成中心点)。每次用户报告信息时,LDPGen都会小心地注入噪声,以确保本地差异隐私。在这个过程中推导出最优参数,以将结构相似的用户聚类在一起。一旦获得了良好的用户聚类,LDPGen利用现有的社会图生成模型构建一个合成的社会图。

实验

数据集

FaceBook:是一个无向社交图表,由4039个节点(即用户)和88234条边(脸书上的连接)组成,它们是使用脸书应用程序从调查参与者那里收集的。
Enron:是一个无向电子邮件图,由36,692个节点(即安然公司的电子邮件帐户)组成,由183,831条边(电子邮件)连接。
Last.fm:同时包含一个社交图和一个偏好图。该社交图由1892个用户节点和12717条代表朋友关系的无向边组成。偏好图包含相同的一组用户节点,以及17,632个项目节点,每个节点对应一首歌曲。偏好图中的每条边都连接着用户和歌曲,其权重对应于用户听歌曲的次数。总共有92198条这样的用户定向歌曲边缘。
Flixster:还包含一个社交图和一个偏好图,类似于Last.fm。经过一些预处理(如下解释),社交图包含137,372个用户节点,由1,269,076条无向边连接,偏好图包含同一组用户、48,756个项目节点和超过700万条定向用户到项目的边。在这里,每个项目节点代表一个电影,每个用户到项目的边缘对应于对应用户的电影评级,与一个权重相关联,即在[0,5]范围内的评级。

指标

社会图统计数据
社区发现
社会推荐

介绍

随着图分析的进步,通过挖掘一个包含人际关系和互动信息的社会图关系,可以获得许多有价值的信息。然而,这些信息可能是敏感和私人的,例如,并不是每个人都愿意向陌生人发布她的联系名单。考虑一种情况,有一方拥有整个社交网络数据,在某些隐私保证下发布图形数据或分析结果,如差异隐私。如果图是分散的,这个问题就更具挑战性了,这意味着没有一方可以访问整个图。这种情况发生在物理世界中许多敏感的社会图表上。例如,考虑分布式社交网络,例如,Synereo。显然,对于这样的图(i)每个人都有一个局部视图(例如,那些与自己有直接关系的视图),(ii)不受约束的搜集整个图的信息是不可能的。事实上,即使是不那么敏感的关系,如面对面的互动和电话联系,收集一个去中心化的社交图表也很困难,因为人们倾向于不愿透露私人关系。此外,当拥有整个图表的一方(电话/电子邮件服务提供商)不与试图分析数据的研究人员合作时,社交图表(例如,电话呼叫网络或电子邮件通信)是有效地分散的。在这些情况下,现有的隐私保存图发布和分析的解决方案不适用,因为首先就不能收集数据。(整个图的信息你弄不到,或者说不能不受约束地得到)
同时,显然有价值的知识可以通过分析去中心化的社交图来提取,而这些知识可能通过分析在线社交网络并不容易获得。例如,现实世界中的关系(例如,我们出去玩的朋友)可能与网上的关系(例如,我们聊天的关系),社区(例如,父母家人和游戏粉丝俱乐部)也非常不同,单纯分析社交网络去获得比较片面。为了获得分散化社交图的知识,必须收集具有强大的隐私保障的敏感本地视图。作者团队研究的重点是在本地差异隐私下,从一个真实的、分散的局部图生成一个合成社交图。本地差分隐私是一个强大的隐私标准,已在谷歌Chrome和AppleiOS等著名系统中使用。这样的合成图使数据科学家能够进行有意义的分析,同时保护相关参与者和数据收集者的隐私。这项研究的一个主要挑战是,最先进的本地差异隐私研究仅限于收集简单的、统计信息,如计数、直方图和重击球者。在我们的问题中,需要收集一个包含详细的边级别信息的大规模图。以如此细的粒度(例如,邻居列表)收集数据需要大量的噪声注入,以满足本地差异隐私,这可能会使图过于扭曲而没用。另一方面,如果我们只收集图的统计数据(例如,节点度),并只从这些统计数据生成一个合成图(例如,使用BTER)生成,得到的合成图可能不会保留原始图的重要属性,除了生成它的统计属性。(两个问题,其一是敏感度大会发生大量噪声注入从而影响图的效用,其二是只从统计数据合成图可能不会保留原始图的重要属性)
在本文中,我们提出了一种新的LDPGen,一种新的多阶段生成局部差异隐私下合成分散社会图。一个关键的想法是,LDPGen通过在局部差异隐私下逐步识别和细化连接节点的集群来捕获原始分散图的结构。为此,LDPGen迭代地将节点划分为组,在本地差异隐私下收集关于节点到组连接的信息,并根据这些信息对节点进行聚类。在获得这样的节点集群后,LDPGen应用一个图生成模型,利用这些集群生成一个具有代表性的合成社会图。此外,作者团队还描述了优化LDPGen关键参数的技术,以提高生成的合成社会图的效用。(LDPGen的主要思想就是找节点连接的信息群,再聚类,不断迭代,说白了就是聚类)

总结

1、定义和解决在本地差异隐私下的分散社会图的合成数据生成问题。
2、描述和分析现有的本地差分隐私和合成图生成技术的基线方法。
3、LDPGen,一种新的和有效的多阶段合成分散社会图生成方法,并描述了优化关键参数的方法。
4、我们使用几个真实的数据集和用例进行了全面的实验研究,结果表明LDPGen能够生成高实用的合成图。

背景

边差分隐私:边变化后区分不出来
点差分隐私:点变化后区分不出来i(点变化会导致相应的边发生变化)
文中关于图的表示用的邻接表

对于点的差分隐私就是把点隐藏起来,此时的图变化比边的差分隐私大。由此可见,点LDP能比边LDP提供更加强大的隐私保护,并且点LDP能应用进边LDP。

基线方法

随机响应

随机邻居列表(RNL),直接应用随机响应从用户中收集邻居列表。具体来说,在RNL中,给定一个隐私预算ϵ,每个用户以概率p=1/(1+eϵ)翻转其邻居列表中的每一位,并将扰动的邻居列表发送给数据管理员。然后将所有用户的噪声邻居列表组合在一起,形成一个合成的社交图。

其实就是普通的差分隐私公式,只是数据变成了邻接表。
优点:保护了隐私
缺点:合成的图更紧了,一般社会网络都是比较稀疏的,因为有hub users这样的连接很多人的情况。但是这种情况毕竟是少数,但是差分隐私会考虑进去,使得最终的合成图过于紧密了。

基于度的图像合成方法

在社会计算文献中,有许多现有的合成社会图生成算法。通常,这种算法以节点度等一些图的统计信息作为输入,并基于社会图模型生成一个合成图。换句话说,该算法以图模型的形式引入了关于社会图的先验知识,并将这些知识以适应输入图的高级结构属性。基于度的图生成(DGG)的思想是将这样的社会图生成模块应用到我们的问题中。
请注意,并不是所有的合成社会图生成算法都可以应用于我们的问题。原因是在我们的设置中,每个用户只能以邻居列表的形式拥有有限的图形本地视图。另一方面,一些图生成算法需要整个图的全局信息,例如克罗内克图模型中邻接矩阵的子矩阵;因此,这种算法不能在DGG中使用。我们的DGG实现是基于BTER的一个改编版本,如下所述。
使用DGG,每个用户计算她的节点度,扰乱ϵ-edge差异隐私下的度(例如,使用拉普拉斯机制),并将产生的噪声度发送给数据管理员。后者从所有用户那里收集这种扰动度,并运行BTER算法来生成一个合成图。具体来说,BTER首先根据节点集群的程度形成节点集群。特别是,具有相似程度的节点被聚集在一起。集群的大小也取决于其中节点的程度:节点的程度越大,集群的大小就越大。之后,对于每个集群,BTER生成随机的集群内边,这些边的数量取决于集群中的节点度和一个连接参数,由于缺乏全局图统计信息,该参数在DGG中被设置为默认值。最后,BTER根据每个节点的剩余度和每个集群的大小生成集群间的边。
DGG显然满足了我们的隐私要求,因为每个用户只将她的扰动程度发送给管理员,而管理员在ϵ-edge局部差异隐私下是随机化的。同时,对于相当大的ϵ值,扰动度预计将接近其真实值,因为注入拉普拉斯机制的噪声的方差为1/ϵ2。因此,用DGG生成的合成图可以准确地捕获节点度。但是,由于DGG只收集节点度,因此它丢失了底层图的所有其他信息。例如,两个度相似但在原始图中相距很远的用户可以被放置在合成图中的同一个集群中。此外,DGG通常无法捕捉到除节点度之外的图结构的其他方面。(总结来说就是两点,其一不是所有的图生成技术都可以基于邻接表的形式实现,其二就算实现了也会丢失其他图结构的重要信息)

对比

1、RNL收集细粒度信息(即邻居列表),并承担满足局部差分隐私所需的重扰动的代价。
2、DGG只准确地收集粗粒度的统计数据(即节点度),因为它们只需要少量的噪声来满足局部差异隐私,但它也会丢失底层图的重要细节。
3、DGG带来了关于社会图表的先验知识,而RNL则没有。
上述观察结果表明,需要在为满足差异隐私而增加的噪声和由于以较粗的粒度收集信息而造成的信息损失之间取得平衡。一个棘手的问题是,这种平衡本身是依赖于数据的,因此,可能会揭示私人信息。下面描述的所提出的LDPGen方法在边缘局部隐私约束下迭代地找到这种平衡。此外,与DGG类似,它利用社会图的先验知识来增强合成图。

LDPGen

一般框架

思路

把一整个图分几个不相交的部分,考虑每个节点v的度向量。这个度向量就是看v的邻居属于那个部分,其中度向量的分量就是这里面的邻居数量。

上面说得还挺清楚的,也举例子说明了我就不翻译了。事实上方法RNL和DGG都可以被视为上述一般框架的极端情况。特别是,当每个分区恰好包含一个用户时,RNL位于一个极端(即,当k=n时,其中k和n分别是图中的分区数和用户数)。同时,当整个图被视为一个分区(即k=1),每个节点的度向量退化为一个节点的度时,DGG处于相反的极端。这两种方法都不理想:RNL导致过多的噪声,而DGG导致过多的信息丢失。LDPGen遵循相同的一般框架,通过选择合适的用户分区方案,在噪声和信息损失之间取得了很好的平衡。

问题:怎么分区?

相似的用户应该被分组在一起。这就导致了一个循环的依赖关系:(i)要收集数据,我们必须知道k的值和分区方案;(ii)要确定k的最佳值,我们必须首先收集数据。LDPGen通过多阶段设计就解决了这个问题。特别是在LDPGen中,数据管理员多轮从用户收集数据;每一轮都细化用户分区方案,然后以更高的精度从用户收集数据,在下一轮中使用,例如,通过使用更大比例的隐私预算。通过这个过程,结构上接近的用户将逐渐分组在一起。

问题:怎么合成?

上图展示了LDPGen的一个示例,其中用户被分成三组,颜色分别为黑色、白色和灰色。最初,分组是相当随机的,只有两组,而在图中可以观察到三个用户集群。然后,对分组进行了细化,即(i)将用户划分为3个组,而不是2个组,(ii)相似的节点逐渐移动到同一个集群中。

具体步骤

三个阶段:初始分组、分组细化和图形生成。前两个阶段涉及到从用户那里收集数据。我们分别为每个阶段分配隐私预算ϵ1和ϵ2,如ϵ12=ϵ。由于差分隐私的顺序组成特性,这两个相加在一起满足ϵ边LDP。图生成阶段是对边LDP机制输出的后处理,因此不消耗任何隐私预算。

初始分组

在此阶段,数据管理员没有任何关于图形结构的信息。因此,它将用户随机划分为k0等大小的组(其中k0是一个系统参数),并将该分组方案ξ0通信给所有用户。然后,每个用户形成基于ξ0的度向量,根据第一阶段分配的隐私预算ϵ1添加噪声,并将噪声度向量发送给数据管理员。一旦数据管理员接收到来自所有用户的噪声度向量,它将计算一个具有k1分区的新的分组方案ξ1,使用(i)从收集到的度向量中获得的所有用户的估计度分布,以及(ii)分配给阶段II的隐私预算ϵ2。请注意,与初始分组不同,新分区的大小可能不同。这个新的分区ξ1被返回给用户。

分组细化

在这个阶段,用户现在再次报告基于ξ1和第二阶段分配的隐私预算ϵ2的噪声度向量。数据管理员进行另一轮用户分组,并根据第二轮噪声度向量将用户划分为k1集群。请注意,第二阶段可以重复多次,每个阶段都根据前一轮收集的度向量逐步细化分组。

图形生成

在这一步中,数据管理员调整BTER模型来生成一个合成的社交图。与在DGG中,用户仅根据自己的度进行聚类不同,在LDPGen中,数据管理员从第二阶段获得的用户分区开始,并使用收集到的度向量生成边。在图1的示例中,LDPGen从第一阶段(最左边)将用户随机划分到k0=2组开始。然后,数据管理员从用户那里收集度向量,并根据(左第二个)细化用户分组。之后,在第二阶段,通过另一轮数据收集再次细化用户分组。最后,在第三阶段(最右),基于用户分组和度向量生成一个合成图。

初始分组阶段设计

目的:找出最优的k1,通过最小化目标函数的值体现出来。

就是算度加噪,再给数据分析者。就是之前说的思路,只是稍微细化了一点点。划分的组大小要相同,敏感度是1,由于是并行所以不用累加算隐私预算。这里的边隐私证明我直接贴在下面了。


关于边隐私就在于边的变化,攻击者区分不出的是两个只差一个数字的邻接表,简单来说就是攻击者区分不出这个邻接表是不是节点u的。邻接表差一,对于度向量也是差一,只是表现方式不一样,敏感度都一样,最终都落实到一个分区上。

这一段算节点度的无偏估计量,是用来制定分组细化的依据。第一阶段的主要任务是为下一阶段想出一个好的用户分组。为此,我们需要确定(1)一个适当的数量的k1组;(2)如何将用户划分为k1组。为了解决第一个问题,我们需要定义一个目标函数,其优化将导致一个图的结构信息的保存。回想一下,社交网络中最重要的信息之一是它的社区结构。因此,希望确保具有相似(不同的)邻居列表的节点在分区后仍然可能具有相似(不同的)度向量。有很多方法可以衡量两者的相似性。在我们的设计中,我们选择L1距离作为相似度函数。

考虑度一样的节点,这里的度就是单纯的出入度(由于是无向图就只有度)。我们回到目的,我们不想过于极端,像RNL或者DGG一样,所以这个平衡就在于这个目标函数。这个函数里面的参数是邻接表和加噪的度向量。首先看邻接表,假如只看邻接表就是一个点一个分区,这样的坏处在于,经过差分隐私后会导致最后合成图过于紧密。所以在这里压根没有加噪的邻接表。再看度向量,DGG用度向量只需少量加噪,但是在合成图时会丢失重要的图信息。总而言之,两个方法在最后合成图的时候或多或少都有缺点,并且两个方法可以看作两个极端,一个详细过头,一个粗糙过头,似乎差分隐私总要使结果再加一层偏差。我们回过头看这个目标函数,里面的参数是邻接表与加噪度向量的差值,至于除以邻接表就是归一化之类的操作,最终也得提出来。关键理解就在于这个差值为什么这样设定,邻接表很详细,加噪的度向量一层意思是保护隐私,另一层就是分区的思想。简单来说这里的度向量不同于DGG的单纯度向量,而是结合的概念,将邻接表粗糙化了,将纯度向量细粒化了。这就是平衡!相减就是看两个点在邻接表和加噪度向量上的偏差,更一般地说就是两个点各自加噪度向量的差值在不断分区的过程中越来越接近两个点各自邻接表的差值。偏差越小说明分区的效果越好,但是这里肯定要有一个界限,不能不断迭代最终给迭代成邻接表了,需要在合适的时候停止迭代。


为什么不在公式里用度向量距离?(我觉得是压根数据收集者得不到)上图进行了解释,对于度向量,在两个节点不同的邻居中,可能这些邻居被分到同一组,那么它们间的距离等于0.所以这个度向量距离很小,邻接表距离大于等于度向量距离以及加噪的度向量距离。利用三角不等式就能推出目标函数的上界。你可能会问:不是算最小的目标函数吗?算上界干嘛?emmmm下界不用算,就是0,目标函数的上界体现了最差的偏差情况,如果这种情况都能达到一个不错的效果,那我们的目的就达到了。最终对于目标函数,我们关注它的上界中加噪和不加噪的偏差期望。

这里我感觉跳了一步,按照道理应该先算出在k0情况下目标函数的值再做分析,得到k1,再分下去才得到上面这个情况。此时的目标函数如果越小,也就代表k1选取得越好。通过这样的方式把k1联系起来我着实没想到。

(9)式表示在第二轮的分组中,加噪后的结果是要符合隐私预算ϵ2的。对于每个节点在k1分区的的情况下,所拥有的度向量又会改变。这里的(9)怎么推导出来的还不清楚,先放在这里往后走。文章描述的是加噪后的度向量的平均绝对偏差。这个偏差的期望是一个噪声尺度,一般噪声尺度都是与方差和标准差有关,均值是正确的那个值。并且里面的差值加了绝对值,我的理解是不加绝对值结果就是0,这个式子应该是一个一般式,套在其他差分隐私下也能用。(8)式就好理解,所有拉普拉斯噪声变量的累加和的偏差期望。

之前也提到,邻接表的距离肯定大于度向量的距离,因为会又两个节点不同的邻居被分到一个分组,所以导致度向量距离较小。那么没有分到一个分组的邻居就是我们考虑的对象,如果在k1分区的情况下有几种分组的方法呢?这里用到第二类斯特林数和贝尔数,白话说就是组合枚举的问题,这里是d个数分配到k1个分区有几种分法,允许有分组为空。结果就是(11)式,具体怎么算就带公式就行。

第二类斯特林数
贝尔数


算方案数的目的式计算度向量距离的期望值,通过(12)式可见当度向量的值为t时,将其与邻接表距离方案数做一个比值,意思是当前可区分的邻居占比,然后得到加权平均求和的结果作为度向量距离的期望。这个计算方法不是直接计算距离的期望,而是引入了方案,这里更看重方案数的偏差。什么意思呢?就是看被隐藏了的邻居节点,这里提到了邻居对的概念,d-t就是被隐藏的邻居节点数,怎么理解这个除以2呢,见下图:

为什么算邻居对?算了几个邻居被同化不就可以了吗?并且这个数一定是偶数吗,d和t都是距离,肯定存在奇数的情况吧,这样差值也就存在奇数,如果能除以2,必须保证d和t都是偶数才能保证。根据前面对于度向量和邻接表的定义,并不能保证d和t都是偶数。过于这里我很困惑。

这里第一句话提到了。当两个不同的邻居会被分配到两个不同的分组时,它们对距离的贡献是2,并且这里存在t/2个这样的节点对。看到这里我算是明白 了,等于v和u一共有n个不同的邻居,这个距离是一旦有不同的邻居就把距离加2,所以不存在奇数的情况。那么怎么通过计算式子体现出来呢?

从这张图很明显看出,对于度向量距离的计算,是对于节点u和v来说,每个分区存在的邻居数之差再累加,这个差值不可能是奇数。我终于搞懂了,因为两个节点度数相同,有差别只有可能是两个两个的不同。(我好蠢)好了,回到这幅图:

隐藏的邻居对数被算出来后就需要枚举方案了,因为k1分区需要把这些隐藏的分出来,一共有多少种组合方法可以从上图看出来,这里就不罗嗦了。最后的结果就是隐藏邻居对的阶乘。至于按照k1分区来分这些邻居对,答案就是上图最后一行。又回到这幅图:

还好这里有解释,不然我可能难以绕出来。对于隐藏的邻居对是按照上上副图那样计算,那对于没有隐藏的邻居对也是一样需要考虑,方法也是一样的。关于上面的组合数的幂次方触及到我的知识盲区了,先放一放,回过头再看。

上面的计算的组合数什么的都是为了计算方案数,第一项表示隐藏的邻居对的组合种类,第二项表示未隐藏的邻居对的组合种类,第三项表示在k1分区下这些隐藏的邻居对的种类数分配到k1个分区的方法数,第四项是从每个用户中选择隐藏的邻居对配对的方法数,平方应该是考虑的两个用户。最后一项表示对于由k1分区生成的任何距离t,有这一项表示的数量可以在k1组之间分配未隐藏的邻居对。总结一下这个式子,不同于邻接表的方案数是按照斯特林数直接计算,因为邻接表的距离是固定的,方法数也是固定的,但是对于度向量距离是根据分区数变化的,其中涉及隐藏和未隐藏的节点对,所以需要考虑清楚。

这一步就是结合两个式子算出期望的实际式子,具体化了。关键就在于度向量距离的偏差期望。

从(15)可以看出这个式子并不是闭形式的,即对任一独立变量,我们皆可将其带入解析函数求得正确的相依变量,显然这里面的t我们不知道,是不存在闭式解(解析解),所以需要用数值方法得到闭形式的函数。这一部分我没推导了,作者通过限制两个节点的邻接表距离,通过数值方法得到式(16)。式(16)代替(15),得到我们目标函数的闭形式,当目标函数取最小值时就是当k1符合式(18)时。这个目标函数的参数是k1和d,其他都是常数。这一部分的推导我不清楚,算一个问题。对于度相同的节点,我们启发式地估计其潜在的L1距离d为(19)。也就是说当邻接表的距离为度的一半时,所得的分区最好。

有了k1的计算公式,就需要数据了。数据收集者收集的数据成一个直方图,直方图中的数据为度相同的节点占比,由此可以推出k1对于整个图的分区方案。作者还提到,上面的计算适用于上述两个参数大于50的情况,但是上上副图又说限制在0到50之间。这两种说法是否自我矛盾了呢?我是这样理解的,对于第一部分的限制在0到50是对于点来说的,对于点与点之间的邻接表距离不能超过50,这样才能得出一个较好的闭形式函数,得到关于局部的k1,第二部分说大于50可以理解为整个图,此时的参数需要大于50才适用于全图,这两者不是相互矛盾的。如果从这个角度出发是这样的,但是不知道我理解的对不对。好了,往后走。
在导出适当的k1后,数据管理员可以简单地将所有用户随机划分为k1等大小的组。然而,我们观察到,如果两个用户在第一阶段报告有相似的噪声度向量,它们更有可能在结构上也相似。因此,如果我们根据节点的噪声度向量而不是随机分组,它可以帮助进一步识别第二阶段结构上接近的节点。具体来说,在我们的设计中,数据管理员运行标准的k-mean算法将用户聚为k1组,对所有用户的噪声度向量。生成的聚类形成了下一阶段的分区ξ1。怎么聚类?这里只说了基于噪声度向量来聚类,这个相似性或者说距离函数怎么设。我回过头看了一下DGG,去查了一下,是基于提前设置的核函数来估计相似度。

这里算的是那个图,就是黑白灰的那个图。

分组细化阶段设计

终于到第二阶段了,前一个阶段我看了一天了。难顶~

第二阶段很少,因为主要的事情在第一阶段做完了。
给定用户从第一阶段的ξ1进行分组,每个用户使用隐私预算ϵ2再次向数据管理员报告一个新的噪声度向量。第二阶段的数据管理员的任务是细化用户的聚类。直观地说,由于分区ξ1是最优大小的,并且更有可能将具有相似结构的用户分组在一起(通过k-mean聚类),该阶段报告的噪声度向量将有助于进一步揭示分散社交网络的结构。这是通过根据新一轮的噪声度向量进行另一轮k平均聚类来实现的。请注意,目标簇的数量仍然是k1,即在第一阶段导出的接近最优的值。我们将生成的新分区调用为ξ2
直译过来就是上面这些,其实就是分区数量已经在第一阶段确定下来,但是怎么分仍然是一个问题。阶段二的主要工作就是细化聚类,尽可能把相似结构的用户分在一起。

图形生成阶段设计


这一段简单来说就是,如果又从用户哪里获取分组完得到新的噪声向量就和前面提到的设计思路不一样了。整个框架的噪声就被分成两个部分,如果再分就和前面的思想不一致了。怎么办?采用估计的方法,用阶段二得到的ξ1方案去估计ξ2方案的度向量。在ξ1方案中,对每个分区与ξ2方案中其中每个分区都去找交集,再除以当前ξ1方案比的分区,得到就是一个占比,乘以当前的度向量值,最后累加就估计得到对于ξ2方案中u节点的度向量。

上图的目的就是计算两个节点之间连接的概率,此时两个节点的度向量是估计出来的,并且这两个节点分别属于两个不同的分组。这个式子分母第一项就是分组i中所有的节点中关于位于j分组的邻居节点的和。第二项表示全图中所有点中关于位于j分组的邻居节点的和。但是文章说分母是两个分组之间的总边和,但是我感觉这有所冲突。体现这个第二项的全图,这样不久涵盖所有点了吗?如果这个是分组j中所有的节点中关于位于i分组的邻居节点的和就说得通了。回到分子,也就是在两个分组中如何判断节点u和v是否相连,这个概率感觉挺迷的。

进一步分析

在通信的复杂性方面,这两种基线方法都只需要用户和数据管理员之间的一轮通信。第一种方法RNL的用户端成本最高,即O(n),因为每个用户都需要向管理员传输一个潜在的大邻居列表。第二种方法DGG的成本要低得多,即O(1),因为每个用户只需要向数据管理员报告他/她的度。所提出的方法LDPGen涉及用户与数据管理员之间的两轮通信:在第一阶段,每个用户需要向数据管理员发送一个大小为k0的度向量;在第二阶段,数据管理员首先向每个用户广播用户分区,即O(n),然后每个用户向数据管理员发送一个大小为k1的度向量。显然,LDPGen不可避免地会比只需要单轮通信的方法产生更高的成本,而LDPGen的高精度弥补了这种成本。
在计算复杂度方面,基线方法和所提出的LDPGen方法在用户端的计算开销都很低,这也是此类调查应用的一个重要设计目标。同时,在数据管理员方面,由于节点之间的概率,两种稻草人方法在生成合成图时的计算开销都为O(n2),而LDPGen方法的成本为O(n2+n(k0+k1)),仅略高于基线方法。

讨论

回想一下,LDPGen的第二阶段通过根据用户新报告的噪声度向量重新聚类,从第一阶段细化了分区。从技术上讲,我们可以继续这个过程,并有更多轮的分组细化,而不是在第二轮停止阶段然而,我们拥有的回合越多,每一轮可以使用的隐私预算就越少,这意味着需要向度向量中添加更多的噪声。这实际上可能会降低而不是提高分组的质量。在后面的实验中,我们通过实验展示了多轮分区细化对生成的合成图的效用的影响。
另一个问题是在前两个阶段的隐私预算的分配。在我们的实现中,我们选择均匀分割ϵ,即ϵ12,基于直觉,即在这两个阶段,用户报告相同类型的信息,并且往往对最终的用户聚类有相同的影响。
在第一阶段,在从用户那里收集任何信息之前,数据管理员将所有用户随机划分为k0个等大小的组。回想一下,基于这个随机分区的用户的噪声度向量有两个目的。首先,数据管理员使用它来估计用户的程度(召回方程1)。其次,它稍后还被用作特征向量来聚类所有用户。为了得到最佳的度估计,k0应该设置为1。然而,这意味着以后的聚类只基于度是必要的,这正如前面讨论的是不可取的。在我们的实现中,我们设置了k0=2来达到直观的平衡。
在我们到目前为止的讨论中,我们假设数据管理员知道去中心化社交网络中的所有用户。这个假设是否成立取决于网络的具体细节。例如,如果社交网络是关于不同IP之间的通信,那么所有IP的域都是公开的。当用户选择进行研究时,数据管理员还可以首先询问他们的社交网络id,当这些id不敏感时(例如,他们的联系人列表网络的电子邮件地址)。当用户的社交网络id不能直接显示时,他们可以使用id的散列与数据管理员通信。通过这样做,一个未知的用户ID空间被映射到一个定义良好的散列空间。然后,我们的方案就可以应用到这个散列空间上。此外,管理员还可以使用Bloom过滤器等压缩技术来广播用户组分区,以降低通信成本。

实验

我们已经实现了LDPGen,并运行了一套全面的实验来研究其有效性。特别是,我们的实验比较了LDPGen与基线方法RNL和DGG方法。同时,实验还研究了阶段1组k1数的影响,以及LDPGen是否获得了该参数的合适值。对于每个实验,我们报告超过10次执行的平均结果。这些实验涉及四个真实的社会图表,它们已被用作社区检测和推荐任务的基准数据集。它们是:(之前提到的那四个)
这些实验大多使用集中的社会图表,因为我们需要真实情况来验证LDPGen的有效性。在这些数据集中,Enron包含了电子邮件通信,它们通常被建模为去中心化数据,因为通常没有服务器拥有所有用户之间的所有电子邮件通信。
合成社交网络的效用取决于它在不同应用程序中使用的用途。在我们的实验中,我们使用以下三种用例验证了LDPGen的有效性,如下所示。
1、社会图统计数据。作为最简单的用例,我们使用数据集Facebook和Enron来调查在本地差分隐私下生成的合成社会图如何很好地保存原始图结构的重要统计数据。
2、社区发现。在第二个用例中,我们对原始和生成的合成图执行社区发现,并使用数据集Facebook和Enron的合成图比较结果。特别是,我们的实现使用鲁汶方法进行社区发现,它输出一个用户集群列表。然后,我们比较了从两个公共指标ARI和AMI上从真实图和合成图中获得的用户集群。
3、社会建议。在第三个用例中,我们使用Last.fm和Flixster数据集来研究如何在社会推荐应用程序中有效地应用生成的合成图。具体来说,我们假设社交图是私有的,并且偏好图是公开可获得的(例如,当用户对一部电影进行评分时,评分是公开可见的)。然后,对于每个用户,我们根据她朋友的项目偏好推荐top-k项目列表。评估结果比较了从真实图和合成图计算出的推荐项目列表。社会推荐算法背后的详细原因可以在中找到。

评价指标

如上所述,实验集中于效用的三个方面:图统计数据的保存、社区发现的准确性和推荐系统中的有效性。首先,在图统计方面,我们从图模块化、聚类系数和亚色性系数等方面评估LDPGen及其竞争对手。这三个都反映了图的结构,在实践中有许多应用。为了简洁,我们省略了它们的详细定义。
关于社区检测,效用度量主要关注从生成的合成图和从原始图中获得的社区的相似性。为此,我们遵循标准指标调整随机指数(ARI)和调整互信息(AMI)如下。

直观地说,ARI量化了获得的两个聚类在所有元素对上的一致性频率,而AMI量化了两个聚类共享的信息。ARI和AMI都忽略了两个完全随机的聚类之间的测量值。ARI和AMI值越大,底层聚类越相似;在我们的实验中,比较真实和合成图上的结果,更高的ARI/AMI值意味着更高的精度。
最后,在社会推荐的有效性方面,我们将效用衡量为与从原始图中计算出的推荐项目和从合成图中获得的推荐项目相似。

然后推荐系统向每个用户推荐得分最高的k项列表。为了比较两个不同的top-k项列表,我们使用Normalized Discounted Cumulative Gain(NDCG)作为精度度量,这是推荐系统有效性的常用度量。特别是,到排名列表之间的NDCG评分定义如下。

然后,合成图相对于社会推荐用例的总体效用被计算为数据集中所有用户集的平均NDCG得分。

LDPGen的效用

在本小节中,我们研究了LDPGen与基线方法RNL和DGG相比的效用。在所有实验中,组的最佳数量k1由数据管理员计算。k1的影响,以及LDPGen的选择是否合适,将在后面进一步描述。

图结构统计的结果。上图左边第一个绘制了所提出的解决方案LDPGen和两个基线方法接近RNL和DGG的相对误差,作为隐私预算ϵ的函数,使用脸书数据集。LDPGen在所有设置上都比RNL和DGG具有明显的优势。特别是,除非我们使用非常高的ϵ值,即ϵ>5,否则RNL和DGG的相对误差接近100%,这意味着它们的模块化结果在这些设置下是相当无用的。另一方面,当ϵ≥2时,LDPGen实现了较低的相对误差(<20%)。请注意的是,ϵ值在本地差异隐私文献中广泛使用。这表明LDPGen在本地差分隐私条件下的模块化方面获得了具有实际意义的结果。同时,LDP对ϵ的极值(即当ϵ分别接近0和达到7时),也比RNL和DGG取得了显著的性能改善。这表明LDPGen在广泛的ϵ值范围上比其竞争对手具有固有的效用优势。
上图右边那个图在Enron公司的数据集上重复了上述实验。同样,LDPGen在所有设置上的性能都大大优于RNL和DGG,这是实际精度(在所有设置上LDPGen的<相对误差为20%)和无用的结果(当ϵ<5时,RNL和DGG的>相对误差为60%)之间的差异。这证实了LDPGen相对于RNL和DGG的性能优势是固有的,而不是依赖于数据。比较Facebook和Enron上的结果,我们发现(i)这三种方法在安然上比Facebook获得更高的效用。原因之一是Enron是一个比脸书大得多的数据集;因此,为满足局部差异隐私而注入的噪声在后者的数据集上更为明显。(ii)虽然RNL在脸书上的表现略好于DGG,但它在安然上的表现与RNL相当,这表明两种基线方法的相对性能取决于数据集。

上图分别使用这两个数据集评估LDPGen、RNL和DGG在生成合成图的聚类系数方面的效用。DGG在所有设置中都能获得最好的精度。这是意料之中的,因为DGG是基于BTER算法,该算法是专门针对返回准确的聚类系数而进行优化的。值得注意的是,LDPGen的准确性在所有设置下的准确性都接近于DGG,而RNL导致的效用远低于其他两种方法。

上图显示了生成的合成图中图协调性系数的相对误差的效用结果。结果与模块化的观察结果相似,即LDPGen实现了实际精度,而RNL和DGG导致了无用的结果。这表明这两种基线解决方案的效用非常低,除了它们专门优化的统计数据(例如,聚类系数的DGG)。另一方面,LDPGen的表现在所有指标、两个数据集和隐私预算ϵ的所有值下都始终很高。

社区保护结果。在我们的第二组实验中,我们使用定义的两个指标ARI和AMI来评估LDPGen、RNL和DGG生成的合成图如何很大程度地保留原始图中的社区信息。上图分别显示了在Facebook和Enron数据集上使用ARI度量的评估结果。需要注意的是,ARI和AMI值越高,精度就越高。显然,在这两个数据集上,所提出的方法LDPGen显著优于基线方法RNL和DGG。此外,LDPGen的ARI值随着隐私预算ϵ的增加而迅速增长,而RNL和DGG的ARI值几乎保持不变。这些观察结果表明,LDPGen在本地差异隐私条件下收集私人信息方面更有效。比较两种基线方法,DGG在更大的安然数据集上略优于RNL;然而,在所有设置下,DGG的ARI值与LDPGen相比都非常低。

上图显示了使用AMI指标,也在前面中定义的社区信息保存结果。这些结果导致了与上述ARI结果相似的结论,即LDPGen在每个设置下都超过了其竞争对手,并且性能差距随着隐私预算ϵ值的增加而扩大。比较ARI和AMI结果,LDPGen在AMI方面的表现始终优于ARI,这表明LDPGen可能更适合于高AMI值更重要的应用程序。
实用程序会导致推荐系统的出现。接下来,我们评估LDPGen、RNL和DGG在社会推荐用例中的有效性,使用前面中解释的NDCG度量,该度量类似于推荐的项目列表。分别使用真实数据和合成数据。NDCG值越大,精度就越高。

上图分别显示了使用Last.fm和Flixter数据集的所有三种方法的NDCG分数。LDPGen在所有设置和两个数据集上都明显优于RNL和DGG。比较RNL和DGG,后者完全失败了,NDCG得分不超过0.2,这意味着它推荐的项目与使用精确的社交图计算的建议几乎没有什么共同之处。RNL比DGG的性能要好得多;原因是在推荐应用程序中,只有近邻很重要,而RNL直接收集这些信息。然而,LDPGen的NDCG得分仍然优于RNL。
一个有趣的观察结果是,LDPGen的NDCG结果并没有随隐私预算ϵ呈线性增加;相反,小ϵ值的NDCG分数仍然较低,当3≤ϵ≤6时迅速增加,之后趋于稳定。原因是,对于每个用户u,推荐的项目列表由其邻居中评级较高的公共项目组成。当ϵ很低时,社交图就非常嘈杂;然而,有一些项目被大多数用户评价很高,而不仅仅是你的邻居。因此,NDCG得分主要反映了这些项目,这些项目对你的邻居列表的噪声并不敏感。一旦ϵ达到了一定的水平,在你的邻居中排名高但不是全球的项目就会逐渐出现在你所推荐的项目列表中,从而提高NDCG分数。最后,当大多数项目包含在推荐项目列表中时,LDPGen的NDCG得分变得稳定;换句话说,在这个阶段,使用合成图和真实图计算的推荐项目主要在细节上有所不同,即用户邻居评价不高的项目。
总结实用程序评估,LDPGen是明显的赢家,它在所有指标和所有数据集上都获得了很高的准确性。RNL和DGG只针对它们专门优化的指标(例如,集群系数的DGG),或者当应用程序主要使用它们直接收集的信息(例如,推荐应用程序的RNL)时才具有竞争力。因此,LDPGen是实际应用中合成分散图生成的首选方法。

LDPGen参数研究

在确定了LDPGen相对于其竞争对手的优势后,我们现在研究了LDPGen中参数k1的适当值的影响,即第一阶段的组数。直观地说,较小的k1导致每个用户报告的邻居列表的粒度较粗,同时需要较小数量的随机扰动来满足本地差分隐私。对于k1的值越大,情况正好相反。因此,选择合适的k1对于LDPGen的整体性能至关重要。LDPGen根据收集到的度向量为k1选择一个值。因此,实验也评估了LDPGen对k1的选择的质量。

上图显示了在固定隐私预算ϵ=1后,在Facebook和Enron数据集中的LDPGen的模块化结果。同样的图还显示了LDPGen选择的值,如竖线所示。对于这两个数据集,LDPGen的效用首先随着k1而增加,当k1达到最优值后,然后随着k1而减少,这与LDPGen的选择非常接近。这证实了选择k1的有效性。

同样,上图显示了k1对ARI度量中LDPGen社区发现效用的影响,以及LDPGen选择的k1值。显然,这些结果与模块化的结果是一致的。我们省略了对k1的进一步实验结果,因为它们都导致了相同的结论。

最后,上图显示了使用ARI/AMI度量和Facebook数据集在LDPGen第二阶段中细化用户分组的轮数的影响。在这些实验中,隐私预算ϵ被固定为1。结果表明,两轮细化效果最好。这是因为更多一轮的分组细化会导致改善用户分组的好处减少,而这并不能弥补增加的隐私预算消耗。在其他指标和数据集上得出的结果也可以得出相同的结论。因此,LDPGen总是对用户分组执行几轮细化,一个在第一阶段结束,一个在第二阶段。

相关工作

关于图生成的形式化模型有大量的工作。最早的模型是Erdos-Renyi(ER)模型,它假设图中的每一对节点都由一条具有独立且相同概率的边连接。Chung和Lu提出了CL模型,它与ER模型相似,但允许每条边以不同的概率存在,以确保节点度遵循给定的分布。基于ER和CL模型,Seshadri等人。提出了块两层Erdos-Renyi图模型(BTER),该模型使用标准的ER模型形成相对密集的子图(对应于社区),然后利用CL模型添加额外的边,以确保结果图遵循给定的边分布。随后,BTER模型的复杂性更精确的图建模。此外,还有其他几种图模型,如克罗内克图模型、优先附着模型、指数随机图模型。
上述图模型在生成合成图时没有考虑到对个人隐私的保护。为了解决这个问题,最近的工作开发了图生成方法,以确保集中设置中的差异隐私,基于以下相同的基本思想。给定一个输入图G,他们首先推导出G的一些噪声统计量(例如,度分布),以一种满足差异隐私的方式。然后,他们将噪声统计数据输入一个图模型,并返回由此得到的合成图G∗。由于G∗只依赖于噪声统计量(这是差分隐私的),而不是输入图,G∗也实现了差分隐私。然而,这些方法要求数据发布者知道整个输入图G。因此,它们不适用于我们的设置,在我们的设置中,数据发布者不能直接访问G,需要来自每个用户(即每个顶点)的信息,同时确保本地差异隐私。请注意,我们的方法也可以在用户组之后使用现有模型,只要模型不需要用户的超过一跳信息。
本地差分隐私(LDP)是一个隐私框架适应传统的集中差异隐私(DP)模型来解决情况数据分布在不同的用户,因此没有收集器访问完整的数据集,或者收集器不希望负责从最终用户收集原始数据。然而,大多数现有的LDP方法仅限于最终用户数据是数值或分类值的元组,并且收集器计算简单的统计数据,如计数和直方图。对包括在内的LDP下的频率估计进行了大量的研究。具体来说,Warner对随机反应方法的先驱研究之后是一项正式化LDP模型的研究。Duchi等人。利用信息理论反技术提供了凸统计估计的最小误差界,而Hsu等人。使用随机投影和测量浓度来估计重击球者。然后,Bassily等人。提出了一种具有信息理论最优误差的简洁直方图估计算法。厄林森等人。提出了一种扩展的随机响应来收集分类值的频率,而Fanti等人。进一步扩展了它,以处理分类值的域未知时的情况。此后,熊等人提出了一项有趣的工作。通过在传感器观测和压缩版本之间的离散无记忆通道上提供优化来提供LDP。
秦等人最近的一篇研究。提出了一种两阶段的LDP机制,称为LDPMiner,它可以处理更复杂的数据挖掘任务。具体来说,LDPMiner可以对集值数据提供准确的重命中器估计。还研究了从流数据中对频繁元素的私有估计。Nguyen等人。提出了一种被称为和谐的LDP机制,作为一种实用、准确、高效的收集和分析智能设备用户数据的系统。和谐可以处理包含数值和分类属性的多维数据,并支持基本统计(如平均和频率估计),以及复杂的机器学习任务(如线性回归、逻辑回归和SVM分类)。
上述LDP研究的共同主题是,它仅限于收集简单的统计信息,如计数、直方图和频繁项。此外,正如前面所指出的,在全局差分隐私框架下的图形生成方面已经做了相当多的工作。据我们所知,我们是第一个提出了一种生成具有本地差分隐私的合成分散社会图的机制。

结论

丰富而有价值的信息存在于分散的社交网络中,其中图形信息只由个人用户存储在他们有限的本地视图中。在本文中,我们提出了一种多阶段技术LDPGen,逐步从用户中提取信息,构建底层社交网络的代表性图,同时保证边缘局部差异隐私。通过在几个真实数据集上的综合实验,验证了LDPGen对现有LDP和合成图生成技术的优点。
据我们所知,这项工作是第一次努力在具有本地差分隐私的分散社交网络上进行保护隐私的图分析。许多具有挑战性的问题仍然存在,包括合并更强的隐私模型(例如,节点本地隐私),处理具有边权值和节点/边属性的图,以及为特定的图挖掘任务开发技术,例如,三角形计数和频繁的子图结构挖掘,我们计划在未来的工作中解决这些问题。关于 这一点工作在它们的另一篇论文,于2020年也是在CCS上发表的。点这里

基于图结构的图合成与差分隐私【LDPGen】相关推荐

  1. 图合成与差分隐私(图结构和节点属性)论文笔记

    AsgLDP: Collecting and Generating Decentralized Attributed Graphs With Local Differential Privacy 论文 ...

  2. 数据结构——图结构:图

    数据结构与算法分析--目录 第一部分:数据结构 数据结构--图结构:图 图基础 \quad 图是一种比线性表和数更为复杂的数据结构.在图结构中,结点之间的关系可以是任意的,也就是说,图中的任意两个数据 ...

  3. ESL第十七章 无向图模型 学习/推断/成对马尔可夫独立/全局马尔可夫性、协方差图/高斯图/修改回归算法/图结构估计/图lasso、【受限】玻尔兹曼机/泊松对数线性建模/迭代比例过滤/对比散度

    目录 17.1 导言 17.2 马尔可夫图及其性质 17.3 连续变量的无向图模型 17.3.1 图结构已知的参数估计 17.3.2 估计图结构 17.4 离散变量的无向图模型 17.4.1 图结构已 ...

  4. [图神经网络]图结构和图的表示

    一.图结构 图:描述关联数据的通用语言.在图中,节点之间是有关联的.但在传统机器学习中,数据样本之间独立同分布. 图需要兼容任意尺寸(不定长)的输入结构和复杂的拓扑结构,且没有参考锚点(不像CNN和G ...

  5. Java图结构-模拟校园地图-迪杰斯特拉(Dijkstra)算法求最短路径 #谭子

    目录目录 一.前言 二.模拟校园地图描述 三.分析题目及相关绘图 四.代码部分 1.GraphNode类 2.Menu类(管理文字) 3.Attraction类 4.AttractionGraph类( ...

  6. 【论文解读|AAAI2021】HGSL - Heterogeneous Graph Structure Learning for Graph Neural Networks 图神经网络的异构图结构学习

    文章目录 1 摘要 2 引言 相关工作 3 方法 3.1 特征图产生器 3.1.1 特征相似图 3.1.2特征传播图 3.2 语义图生成器 4 实验 5 结论 论文链接: http://shichua ...

  7. 有向完全图 java_图结构(一)

    <Java常用算法手册> 引言 图(Graph)结构也是一种非线性数据结构,图结构在实际生活中有非常丰富的例子,例如:通讯网络,交通网络,人际关系网络等都可以归结为图结构.图结构的组织形式 ...

  8. 一种基于随机投影的本地差分隐私高维数值型数据收集算法

    一种基于随机投影的本地差分隐私高维数值型数据收集算法 孙慧中, 杨健宇, 程祥, 苏森 北京邮电大学网络与交换技术国家重点实验室,北京 100876 摘要:对满足本地差分隐私的高维数值型数据收集问题进 ...

  9. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

最新文章

  1. webpack打包的两种方式
  2. oracle pid查看,查看佔用aix oracle pid
  3. 牛顿二项式定理计算平方根
  4. java流式api,Java 8 中流式API性能基准测试
  5. blast2go mysql_Blast2go本地化教程
  6. linux文件系统挂载不上,nfs文件系统在linux下挂载不上的解决办法
  7. __asm__ __volatile__内嵌汇编用法简述
  8. c++开发工具下载地址
  9. 驱动中定时器,taskle,工作队列编程
  10. 图网络笔记-知识补充与node2vec代码注解
  11. NSLog 输出格式集合
  12. IDEA下Maven多模块项目介绍和搭建
  13. c语言中用递归求平方根,下列给定程序中,函数fun()的功能是:应用递归算法求某数a的平方根。求平方根的迭代公式如下: 例如 - 赏学吧...
  14. matlab disp函数_从零开始的matlab学习笔记——(13)符号计算中的多项式
  15. 支持USB Video Class的摄像头
  16. Postgresql去掉某个字段多余的空格
  17. 计算机网络中链路是指什么意思,什么是计算机网络中的上行链路端口?
  18. 攻防世界web新手题答案_南开本部20春学期(2003)《计算机应用基础》在线作业-1答案...
  19. 串行外设接口(Serial Peripheral Interface, SPI)逻辑设计部分 - spi_slave
  20. Python——变量和简单类型(下篇)

热门文章

  1. 利用Crontab为Linux定时备份Mysql数据库
  2. Nginx加密与上游服务器的TCP网络通信
  3. 容器编排技术 -- Kubernetes 架构
  4. NodeJS使用淘宝 NPM 镜像/NPM使用国内源
  5. Spring AMQP ActiveMQ教程
  6. 【Python】七段数码管绘制问题
  7. C#LeetCode刷题之#559-N叉树的最大深度​​​​​​​(Maximum Depth of N-ary Tree)
  8. C#LeetCode刷题之#172-阶乘后的零(Factorial Trailing Zeroes)
  9. C#LeetCode刷题之#1-两数之和(Two Sum)
  10. C#算法设计查找篇之01-顺序查找