基于图的异常检测(三):GraphRAD

一个快乐的数据玩家/风控/图挖掘
24 人赞同了该文章

论文:《GraphRAD: A Graph-based Risky Account Detection System》
作者:Jun Ma(Amazon),Danqing Zhang(Berkeley)
来源:MLG ' 18

本文介绍Amazon基于图的欺诈交易账户检测系统,相比LOCKINFER 和 OddBall,本文是面向实际业务设计的检测系统,并使用了标签数据。

早期做过十分类似的项目,在可视化关联分析的基础上,为案件调查人员提供智能风险团伙分析服务。所以个人还是比较认可的,在整个系统设计及社区发现模块比较有借鉴价值。

1.背景

应用场景:黑产通过窃取支付信息在Amazon的在线零售商户购买商品获利。

假设:在“欺诈社区”中欺诈账户间连接紧密,而与社区外的账户连接稀疏。

检测系统目标:给予账户之间关系图和一批黑种子,系统检测出有潜在风险的社区及账户供专家调查。并满足以下特性:

  • 检测需要做到准实时,以及时止损。
  • 返回的可疑社区不能太大和重叠,减少专家工作量。
  • 每个账户需要有风险评分,专家根据评分决定优先级。
  • 目标是对已有规则引擎的补充,额外发现未识别的欺诈账户。

2.系统框架

大概思路是:通过最近交易事件提取一批黑种子账户,构建账户之间关系网络,然后识别和过滤社区,然后为社区中节点打分,然后返回结果。

流程介绍:

  1. Transaction Record:交易事件数据查询接口模块,交易事件字段包括交易时间、账户id、收货地址、决策引擎结果(Trusted、Fraud、Risky),提供一段时间查询交易事件的接口。
  2. Graph Generator:构建账户之间关系图“big-graph”模块,通过某些共享属性(如收货地址等)建立连边。
  3. Seeding:筛选黑种子模块,决策引擎中标记为Fraud 以及 部分Risky的账户(根据启发式规则)。
  4. Community Detection:局部社区发现模块,以黑种子账户为输入,识别出围绕种子的一个个局部社区。算法是Personal PageRank变种ACL,线性复杂度。
  5. Screen + Merge:过滤及合并:根据风险大小过滤一些局部社区,然后合并成这些局部社区成“big-comm”(局部社区之间会部分重叠,合并减少冗余)。
  6. Community Extractor:最终社区抽取,基于上面ACL算法得到的基于PPR向量,通过层次聚类得到最终的社区
  7. Feature Extractor:提取“big-comm”中节点特征,基于交易数据,特征使用决策引擎规则
  8. Scoring:基于图的惩罚项,训练半监督模型,为每个节点评分

最后给专家提供社区结构和节点评分以供调查使用。

3.核心模块

3.1 构建网络(Graph Generator)

数据来源:最近的交易事件

例如 有两个交易事件:

  • 交易事件1:账户A,收货地址为:杭州市西湖区蒋村花园23幢
  • 交易事件2:账户B,收货地址为:杭州市西湖区蒋村花园23幢

因为账户A和账户B共享同一个收货地址,故他们会有一条边,以此来建立账户与账户之间关系网络。

实践中如共享同一个设备、同一个IP都可以作为连边条件。

3.2 社区发现及过滤

该模块是本文的比较有意思的地方,不是对网络进行全局的划分,而是先以欺诈账户为种子节点,找到每一个种子节点所在的局部社区,然后对这一个个局部社区进行过滤和合并成一个大社区,最后对这大社区进行划分,得到一个个不重叠的社区。

这样做的优势是:

  1. 计算复杂度非常低,局部社区发现计算复杂度仅跟输出的结果线性相关。
  2. 个人认为还有个优势是降噪和考虑用户需求,通过加入黑种子、社区过滤等人为干预方式,降低数据噪声,控制社区规模和冗余,方便专家进行案件审查。

下图比较是直观的一个全局和局部社区发现的对比:

3.2.1 局部社区发现(Community Detection)

