GCNGCNGCN牛轰轰

1. 背景

        在反作弊应用中,网络中实体(如账户、设备、IP等)都可以用节点表示,而这些节点在业务中的关联可以用边表示。除了团伙作弊外,单个流量黑产方的资源相对有限和固定,行为上也会表现出孤立性和聚集性等特点。 相比经典的图算法,如连通子图、LPA和louvain算法等,图卷积神经网络GCN 算法不仅可以刻画图中的结构信息,还能对节点自身的特征进行有效的信息抽取和分析,能大幅提升识别效果。 它的算法思想是基于节点的局部邻居及其自身特征信息对节点进行表示学习,本质上是通过NN对聚合节点及其邻居节点的特征信息做非线性变换。

2. 图算法简介

图(Graph)是表示对象与对象之间关系的方法,有两个要素:

1. 对象又称节点(Node)、顶点(Vertex)、实体(Entity),它描述的是具体的一个事物;

2. 关系又称边(edge)它描述的对象之间的关系。

在反作弊领域,有以下几个常用的图算法。

2.1 连通子图算法

        连通图(Connected Graphs)指图内任意两个节点间,总能找到一条路径连接它们,否则为非连通图。

即若图中包含岛(Island),则是非连通图;

如果岛内的节点都是连通的,这些岛就被称为一个部件(Component,也叫 Cluster)。

        连通子图算法就是找到所有的Cluster。   以下包含三个Cluster的非连通图:

5d1b5f1f5bad164b2e28ebd5e87e7eff.png

2.2 标签传播算法

        LPA是一种基于标签传播的局部社区划分。 算法迭代过程:

1. 对于网络中的每一个节点,在初始阶段,标签传播算法对于每一个节点都会初始化一个唯一标签

2. 每一次迭代都会根据与自己相连的节点所属的标签改变自己的标签,原则是选择与其相连的节点中所属标签最多的社区标签为自己的社区标签。

        随着社区标签不断传播,最终连接紧密的节点将有共同的标签。

2.3 Louvain算法

        Louvain 是基于模块度的社区发现算法,其优化目标是最大化整个社区网络的模块度。模块度的物理含义是社区内节点的连边数与随机情况下的边数之差,它的取值范围是 [−1/2,1)。

step1: 算法扫描数据中的所有节点,针对每个节点遍历该节点的所有邻居节点,衡量把该节点加入其邻居节点所在的社区所带来的模块度的收益。并选择对应最大收益的邻居节点,加入其所在的社区。这一过程化重复进行直到每一个节点的社区归属都不在发生变化。

step2: 对step1中形成的社区进行折叠,把每个社区折叠成一个单点,分别计算这些新生成的“社区点”间的连边权重,以及社区内的所有点之间的连边权重之和。用于下一轮的step1。

2.4 图卷积神经网络算法

        GCN是一类非常强大图数据NN架构。类似CNN,是一种从图数据结构中提取特征的提取器,其每一层卷积仅处理一阶邻域的信息,通过叠加若干层卷积可实现多阶领域的信息传递,对图拓扑结构和顶点的属性信息进行学习来得到任务结果。可用于节点分类、图分类和边预测等,而不含顶点信息的GCN学习的作用相当于Graph Embedding仅对图的拓扑结构进行学习。 下图是没有经过任何训练得到的二维表征,仅用随机初始化的两层GCN,就能够生成得到网络中节点的有用特征。这些二维表征保存了图中节点的相对近邻性。

        假设有一批图数据,其中有N个节点,每个节点都有自己的特征。这些节点的特征组成一个N×D维的矩阵X,然后各个节点之间的关系也会形成一个N×N维的矩阵A,称为邻接矩阵(adjacency matrix)。X和A便是GCN模型的输入。

        GCN的每一个卷积层的传播规则如下: ae4ceafcb5395f67aa1c79156f00247e.png    

其中:

c784fc3d3184d98deae6a7836230f4c1.png725a7b6f56e9c92accaf7c9740576b2b.png 的度矩阵,即 bfa82848c4a9b7d977fbf9829a272acf.png

bf9c547975d76b4ffe87eea9d5d04405.png 是无向图G的邻接矩阵加上自连接(每个顶点和自身加一条边),

553a7ea3af2bc34e1e5797c0cd5beae5.png 是单位矩阵;

16a26cf9f8e5fc8aa40b4a1ad44a69c1.png 是第l层的激活单元矩阵,

a86e4634e8ba08d6f106823ae00e8ed8.png56f820181bab50b816cd50aed64de067.png 是每一层的参数矩阵 GCN的完整理论涉及到空间域卷积、谱图卷积、傅里叶变换和Laplacian算子。

以上四种图算法的优缺点和适用的场景总结如下:

图算法优点缺点适用的场景
连通子图算法输入同样的图连接可以得到最大规模的团伙噪音数据会带来误杀,为了保证准确率会牺牲较多的覆盖适合建立的边关系比较可靠的场景
LPA算法执行效率高聚合结果不稳定适合半监督聚类的场景
Louvain效率和稳定性均较好适合层次聚类的场景
GCN考虑的信息更多,算法准确率更高原始的GCN算法不易实现分布式计算适合考虑节点特征的场景

3. 图算法在广告反作弊场景的应用

3.1 图算法应用的框架

        首先使用外部行为数据建图,然后应用连通子图、LPA、louvain等无监督图算法得到聚集的簇,之后聚合结果经规则过滤和抽样校验,得到高准确率的黑白标签数据,其中的黑标签数据可直接作为黑名单应用到线上。  

