自从有互联网以来,网络上便流传着各种垃圾和恶意信息。应对各种垃圾,作弊乃至欺诈信息成了各个互联网公司必须解决的问题。特别是随着各种社交网络网站的兴起,反作弊和互联网安全成为了研究界和工业界都面临的挑战。各大互联网公司都成立了专门的反作弊团队,应对每天出现的反作弊情况。
反作弊中最常用到的技术之一就是图论算法,反作弊问题经常可以归约为图论问题。例如可以利用 SVD 分解图的邻接矩阵的方法,还可以利用图遍历算法进行反欺诈检验。具体到金融领域,图论算法可以用来进行风控和失联修复方面的工作。
作为全球***的社交媒体网站,Facebook 一直在设法积极应对网站上的欺诈和作弊行为。CopyCatch 是 Facebook 2013 年发表在知名国际会议 WWW 上的反作弊论文,讲述了 Facebook 处理一类叫作 Lockstep 欺诈行为的算法。
Lockstep 行为是指存在这样的页面,大量的用户都在较短的时间窗口内给这个页面点过赞。检测 Lockstep 行为也就变成了检测这样的用户和页面的集合。下面我们就来看一下 Facebook 是如何设计反作弊算法的:
首先构建一个二部图。二部图的节点有两类:一类是用户,另一类是 Facebook 的页面。当 Facebook 的用户给某个页面点赞时,便会在代表用户的节点和代表页面的节点之间构建一条边。Lockstep 行为可以用如下数学公式来描述:
这个问题本身可以转化为在二部图中检测二部核(Bipartite Core)的问题。检测二部核问题本身是 NP-hard 问题,因此需要设计近似算法来解决这个问题。Facebook 把这个问题设计为***化问题。
首先重新定义一下问题描述:
这个问题可以归约为如下***化问题:
其中 L 代表用户点击页面的时间矩阵,c 是欺诈用户发生欺诈行为的中心向量,而 P’ 是欺诈页面集合。这个***化问题的实质是: 选择聚类中心 c 和页面子空间 P’ 来***化聚类中给定的时间窗口内用户和用户喜欢行为的数量。解决该问题采用迭代的算法,算法的***步是选定聚类中心 c ,算法的第二步是根据 c 来选定 P’。算法的框架如下所示:
其中 UpdateCenter 函数的流程如下:
UpdateCenter 函数的基本思想是在当前聚类中心的 范围内重新选择聚类中心,使得新的聚类中心能够覆盖更多的用户和更多的点赞行为。
FindUsers 函数的流程如下:
FindCenter 函数的流程如下:
FindCenter 函数的基本思想是将二部图中与某个页面关联的用户根据页面点赞时间进行排序,然后考察在给定时间窗口内用户子集合的点赞行为的***值。将新的聚类中心点设置为用户子集合的中心。
UpdateSubspace 函数的流程如下:
UpdateSubspace 函数的基本思想是考察当前欺诈页面子集合之外的页面,看是否存在欺诈可能性更高的页面(也就是关联欺诈用户是当前欺诈页面对应用户的超集),如果存在,则将当前页面替换为新页面。
作者提供了 Map-Reduce 版本如下:
CopyCatch算法的收敛速度很快,在 Facebook 的数据集上大约10个迭代算法就可以收敛:
Facebook 的 CopyCatch 算法思路和实现均较为简单, 并且经过线上运行确认算法效果满足线上要求, 是非常优秀的算法。虽然算法发表距离今天已经有一段时间,但是仍然具有现实的参考意义。
CopyCatch 算法用到了图论的相关知识。截至今天,图论已被广泛的应用在反欺诈/反作弊/信息安全等领域。熟练的掌握图论相关知识已经成为大数据和人工智能从业者的必备技能。希望本文能够给互联网行业的相关从业者提供宝贵的经验。
转载请注明:IT运维空间 » 安全防护 » 跟Facebook学反欺诈 看CopyCatch算法如何搞定Lockstep
发表评论