以黑种子节点为输入,使用基于Personal Pagerank局部社区算法ACL,该算法比较经典, 复杂度仅取决于输出结果。

算法使用电阻率(conductance)作为评价指标(模块度是全局的):

后面会补上对ACL的解读。

3.2.2 过滤和合并(Screen + Merge)

因为局部社区发现返回的结果是一个个围绕着黑种子的局部社区,必然会有冗余

另外局部社区规模非常小,可能是不存在是个体风险,而不是群体风险。

故需要对局部社区进行过滤,本文是先过滤掉规模较小的局部社区,然后对每个局部社区建一个风险评分模型,再过滤掉风险较低局部社区(y怎么定义用什么特征没仔细说)。

(个人觉得过滤环节不用做太多的操作,简单原则。另外对社区评分模型不好做的,考验泛化能力,还不如用规则)

过滤完后再对这一个个局部社区进行合并,组成一个“大社区“(其实就是将所有节点和边都放在一起)。

3.2.3 社区提取(Community Extractor)

因为局部社区发现用的是基于personal pagerank 的方法,可以得到每个节点的一个pagerank 向量,表示节点与其他节点的相似度。将该一个个向量转换成矩阵,并用层次聚类的方法得到最终的社区。 社区数量k的设置控制社区规模,方便专家分析。

3.3 节点评分(Scoring)

在“大社区”上为每个节点打上一个分数,方便专家分析时确定优先级及过滤低评分的节点。

本文对比了Node2vec、GCN和在基于图惩罚项的模型给节点评分,发现基于图惩罚项的模型效果是最好的(也许是样本量有限?按理说应该是GCN好)。

基于图惩罚项的模型即在有监督损失如交叉熵中加入图的惩罚项(相邻节点的预测结果是相近的),这样在训练时不仅考虑了有标签节点,也考虑了无标签的相邻节点,故称为半监督学习。

特征是用了决策引擎中的规则,标签y定义即是否欺诈。

3.4 例子

“大社区“

最终返回的一个个社区

4. 效果评估

该检测系统目标是 发现更多规则引擎没有发现的欺诈账户,而不是去跟规则引擎去PK,故评价标准是“missed bad” ——检测到的未发现的欺诈账户占比 (通过专家标注,用比例的原因是对于准确率的考量)

首先与随机抽样对比,系统每一个模块的missed bad情况,证明好的系统每一个模块检测比例应该是递增的:

  1. 随机抽样:0.017%
  2. 经过局部社区发现和过滤合并得到的大社区上:0.054%
  3. 经过社区提取后:1.51%
  4. 根据节点评分排序和过滤: 2.77%

上述模块中的missed bad 没有考虑,被决策引擎判为正常的欺诈账户,故真实结果应该会更高。

另外对比简单规则——欺诈节点直接相连的邻居认为是欺诈的对比,GraphRAD检测还是有比较大的增益的。

基于图的异常检测(一):OddBall

基于图的异常检测(二):LOCKINFER

基于图的异常检测(三):GraphRAD