38ce40aebfe8b1b529247b63f44c635e.png

         无监督算法经过规则过滤和校验的黑白标签数据作为GCN算法的样本,结合输入的节点外部特征和黑白标签数据的原始图结构信息,训练GCN模型,迭代样本、特征和模型参数,调节模型效果。最终GCN模型的分类结果得到的黑标签数据可直接作为黑名单应用到线上。 应用框架如此设计的原因在于,反作弊样本不易收集,并且黑产作弊手段持续变化和升级

      通过无监督图算法挖掘出作弊数据,经过筛选可作为GCN的样本,加入节点特征,训练有监督模型后,可召回更多作弊数据。

3.2 建图

        建图依赖对业务的理解,使用用户行为数据作为数据源。如果在同一个时间窗口,两个用户使用了同一个ip,就可以将这个用户和ip关联到一起,这样就构建了一个二部图,节点就是用户和ip,边就是二者之间的关系。

在建图过程中,使用第三方数据和自建数据过滤掉基站ip等公共ip,防止用户被误关联。

3.3 无监督图算法

        使用多天全站行为数据建图,有几亿节点和几十亿边关系,借助Spark GraphX来实现连通子图算法、louvain算法(单机版实现的图算法处理速度慢)。

1. GraphX是一个分布式图处理框架,它是基于Spark平台针对图计算和图挖掘提供了简洁、易用、丰富的接口,极大的方便了对分布式图处理任务的需求;

2. 图的分布式或者并行处理其实是把图拆分成很多的子图,然后分别对这些子图进行计算,计算的时候可以分别迭代进行分阶段的计算,即对图进行并行计算。

借助neo4j来作图,如下图是使用连通子图算法得到的其中一个异常簇:   

167487f4cf499b7d4a45f1c0b6bd6f48.png

        为绕过反作弊系统,作弊团伙不断切换ip和账户,但因为ip资源的有限性,作弊团伙使用过的帐户和ip会不可避免的产生一些关联。 下图是抽取的其中一个簇的行为示例,同颜色的表示使用同一资源,这个簇在不断点击广告页面,并且在短时间内不断切换ip、cookie、useragent等资源以绕过反作弊系统,可以认为这个簇是一个作弊团伙。

8a75b721da7093b1ce1a07f430dc17e2.png

         LPA 算法在标签传播过程中,当邻居节点所属的最多标签出现多个时,会随机选择标签,导致聚类结果不稳定。这里考虑节点的度数,节点的度数越高则节点的重要性越高,重要性程度高的节点通常更加容易影响到重要性程度低的节点。 LPA和louvain的挖掘结果格式与连通子图算法的挖掘结果格式类似,算法的结果均为用户和ip聚合后的簇。

        无监督图算法得到的结果并不能直接使用需要引入业务经验进行验证并打标签。分别使用连通子图算法、LPA 和 louvain算法得到聚合簇,然后通过以下两种方式给节点打标签:

1. 基于簇的统计特征计算簇的风险分,根据风险分对整个簇打标签;

2. 与积累的黑白名单关联给节点打标签。

        将过滤后的结果在验证集合上计算误拦、误放(准确率、召回率)等指标,根据要求的准确率来调节过滤阈值,然后将黑标签数据作为黑名单作用到线上。

3.4 使用GCN算法

        GCN 需要输入节点和边关系构造邻接矩阵,并输入节点特征和节点标签。使用louvain的结果,经规则过滤和人工抽样验证后得到高准确率的黑白标签数据。由于GCN需要使用顶点的特征信息,原始的图结构包含用户和ip两类顶点,需要将所有顶点转换为相同的类型(同构图)。具体做法:

      如果两个用户出现在同一个ip上,则这两个用户建立一条边关系,这样所有顶点类型均变为了用户。

         转化后的数据作为GCN的数据集,共  40.3W 顶点,312W 条边,每个顶点包含53维特征,共有两个类别,正负样本比例2:1。从中选取30万个顶点作为训练集合,10.3万个顶点作为验证集合。 模型使用双层图卷积神经网络,并在中间加入dropout层,激活函数采用ReLU函数,使用ADAM优化器,交叉熵损失函数。网络结构示意图:

26c4231e0640b1e516568c3c32868e15.png

         使用 tensorflow 实现GCN, 经过参数调节和多轮迭代,GCN在训练集上准确率98.9%,召回率96%,在验证集上准确率98.4%,召回率93%。 使用t-SNE算法对顶点向量降到2维,可视化如下图,可见GCN得到的向量能较好的将同类的顶点聚集到一起,不同类的顶点区分开。

838ae7ecd5b5716b1b59f821cad4b05d.png

 3.5 验证挖掘结果

        选取两千个节点作为测试集,使用xgb 作为baseline 模型,多个算法的分类结果对比如下:

模型准确率相对baseline模型的新增召回率
baseline模型95.3%-
连通子图算法+过滤规则95.1%15.5%
LPA算法+过滤规则96.4%12.1%
louvain算法+过滤规则96.8%13.4%
GCN算法98.2%20.3%

        从分类结果来看,在保证95%以上准确率的基础上,图算法相对于baseline,均有高于10%的新增召回,其中GCN模型由于考虑了更多的信息,准确率和召回率比其他模型效果更佳

4. 总结和展望

        结合广告反作弊业务场景,应用了连通子图算法、LPA、louvain 和 GCN算法,取得了不错的效果。实践表明GCN对图的结构信息和图节点的特征进行有效的抽取和分析,能够大幅提高反作弊识别效果。 在今后的工作中,会考虑使用更多维度的行为数据建图,并在图结构中考虑边的权重。会根据业务特点,有针对性的改进基础的连通子图算法、LPA 和 louvain算法。 

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值