CatchSync - 利用静态网络中的异常检测定位水军
1.背景
在社交网络、在线电商中,用户之间或用户与商家之间会想成网络。例如,Twitter上用户之间的follow,可以形成“who-rate-who”网络;电商中用户在商家下的购买和评论行为也是个巨大的网络,“who-buy-who”,“who-rate-who”。
在这些巨大的网络中,有些人在做着不光彩的事。
在Twitter、微博里,有些人为了提升自己或者一个话题的影响力,会购买转发形成“虚假转发“,也有人会购买“虚假跟随者”;电商为了提高自己的销量或声誉,会花钱雇人虚假购买自己的产品,撰写虚假的评论,造成”虚假交易“和”虚假评论“。
今天介绍Alex Beutel 博士论文《User Behavior Modeling with Large-Scale Graph Analysis 》中的一个工作:CatchSync,其目的就是找到这些水军。
2.CatchSync
事实上,这些异常行为在网络中会体现为dense subgraph,成为网络中的异常数据。
然而,正常用户也会产生dense subgraph,因为正常人也可能进行扎堆转发,扎堆购买的行为。这就导致了仅仅依靠的网络结构无法准确的区分作弊者和正常人。
CatchSync就是一个不仅利用网络结构,也利用网络节点的上下文特征进行异常行为检测的框架。
CatchSync检测异常的出发点是异常行为的两个特点:
1)一致性:异常的源节点会倾向于形成同步行为,即他们指向的目标节点之间具有相似性;
2)异常性:异常的源节点与大多数节点很不同,即他们指向的目标节点与一般节点较为不同。
那么在网络中检测异常行为的问题可以总结为如下:
已知:节点之间的连接图
寻找:一组可疑的源节点(水军),以及对应的目标节点(雇佣水军的人)
为实现这个目标,首先从网络中提取节点特征。实际上,基于图的拓扑结构可以提取的特征很多,包括但不仅限于:
1)出度,入度
2)HITS得分
3)中介中心度
4)左右奇异向量的第i个元素值
文中使用了HITS模型中的authoritativeness和入度作为基本特征。从图1中的左图的直观展示可以看出,异常源节点对应的目标节点分布的较为集中,而正常源节点对应的目标分布很分散。这正体现出了异常用户的目标存在一致性。
有了可用的节点特征之后,下一步就是计算源节点(跟随者)的正常性和一致性。首先定义如何计算两个节点的v和v'之间的临近程度:
很粗暴,这里怎么分Grid cell也没细讲。
接下来就可以利用这个临近程度计算方法计算一致性和正常性了:
有了这两个值后就可以画出“正常性-一致性”的图啦(图1右侧)。异常节点具有较高的一致性,较低的正常性。提取出这部分样本的方法很多,文中使用的3δ。
图1 X对应异常的节点,Y对应正常的节点。左侧两图为authoritativeness-indegree图,即原始特征空间图;右侧两图为normality-synchronicity图,即用于判断节点是否为异常的“正常性-一致性图”。左侧图中X其指向的节点(target)分布较为集中,而Y指向的节点分布较为分散。右侧图中X集中在正常性低,而一致性高的部分。
3 效果
直接看在真实数据集上的实验结果,数据是从twitter和腾讯微博收来的真实数据,场景是“跟随”。其中OutRank是一个很出名的检测网络中异常的方法,SPOT是一种基于微博内容判断是否异常的方法。
表1 CatchSync及其他方法的识别精度(不知道什么条件下统计的 - -!)
图2 在Twitter和腾讯微博上的PR曲线对比。
4 总结
优点:
1.不需要参数,不依赖其他的特征;
2.直观好理解。
局限性:
1.在实际应用中仅仅依靠网络的拓扑结构往往难以达到要求,文中也提到跟基于内容的方法相结合能够取得更好的结果,在应用中可以考虑在计算正常性和一致性时多考虑些额外的信息。再扩展开,文中的正常性和一致性的计算方法未必是最优和普适的,可以扩展出有很多方法来。