基于图的异常检测(三):GraphRAD的更多相关文章

  1. 基于高斯分布的异常检测(Anomaly Detection)算法

    记得在做电商运营初期,每每为我们频道的促销活动锁取得的“超高”销售额感动,但后来随着工作的深入,我越来越觉得这里面水很深.商家运营.品类运营不断的通过刷单来获取其所需,或是商品搜索排名,或是某种kpi ...

  2. kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归

    使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...

  3. 基于变分自编码器(VAE)利用重建概率的异常检测

    本文为博主翻译自:Jinwon的Variational Autoencoder based Anomaly Detection using Reconstruction Probability,如侵立 ...

  4. 异常检测-基于孤立森林算法Isolation-based Anomaly Detection-1-论文学习

    论文http://202.119.32.195/cache/10/03/cs.nju.edu.cn/da2d9bef3c4fd7d2d8c33947231d9708/tkdd11.pdf 1. INT ...

  5. Abnormal Detection(异常检测)和 Supervised Learning(有监督训练)在异常检测上的应用初探

    1. 异常检测 VS 监督学习 0x1:异常检测算法和监督学习算法的对比 总结来讲: . 在异常检测中,异常点是少之又少,大部分是正常样本,异常只是相对小概率事件 . 异常点的特征表现非常不集中,即异 ...

  6. LSTM UEBA异常检测——deeplog里其实提到了,就是多分类LSTM算法,结合LSTM预测误差来检测异常参数

    结合CNN的可以参考:http://fcst.ceaj.org/CN/article/downloadArticleFile.do?attachType=PDF&id=1497 除了行为,其他 ...

  7. 网络KPI异常检测之时序分解算法

    时间序列数据伴随着我们的生活和工作.从牙牙学语时的“1, 2, 3, 4, 5, ……”到房价的走势变化,从金融领域的刷卡记录到运维领域的核心网性能指标.时间序列中的规律能加深我们对事物和场景的认识, ...

  8. 异常检测LOF

    局部异常因子算法-Local Outlier Factor(LOF)在数据挖掘方面,经常需要在做特征工程和模型训练之前对数据进行清洗,剔除无效数据和异常数据.异常检测也是数据挖掘的一个方向,用于反作弊 ...

  9. 时间序列异常检测算法S-H-ESD

    1. 基于统计的异常检测 Grubbs' Test Grubbs' Test为一种假设检验的方法,常被用来检验服从正太分布的单变量数据集(univariate data set)\(Y\) 中的单个异 ...

随机推荐

  1. 6. Go语言—字符串操作

    一.字符串支持的转义字符 \r 回车符(返回行首) \n 换行符(直接跳到下一行的同列位置) \t 制表符 \' 单引号 \" 双引号 \\ 反斜杠 \uXXXX Unicode字符码值转义 ...

  2. oracle 周岁年龄计算

    以下三种方法均可实现周岁年龄的计算: --算法一: SELECT TRUNC(months_between(sysdate, csrq)/12) AS "Age" FROM wrx ...

  3. 元昊讲django框架

    一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有 ...

  4. 工具资源系列之给 windows 虚拟机装个 ubuntu

    前面我们已经介绍了如何在 Windows 宿主机安装 VMware 虚拟机,这节我们将利用安装好的 VMware 软件安装 Ubuntu 系统. 前情回顾 虚拟机为我们在 Windows 宿主机体验别 ...

  5. Fink| CEP

    什么是复杂事件CEP? 一个或多个由简单事件构成的事件流通过一定的规则匹配,然后输出用户想得到的数据,满足规则的复杂事件. 特征: 目标:从有序的简单事件流中发现一些高阶特征 输入:一个或多个由简单事 ...

  6. [LeetCode] 238. Product of Array Except Self 除本身之外的数组之积

    Given an array nums of n integers where n > 1,  return an array output such that output[i] is equ ...

  7. Note | MATLAB

    目录 1. 读写文件 简单读写 将rgb保存为yuv文件 从yuv文件中读取Y通道 将TIFF图片拼接为yuv文件 2. 字符串操作 3. 画图 4. 词频统计 1. 读写文件 简单读写 fp = f ...

  8. 数据仓库001 - 复习Linux shell命令 - pwd mkdir mv tail -f xxx.log 和 ail -F xxx.log

    1.  [root@localhost ~]#  的含义 ?  [登录的用户  机器的名称 家目录] 2. 查看当前光标所在的目录   pwd [root@localhost ~]# pwd /roo ...

  9. Orm框架(AntOrm,Ktorm)在mac机器上如何使用代码生成

    Orm框架介绍 AntOrm 是我维护的一个开源csharp -netcore 项目 Ktorm 是一个大神开源的kotlin项目 由于我工作上都用到了,为了提高工作效率 我写了一个mac端工具帮助快 ...

  10. 云原生生态周报 Vol. 12 | K8s 1.16 API 重大变更

    本文作者:源三.临石.张磊.莫源 业界要闻 1. K8s 1.16 将废弃一系列旧的 API 版本 影响面涉及 NetworkPolicy.PodSecurityPolicy.DaemonSet, D ...