58 信息安全—营销反作弊业务的算法实践
导读: 本文介绍当前58营销反作弊业务算法建设的一些实践内容,主要聚焦于各类算法在体系中的应用设计以及相关算法在体系中的实践应用。
背景
58每年会借助58同城、58同镇等平台,投入数以亿计的成本,来进行各式各样的营销活动,以此达到平台各业务线的拉新、促活、促销等目的。然而现实中存在一些”网络黑产”活跃在我们的各类营销活动中,利用一些黑产资源、自动化工具甚至人工手段来获取非法利润,影响了我们平台的正常运营和普通用户的正当利益。以下通过比较典型的三类营销场景来进行举例说明,如图1所示。
- 拉新营销奖励:图a为58同城APP拉新活动,当老用户成功邀请新用户时,对老用户进行一定现金的奖励,且拉取越多奖励越丰厚。由于设备和手机号的资源是有限的,黑产通过刷机、模拟、篡改等方式来不断地模拟新的设备,从而源源不断的获取平台的现金奖励。
- 促活营销奖励:图b为58本地版APP促活活动,当用户分享文章给微信好友时,平台会给予用户一定的现金奖励,以此达到提高平台用户的活跃度和拉取新增用户的目的。正常情况下,一个人通过有限的微信好友,获取平台的奖励是有限的,然而部分黑产通过控制大量的微信账号,进行分享阅读,获取平台大量的奖励,却无法带来有效的活跃和新增。
- 促销营销奖励:图c为58同城APP为促进平台服务的销量,通过发放优惠券的方式给予用户一定的优惠,相当于打折促销,以此来推动业务的发展。其中存在部分非法用户和商家相互勾结来骗取平台的补助,以及部分商家通过刷量来提高在平台排名等问题。
图1 58的营销活动:(a)神奇矿拉新活动(b)同镇分享文章活动(c)到家精选促销活动
营销反作弊的框架设计
当前在应对58多条业务线的营销活动时,我们营销反作弊整体框架的设计如图2所示,下面将对各个层的功能进行表述。
图2 58营销活动框架设计图
**数据层和特征层 **
数据层和特征层依托平台和业务的相关数据,完成用户的各类特征构建,便于模型层的调用。
模型层
模型层是整个框架的核心搭建部分。主要包含无监督模型和半监督/有监督模型。无监督模型的主要作用是进行样本的初期挖掘和样本的持续风险感知。在无监督模型中我们通常会使用异常检测算法和社区发现算法共同对异常个体和群体进行识别。而有监督和半监督模型的主要作用是通过当前已有的样本构建模型,为离线模型服务和实时模型服务提供模型的识别能力。当前主要使用的模型有树模型、node2vec+树模型和半监督图神经网络GRAND。
服务层
服务层提供整个算法能力的线上服务。服务层由离线模型+名单库和实时模型的两种方式供给各业务线不同环节的调用。针对营销场景下部分T+N的业务以及涉及到群体挖掘模型和半监督图神经网络模型时,我们这里通常以离线模型+名单库的方式来提供服务。而在一些对实时性有要求的业务环节,我们通常会提供有监督模型的服务来进行实时拦截。
算法具体应用
营销反作弊在各个场景下的算法流程体系,大体如图3所示。步骤如下:
(1)业务接入初,遇到没有标注样本的冷启动时,使用无监督模型中的异常检测算法和社区发现算法对异常个体和异常群体进行识别;
(2)通过专家评估或者阈值过滤,将异常的用户转化为可供有监督模型训练的标注样本;
(3)使用标注的样本进行半监督神经网络算法和有监督算法模型训练;
(4)通过离线或者实时的模型服务,供给各个业务的调用;
图3 营销反作弊算法流程图
算法流程体系中,无监督模型的异常检测算法和有监督模型的集成学习需要依赖于人工特征,而社区发现算法和半监督图神经网络算法需要依赖于图的构建。通过挖掘的特征很难对用户之间的拓扑结构进行表征,而基于图的社区发现算法也无法对用户的个体异常行为进行识别,因此二者在一定程度上存在着相互补充召回关系。这里将会分别对基于特征应用的算法以及基于图应用的算法进行介绍。
1、异常检测算法和有监督算法
1.1特征构建
异常检测算法和有监督算法需要依赖于特征的提取,如图4所示在营销反作弊业务中,构建的特征类型主要有属性类,动作类和关系类的特征。
属性类特征的构建依赖于用户的注册、认证等数据以及集团对用户、设备、ip等画像数据,可以提取出来用户的基础特征和画像特征,比如:是否完成微信认证、用户的机器登录标签、设备的模拟器标签、是否是代理IP等属性类特征。
动作类特征的构建主要依赖于用户在营销活动业务以及在全站的浏览、点击行为,在部分业务上,很难依赖个体的行为进行判定,反而通过群体很容易发现异常行为。因此在动作类的构建中通常会划分为个体动作特征和群体动作特征,比如:用户的活动频率、用户的活动时间分桶占比、群体的动作相似性、群体的活动时间分桶占比等动作类特征;
关系类的特征构建主要是通过资源或者动作行为来构建关系,在构建关系的基础上完成关系类特征的提取。主要提取的特征类别有关联特征和社区特征,比如:相同设备的不同用户、相同ip的不同用户数、社区的用户数、社区内的边权重之和等。
图4 构建特征类型图
1.2异常检测算法
在营销活动业务初期,往往遇到没有标签的情况,在这里我们通过无监督异常检测算法对异常用户或者群体进行识别,然后再通过专家进一步的评估,最后得到标注的样本。常见的无监督异常检测算法可大致分为:统计与概率模型;线性模型;基于相似度衡量的模型;集成异常检测与模型融合;特定领域的异常检测。由于从总体来看基于集成异常检测中的孤立森林(Isolation Forest)算法的表现相对更稳定,因此我们在实际应用中常常会使用孤立森林来挖掘异常用户。
算法思想
孤立森林算法通过对样本点的孤立来检测异常值,该算法利用一种名为孤立树iTree的二叉搜索树结构来孤立样本。由于异常值的数量较少且与大部分样本的疏离性,因此异常值会被更早的孤立出来,即异常点会距离iTree的根节点更近,而正常值则会根据根节点有更远的距离。从图5中我们可以直观的看到,相对更异常的 xo 只需要4次切割就从整体中被分离出来,而更加正常的 xi 点经过了11次分割才从整体中分离出来。
图5 两个节点分离对比图
该算法大致可以分为两个阶段,第一个阶段我们需要训练出 t 颗孤立树,组成孤立森林。第二个阶段将每个样本点带入森林中的每棵孤立树,计算平均高度,之后再计算每个样本点的异常值分数,选取异常值前top N的点判定为异常点。
应用效果
基于58某营销业务数据,采用Precision@Rank n 作为衡量标准。取Isolation Forest、LOF、HBOS、MCD各个算法识别的Rank 前300异常用户进一步的判断,得到如表1所示的准确率结果。其中可以看出使用Isolation Forest的效果会更好一点。
表1 异常检测算法效果对比
1.3有监督算法
在营销活动各个业务场景中,通过样本挖掘的结果得出的黑产用户量级相对正常用户的量级要小得多,因此在模型训练时存在正负样本的不平衡等问题,针对有监督模型的选型中我们通常会选择集成学习模型来进行建模。集成学习主要是通过树模型来建模,而树模型在类别不均衡数据上表现更好,并且在lightgbm和xgboost等模型中可通过超参数来调整模型的目标函数,增大更少样本类别的权重来解决样本不平衡的问题。
应用效果
基于业务数据,我们分别使用lightgbm、xgboost、rf算法进行了效果对比。如表2所示,lightgbm和xgboost的模型效果相对于rf更好,且二者相差不大,但lightgbm相对于xgboost的训练时间更短,占用内存更小,通常我们会优先选择lightgbm算法建模。
表2 有监督模型算法效果对比
2、社区发现算法和半监督图神经网络算法
2.1 图的构建
无论是社区发现算法还是图神经网络算法都是基于图来完成的,图6所示为营销场景下构建边关系的主要类别,下面将具体介绍各个关系类别的思想。
图6 图构建关系类别
资源关系
通过平台的登录、注册、认证、交易类等日志,我们可以提取和用户关联的设备、ip和手机号等资源数据,通过资源关系构建不同用户之间的边关系。对于资源关系的边权重定义,一种方式是将所有类型的边权重全部默认为1.0;另一种方法是根据人工经验定义,比如一个用户的设备和手机号是相对于ip是更加具有标识性的数据,因此在给设备和手机号边权重定义为1.0时,应当给ip边权重定义为0.5或0.3更合适。最后将用户之间所有的资源边权重进行累加,最后得到用户之间资源关系边的权重值。
图7 资源关系图
活动关系
不同的活动中,用户之间或者用户和商家之间存在着特定的活动关系。如图8所示,在拉新营销中用户之间的关系如左图所示,用户存在邀请关系;在促活营销中,用户之间的关系如右图所示,其中红色节点为分享者,蓝色节点为阅读者,用户之间存在分享阅读关系;在促销营销中,用户和商家的关系如右图所示,商家为红色节点,用户为蓝色节点,用户和商家之间存在交易关系。
图8 活动关系图
对于异构图的构建,活动关系边的基础权重通常设定为1.0。而在构建同构图时,以分享阅读活动为例,当构建分享者的同构图时,因为两个分享者之间存在一定的阅读者交集,这里我们通过阅读者来定义了分享者的边权重,公式如下所示:
上式中 weighti,j 表示 i -> j 的权重,其中 ni,j 为节点 i 和节点 j 的阅读者的交集数量,Ni 为节点 i 的所有阅读者个数,w为自定义的超参数,这里定义为0.8。在定义完边的权重后,通常我们还会有设置一个权重阈值ε,将低于阈值的边去掉,可以一定程度的降低图构建的“过拟合”问题。
行为关系
在各类营销活动中,用户需要持续进行很多的浏览、分享、购买等行为来获取平台的奖励,因此用户在平台留下来一连串的行为序列。这里我们通过衡量两个用户行为序列的相似性,当用户的行为相似性达到一定的阈值时,构建两个用户之间的行为关系。
借鉴NLP中词向量预训练模型的思想,将每个行为定义为一个词,这样用户的一系列行为就相当于一句话。通过word2vec进行预训练,可以得到每个行为的向量表示。这里定义每个行为的向量维度为128,用户的行为序列包含20个行为。将用户行为序列的每一个动作向量进行时间衰减的加权平均,得到用户行为序列表征。在这里我们衡量两个用户行为序列的相似度,使用余弦相似度进行计算:
设置阈值ε,当两个用户行为向量的相似度similarity大于阈值时,构建两个用户之间的边关系,因为当用户量很大,而定义的行为有限时,用户的行为序列容易发生碰撞。因此在这里我们给予行为关系边的权重为0.5。
2.2 社区发现算法: Fast Unfolding
算法思想
模块度是度量社区划分优劣的一个重要指标,划分后的网络模块度值越大,说明社区划分的效果越好,Fast Unfolding算法便是基于模块度对社区划分的算法,Fast Unfolding算法通过迭代不断的划分社区,使得划分后的整个网络的模块度不断增大。
Fast Unfolding算法主要包括两个阶段,如下图9所示:
图9 Fast Unfolding 算法的构建过程
第一阶段为Modularity Optimization,主要是将每个节点划分到与其邻接的节点所在的社区中,以使得模块度的值不断变大;第二阶段称为Community Aggregation,主要是将第一步划分出来的社区聚合成为一个点,即根据上一步生成的社区结构重新构造网络。重复以上的过程,直到网络中的结构不再改变为止。
应用效果
以58某营销活动为例,来介绍Fast Unfolding算法的应用过程和效果展现。如图10所示,图a为构建的用户关系图;图b是使用Fast Unfolding算法得到的结果,图中不同颜色代表着不同的社区;图11是图10的b圈定两个异常社区获取部分用户的设备信息的结果。 从图11可以看出,社区之间用户除了device_model差异大外,其余设备信息boot_time、used_diskspace和screen_brightness等存在异常的群体相似性,因此可判定圈定社区是黑产用户群体。通过Fast Unfolding不仅挖掘出来了异常用户群体,另外一方面通过异常群体的表现拓宽了特征的挖掘,便于我们提取特征用于后面的有监督和半监督模型上面。
通过Fast Unfolding挖掘的异常社区并非一定是黑产群体,需要再进一步通过其他形式或者是业务的数据对其进一步的验证,才可以判断为黑产用户。另外在已有种子用户的前提下,还可以通过关联种子用户社区的其他用户来进行判断标识。
图10 58本地app分享文章活动的Fast Unfoding的应用效果
(a)用户关系图(b)社区划分结果
图11 提取两个社区的部分用户的设备信息
2.3半监督图随机神经网络: GRAND
算法思想
随着深度学习的成功,基于图神经网络GNN的方法已经证明了它们在分类节点标签方面的有效性。其中GNN的优势在于能够同时融入了图的拓扑结构和顶点的特征进行学习,然后再使用这些特征去对图数据进行节点分类、图分类、边预测等任务。这里我们使用的是清华大学提出的用于半监督学习的新型图神经网络结构GRAND,如图12所示,其模型的核心思想:随机传播;一致性正则。
(1)随机传播 (Random Propagation)
GRAND 采用Random Propagation策略,随机丢弃一些节点的属性对节点特征做一个随机扰动,然后对扰动后的节点特征做一个高阶传播。这样每个节点的特征就会随机地与其高阶邻居的特征进交互,这种策略会降低节点对某些特定节点的依赖,提升模型的鲁棒性
(2)一致性正则(consistency regularization)
GRAND采用一致性正则(consistency regularization)的训练方法,即每次训练时进行多次 Random Propagation 生成多个不同的节点增强表示,随后将这些增强表示输入到一个 MLP 中,除了优化交叉熵损失之外,同时还优化了 MLP 模型对多个数据增强产生预测结果的一致性。这种一致性正则损失无需标签,可以使模型利用充足的无标签数据,以弥补半监督任务中监督信息少的不足,提升模型的泛化能力,减小过拟合的风险。
图12 GRAND算法的网络结构
GRAND模型依靠Consistency Regularization 和 Random Propagation 的处理方式,相较于图卷积神经网络(GCN)存在的优点有:
- 模型的泛化能力更强,在半监督节点分类的任务中,GCN 仅仅依靠少量标签数据进行训练时,模型泛化能力会比较差。
- 减轻过平滑问题,GCN可以看做是一种特殊形式的拉普拉斯平滑,叠加多层之后节点之间的 feature 就会变得不可区分。
- 模型的鲁棒性更好,GCN 中的特征传播会使得节点的预测严重依赖于特定的邻居节点,这样的模型对噪音的容忍度会很差。
应用效果
以58某营销活动为例,构建的用户关系图如图13中所示。应用半监督神经网络模型的过程是,首先借助无监督模型和规则引擎完成对图中部分节点的标注,如图label为0是标注的白样本,label为1是标注的黑样本,label为2是未标注的样本,模型通过已标注的黑白样本,来对未标注的样本进行分类预测。
图13 58某营销场景包含标注用户的关系图
基于构建的图以及节点用户特征,我们对比了半监督图神经网络GCN和GRAND模型效果,以及对特征使用Node2vce+XGBoost模型的效果。如表3所示,针对黑样本的各项指标, GRAND算法的模型表现效果更好。
表3 模型测试结果
总结和展望
针对当前58的营销活动场景,我们设计的整个算法的框架应用,在项目的启动阶段和中后期阶段利用无监督的算法模型对线上的黑产样本进行持续不断的挖掘召回,并将新增黑产的样本提供给后续的有监督和半监督模型,从而将模型以离线服务和实时服务的形式应用于各个业务线上。在实际应用中可以有效识别网路黑产的作弊问题,降低各营销活动的经济损失,助力业务线的真增长。此外,相较于传统的模型,在利用图算法模型可以增加图的关联结构信息,可以进一步为黑产的识别带来更多的召回。
在今后的工作中,我们将对框架中从数据到模型到服务的各个环节进行标准化,当不同业务线相似的营销场景接入时,实现业务风控快速部署的目标。同时我们还会持续不断的使用新的算法和模型来提高对网络黑产的深度挖掘。
参考文献:
[1] Vincent D Blondel, Jean-Loup Guillaume, Renaud Lambiotte, Etienne Lefebvre, Fast unfolding of communities in large networks, in Journal of Statistical Mechanics: Theory and Experiment 2008 (10), P1000
[2] Kipf T N, Welling M. Semi-supervised classification with graph convolutional networks[J]. arXiv preprint arXiv:1609.02907, 2016.
[3] Zügner D, Akbarnejad A, Günnemann S. Adversarial attacks on neural networks for graph data[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 2847-2856.
[4] Wenzheng Feng, Jie Zhang. Graph Random Neural Network for Semi-Supervised Learning on Graphs. arXiv:2005.11079v3.
[5] https://github.com/THUDM/GRAND
[6] https://github.com/rusty1s/pytorch_geometric
作者简介:
王磊:58同城-信息安全部-基础算法组,高级算法工程师,主要负责营销反作弊方向。
王阳阳:58同城-信息安全部-基础算法组,资深算法工程师。