首页 > 技术

从单点异常到团伙识别:用 Fraudar 与 Louvain 挖掘异常交易关联网络

2026-11-10 10:38:13      西盟科技资讯   


  为什么我更愿意先看“关系”

  协同异常交易这几年确实越来越难抓。以前批量注册、设备复用、异常 IP 这些特征比较明显,现在碰到众包模式就没那么直接了。参与者很多就是真实用户,账号、设备、支付都正常,有的任务还会要求先搜索、浏览、停留,再去下单。单独看其中一笔交易,和普通消费未必有明显区别。

  所以做这类问题时,我一般不会先纠结“这个用户到底像不像异常行为主体”。单点特征要看,但不能全靠它。设备能换,操作路径能模仿,下单时间也可以故意拉开。众包任务只要还要完成,就绕不开一批人在一段时间内集中给少数商户做交易。人可以换,动作也能变,这种关系却会慢慢积出来。

  第一轮先用 Fraudar 把可疑区域捞出来

  具体做的时候,我会先把一段时间内的用户和商户关系拉出来,建成用户—商户二部图。用户在一侧,商户在另一侧,发生过交易就连边。金额、时间、优惠、退款、履约这些信息先留着,第一轮不一定全用,先把关系本身看清楚。

  图建好以后,我最先看的不是某个用户分数高不高,而是有没有一块关系明显聚得不太正常。比如一批用户在不长的时间里集中交易几个商户,换个时间窗口看,这些人或者这些店又反复碰到一起。单看每条边都不稀奇,连起来以后就不太一样了。

  Fraudar 放在这里做第一轮召回比较合适。它不是简单找交易量大的商户,而是找图里异常偏密的关系,同时尽量压低热门节点带来的干扰。本地生活里头部门店本来客流就大,如果只看共同购买人数,很容易把正常热门商户也捞进来。所以 Fraudar 跑完,我通常只把结果当候选集。

  Fraudar 捞出来以后,我还会再拆一层

  Fraudar 先把范围缩小,但召回出来的异常子图未必就是一个团伙。里面可能叠着几批任务,也可能夹进少量正常用户。直接把整个子图当成同一伙,后面分析会比较乱。所以在候选节点上,我会再用 Louvain 做一次社区划分,把关系拆细一些。

  这一层的边权也不能只看“两个用户有没有买过同一家店”。比如两个人多次在相近时间出现在同一批商户,或者经常同时出现在某类补贴活动里,这种关联就值得给更高权重。商户侧也可以看共享高风险用户的程度。Louvain 跑完后,大块关系通常会变成几个更容易解释的小群。

  拆到这个程度以后,再回头看交易明细就顺很多。哪些用户反复一起出现,哪些商户被同一批人交叉覆盖,交易时间是不是过于集中,补贴、退款、履约有没有共同异常,都能一层层对上。

  图算法不是最终结论

  不过我不会把图算法的结果直接拿去处罚。羊毛党、黄牛、团购群,甚至一些正常的固定消费圈子,在图上也可能聚得很紧。只看“成团”就判黑,误伤很难控制。图模型更适合发现线索,不适合替业务直接下结论。

  后面还是要回到业务特征上。除了团伙内部的交易密度,我会继续看跨商户复用、时间同步、优惠依赖、退款和履约,再补上账号自身的历史活跃度、消费分布。有些团伙图上很漂亮,但交易行为解释不通,所以最后判断不能只靠一个分数。

  我更喜欢把这套方法理解成换了一个观察问题的角度。以前盯着单笔订单,问“这一单像不像假的”;用图以后,会开始追问“为什么这些人总在这些店里碰到一起”。协同异常交易可以换账号、换设备、改操作细节,但只要还需要组织一批人协同完成任务,关系里多少会留下痕迹。

  参考资料

  [1] 京东数科风险算法与技术:《Fraudar 算法在京东关系网络反欺诈中的应用》,2020。

  [2] Hooi B., Song H. A., Beutel A., et al. FRAUDAR: Bounding Graph Fraud in the Face of Camouflage. KDD, 2016.

  [3] Blondel V. D., Guillaume J.-L., Lambiotte R., Lefebvre E. Fast Unfolding of Communities in Large Networks. Journal of Statistical Mechanics, 2008.

相关阅读

    无相关信息