学习内容中的介绍已经非常精简,不再做重复的总结。今天主要写一下自己在工作中积累的对图相关理解和经典算法的介绍。
图的基本分类
图从node的类型可分为同构图和已构图两类:
- 同构图:图中的所有结点均为同一类型的,例如在社交网络中,所有的用户可作为结点构成一张图,用户与用户之间是否有关联决定了结点与结点间是否有边;
- 异构图:图中的结点类型数>=2,例如在社交网络中,用户、博主、推文可以作为三种类型的结点构成已构图,其中用户、博主、推文的相互关注、订阅情况决定了图中边的情况。
二分图是异构图中的比较常见的一种,顾名思义,二分图是指结点类型数为2的图,例如在电商常见中,买家和卖家可作为不同类型的结点,买家和卖家间是否有订单/行为是否有关联决定了结点与结点间是否有边。
二分图业务问题以及解决方案举例
在电商业务场景中,通常会存在一批买家在一批卖家下大批量下单,从而实现为商家提供更好的订单量数据和GMV数据的目的,这种行为被称为刷单。而识别这一异常行为常用的就是图的密集检测算法,例如M-zoom、fraudar、catchsync、synchroTrap等;这类算法通常的思路是把构建的二分图切分成若干个较小的连通子图,进而识别小的连通子图中是否存在异常聚集的现象,例如该连通子图中的密集度过高,密集度的计算公式如下:
d
e
n
s
i
t
y
=
(
连通子图中实际存在的边个数
)
/
(
完全连通子图边个数
)
density =(连通子图中实际存在的边个数)/(完全连通子图边个数)
density=(连通子图中实际存在的边个数)/(完全连通子图边个数)
其中
d
e
n
s
i
t
y
∈
[
0
,
1
]
density\in[0,1]
density∈[0,1],其值越大表示该连通子图中的边越密集,风险也越大。这类较为简单的算法仅仅使用图结构信息就可以在检测异常上取得较好的效果,如果再加入结点的信息,将会有更好的检测效果。