郝晓培,朱建生,单杏花
(中国铁道科学研究院,北京 100081)
高速铁路以及铁路信息化技术的快速发展,为旅客的出行、购票等提供了极大的便利。目前铁路12306互联网售票系统售票量占全渠道的80%以上,日均售票量超过千万,已成为全球最大的票务系统。然而节假日运力资源紧张,旅客“一票难求”的情况依然存在,从而衍生出一批线上黄牛利用互联网法律法规不健全的漏洞以及高效的云资源,囤积大量黑产账户进行抢票、囤票、倒票等不正当的方式谋取利益。为了维护客运购票场景的公平公正以及系统的安全稳定,客运团队研发并上线了风控系统,采用实时行为分析以及基于行为特征进行有监督的用户分类的方式,识别出了大量的异常购票行为,进行不同策略的卡控,取得了明显的效果。不仅仅在铁路客运,其他互联网行业也存在黑产用户非法活动,故国内外针对黑产用户识别进行了大量的研究。在用户个体特征领域,周亮谨等人[1]基于购票流程中主要购票行为为用户特征,基于朴素贝叶斯分类算法构建行为分类器,实现异常用户识别,运行效率和准确率均满足需要。Moh等人[2]构建Twitter用户的相关特征,构建特征矩阵计算用户信任度,从而识别异常用户。在社交网络领域,宋艳红[3]利用G-N社区发现算法以及粗糙集理论计算用户特征权重以及特征信用值,并构建用户可行度,从而识别异常用户。Din I U等人[4]基于社交网络自身的拓扑结构,对类似社交网络中的异常邮件进行识别。仲丽君等人[5]介绍了当前基于社交网络进行异常用户识别的方式,包括分类、聚类、统计、信息论、混合、图等六大类,并对各类方法进行了对比。
基于个体特征的异常用户识别,忽略了个体间的社会关系,无法完整描述用户特征,社区发现也只关注局部的拓扑结构,没有很好利用每个节点的语义信息,均存在一定的局限性。为了进一步完善用户特征表示,该文在研究铁路客运售票业务的基础上,构造了旅客个体特征以及社交关系网络,利用图神经网络充分融合个体特征及社交关系特征,构建特征向量,以提高识别异常用户的准确率。
为了提高黑产用户识别准确率,该文提出了一种基于旅客个体特征及旅客社交关系的黑产用户识别模型,其总体流程如图1所示。
图1 模型总体方案流程
主要包括特征构建、图嵌入向量表示以及黑产用户识别等。
(1)特征构建。
图数据中同时包含两部分信息:实体特征属性和实体之间的关系[6]。其中属性信息描述图中个体节点的固有特征,对应铁路旅客的出行及购票特征;结构信息描述了个体之间的关联性质,对应铁路旅客之间的购票关系以及同行关系[7]。
综合考虑铁路购票系统以及其他出行服务数据的复杂性、多样性以及安全性,实现了对不同系统,不同类型数据进行获取、转码、清洗、入库、关联等处理,从时间、空间等两个维度构建用户特征体系[8]。
铁路旅客之间的购票关系以及同行关系代表了铁路旅客的社交关系,通过分析具有铁路同出行社交关系的旅客具有相似度较高的出行特征,比如:常驻地、出行目的等,同时旅客的特征除了跟自身的购票及出行特征有关之外,还与其有同行关系或购票关系相关的旅客特征有关系,这里基于铁路购票及出行社交关系构建旅客社交关系网络,如图2所示。
图2 关系网络构建
(2)图嵌入向量表示。
基于旅客个体特征以及关系网络生成的数据组成了非欧氏数据集,无法采用传统的方式进行处理,而图神经网络是针对典型的不具备规则空间结构的非欧氏数据类型进行深度学习而发展起来的,可以挖掘出节点之间的关系特征[9],故这里采用图神经网络对旅客特征进行处理。其主要采用一定的方法对旅客社交网络中的旅客节点进行向量表示,随着节点自身特征、邻居节点的特征的更新以及图形拓扑结构的变化得到最终的表示向量,该特征向量保留原始图的结构和节点属性信息。
(3)黑产用户识别。
该文主要采用无核二次曲面支持向量机作为黑产用户识别模型,该模型可在原空间中使用非线性二次曲面对样本进行直接分类,避免了核函数结构以及参数的选择,提高了模型的效率及可用性,该模型将图嵌入向量成特征向量作为样本的输入,实现黑产用户识别。
本节主要基于旅客个体特征及关系网络通过图神经网络模型进行特征向量表示。其核心思想是通过学习一个对邻居顶点进行聚合表示的函数来产生目标顶点的embedding向量[10]。
(1)算法流程。
目前铁路12306互联网售票系统已有6亿注册用户,每年出行人次达到30亿,购票及同行关系复杂,其旅客社交网络组成了规模较大的图数据,其子图的节点数存在呈指数级增长的问题,同时也存在部分度非常大的超级节点,导致进行全图训练的时间代价、计算代价以及存储代价不可控。为了解决该问题,该文针对GraphSAGE[11]模型进行训练,该模型从聚合邻居节点操作出发,对邻居节点进行抽样以控制实际运算节点的规模,同时防止邻居节点随机采样导致局部信息丢失。增加了特征初始化操作,以降低信息丢失率,其主要训练过程如下:
算法:改进GraphSAGE算法主要流程。
Input:样本集B;图G=(V,E),其中V代表用户节点集合,E代表节点之间的关系;层数K;权重矩阵L(k),∀k∈{1,2,…,k};非线性函数σ;聚合函数Agg(k);邻居采样函数N(k):v→2v,∀k∈{1,2,…,k}
Output:输出所有节点的特征向量zv,k∈B
1.fori=1…Ndo
2.forj=1…bihdo
4. end
5.end
6.B(k)←B
7.fork=K…1 do
8.B(k-1)←B
9. foru∈B(k)do
10.B(k-1)←B(k-1)∪Nk(u)
11. end
12.end
14.fork=1…Kdo
15.foru∈B(k)do
19. end
20.end
(2)特征值初始化。
如上述算法所示,为了防止对邻居节点采样导致局部信息丢失,算法的1~5行,遍历每一个节点,提前将节点的特征向量与它所有的邻居节点的特征向量按照固定的权重进行线性组合,使得每一个节点初始状态下已经包含周围邻居节点的一些信息,从而在采样初始阶段保留部分局部信息。
(3)邻居节点采样。
算法的6~12行,首先遍历出样本集B内参与中心节点聚合操作的所有k阶子图,并在这些节点上进行K次聚合操作的迭代运算,基本思路是:要获得某个中心节点第k层的特征,需要对第k-1层的邻居进行采样,接着对k-1层的每个节点采样其k-2层的邻居节点,不断循环,直到采样完第1层的所有邻居位置。
(4)聚合操作。
算法的13~20行主要是对邻居节点进行聚合操作,其中第15行通过聚合函数对每个节点的邻居节点特征进行聚合,接着第16行对聚合后的邻居特征与中心节点的上一层特征进行拼接,输到单层网络中获得中心节点的特征向量,最后对计算好的特征向量进行归一化处理,以保证所有节点向量在相同的单位尺度上。
(5)参数学习。
该文主要采用无监督学习,即节点与其邻居具有类似的特征标识,没有直接相连的节点特征标识相差较大,损失函数如下:
(1)
其中,Zu表示节点u的图特征向量表示,v表示u节点的邻居节点,σ指的是sigmod函数,表示样本数,vn~Pn(v)表示负样本数。
本节以图嵌入向量表示生成的特征向量为输入,利用无核二次曲面支持向量机[12]以实现黑产用户识别,该算法基本原理如下:
(1)模型输入。
(2)模型输出。
(2)
其满足分类曲面g(z)=0可以将黑产用户与正常用户分开。
(3)优化函数。
(3)
故二次曲面支持向量机优化问题可以表示为:
(4)
(4)决策函数。
该模型的目标是将所有的正常用户样本点分布在g(z)=1的外侧,黑产用户在g(z)=-1的外侧,并最大化所有样本到分类曲面的相对几何距离,其对应的分类所测函数为:
f(x)=sign(g(z))
(5)
假设参数最优解为:W*,b*,c*,则最终分类决策函数为:
f(x)=sign(ZTW*Z+b*TZ+c*)
(6)
本模型基于目前铁路客运固定时间段的生产数据作为原始数据,构建用户基础特征以及关系网络。面对海量的交易信息,实验主要采用Spark进行基础特征处理,Spark GraphX[13]进行关系网络构建,最后基于Spark实现GraphSAGE以及支持向量模型。
该文主要解决的是二分类问题,将黑产用户用-1表示,正常用户用1表示。以现有的风控策略以及铁路客运用户画像系统为基础,随机抽取100个正常用户以及100个黑产用户作为种子样本,以整个旅客关系网络为基础,扩展出100万个样本作为测试数据,其中正常用户897 813,黑产用户102 187。为降低模型复杂度,主要挑选了11个基础特征,如表1所示,并对跨度较大的特征进行归一化处理。
表1 旅客个体特征
首先将100万样本数据按照1∶9分为两部分,其中90%作为训练集,10%作为测试样本,以验证模型的好坏。同时为了排除不同训练子集带来的统计误差,采用k折交叉验证(k-fold-cross-validation)方法[14],即将数据随机分为k组,依次将其中一组作为测试集,剩下的k-1组作为训练组构建模型,基于本实验样本的数据量,随机将训练样本集分成20组。
在图嵌入向量表示模型中,基于铁路旅客购票关系以及同行关系构造的关系网络结构复杂,为了保证模型训练的效率,设k为2,关系网络中每个用户节点可以最多根据其2跳邻接点的信息进行聚合学习。常见的聚合函数包括平均、GCN归纳式、LSTM、pooling聚合器。其中LSTM具有更强的表达能力,故该文主要采用LSTM聚合。
分别从准确率、ROC曲线、误伤率以及滞后性对模型进行对比分析。
准确率:即整个样本集预测结果的准确性,准确率越高越好。
ROC曲线以及AUC值:ROC曲线反映敏感性和特异性连续变量的综合指标;AUC值即ROC曲线下方面积的大小,值越大代表分类器效果越好[15]。
误伤率:将正常用户识别为黑产用户的比例,比例越小越好。
滞后性:识别异常用户的耗时对比情况,耗时越短越好。
该文主要采用两种对比方案进行实验,实验一:将原始特征向量,图嵌入表示生成的特征的向量分别作为二次曲面支持向量机进行对比;实验二:将该黑产用户识别模型与现有的风控策略模型进行对比。
4.3.1 实验一
该实验的目的是对比旅客个体原始特征与聚合相邻节点特征(下面简称融合特征)对相同模型性能的影响,分别对两类特征采用二次曲面支持向量机模型训练之后,分别对测试样本进行测试,同时对两个模型的准确率、ROC曲线进行对比分析。
(1)准确率。
从表2可以看出,在相同的黑产用户识别模型中,基于融合特征的样本的准确率明显高于原始特征,同时融合特征的方差相对较小,具有更好的鲁棒性,且相对稳定,因此基于图嵌入向量表示生成的旅客特征更能完整地表达旅客的特征,对黑产用户的识别具有积极作用。
表2 准确率对比 %
(2)ROC曲线。
ROC曲线和对应的AUC值是衡量分类模型性能以及能力的重要指标,是研究模型泛化能力的主要工具,实验一两个模型对应的ROC曲线以及AUC值如图3所示。
图3 ROC 曲线与AUC值
如图3所示,横轴FPR表示假正率,纵轴TPR表示真正率,其中融合特征模型的ROC曲线完全覆盖原始特征的ROC曲线,同时融合特征模型的AUC值相对较大,因此融合特征模型的性能更优且泛化能力更强。
4.3.2 实验二
该实验的目的是对比现有风控策略模型与黑产用户识别模型,由于目前样本的训练集以及测试集的类别标签均是采用现在的风控策略进行标记,仅仅依靠针对测试集进行测试的准确率以及ROC无法体现黑产用户识别模型的性能。因此,测试样本改为随机抽取一周的互联网购票用户作为测试集,依次用两个模型进行异常用户标记,分别从误伤率以及滞后性两个方面进行分析。
(1)误伤率。
误伤率即将正常购票的用户识别为异常用户的比例,通过分析一个月的用户访问日志、投诉、行为分析等,发现黑产用户识别模型的误伤率降低了10%。
(2)滞后性。
滞后性即识别出异常用户需要的时间。采用两个模型识别近半年的异常用户,并随机抽取1 000个异常账户(编号为1到1 000)进行识别时间分析,如图4所示(为方便显示1 000个账户随机抽取节点绘制),其中横坐标表示时间,纵坐标表示异常账户的编号。可以看出,文中模型的散点相对当前风控模型比较集中在左侧,经过统计,文中模型在随机抽取的异常账户中,超过60%识别时间有所提前,即现有的风控策略需要积累一定的用户行为特征才能够识别出异常用户,而文中黑产用户识别模型可以同时通过用户关系层面的关联挖掘潜在的黑产用户,在其进行异常操作之前进行相应的控制。
图4 异常用户识别时间对比
分析了现有售票系统的数据特点,构建了用户实体特征以及实体之间关系特征,基于GraphSAGE模型进行邻居节点采样,将旅客个体特征与其相邻节点特征进行融合,生成最终的旅客特征向量,将其作为无核二次曲面支持向量机的输入进行黑产用户识别。实验证明融合个体特征及邻居节点特征生成的特征向量在相同的模型下,准确率及AUC值都表现较好,而且相对现有的风控策略模型,降低了误伤率,缩短了黑产用户识别的时间。