今天老肥和大家分享的是字节跳动安全AI挑战赛赛题小样本半监督风险识别
的赛后总结,本次比赛的相关开源代码我已汇总在文章底部。
在真实的社交网络中,存在的作弊用户会影响社交网络平台。在真实场景中,会受到多方面的约束,我们仅能获取到少部分的作弊样本和一部分正常用户样本,现需利用已有的少量带标签的样本
,去挖掘大量未知样本中的剩余作弊样本。给定一段时间内的样本,其中包含少量作弊样本,部分正常样本以及标签未知的样本。参赛者应该利用这段时间内已有的数据,提出自己的解决方案,以预测标签未知的样本是否为作弊样本。数据处理方法和算法不限,但是参赛者需要综合考虑算法的效果和复杂度,从而构建合理的解决方案。
本次比赛给出的数据是T~T+N 时刻内点赞、关注事件下按比例抽样数据以及其对应账号的基础特征数据。
本赛题使用F1-score来评估模型的准召程度
首先明确本赛题实质上仍然是一个二分类的问题,我们也可以完全从此角度出来先构建出一个基础分类模型,然后再利用大量无标签的数据进行半监督学习来提升模型性能。
我们采用的建模方案可能相对特别一些,采用单模型LGB模型进行训练预测,主要从两张表中提取特征,用户基础信息表可以对账户本身的基础特征进行刻画,用户请求表是用户请求行为的记录,可针对此表刻画用户的行为形象,以每一条请求记录
作为一条数据进行建模,最终对于每个用户取请求行为的预测概率最大值
作为预测结果。
特征方案也从上述两个方面展开,基于账户本身基础特征,可以做这些类别特征的计数统计、对于粉丝量等数值特征可以做除法的交叉、登录时间和注册时间特征可以做减法交叉,基于请求行为,我们可以对机型、ip、app_version、app_channel做频数统计,对于用户的请求行为序列,我们可以构建w2v特征(把用户请求行为序列看成句子,行为看作词,训练Word2Vec模型得到每个行为的表征),对于用户的请求时间,我们可以计算请求时间的均值方差、请求时间间隔的统计特征等等。
我们也尝试使用了图网络
来进行特征表示,把请求表的请求方以及被请求方作为结点,两者的请求关系作为边建立他们之间的联系,但是因为被请求方用户的id基本都不在基础信息表中,空缺了大部分特征,收益几乎为零。
当时没有进一步细挖,错过了一个重要的上分点,同时在答辩的时候看到其他团队在这方面下了巨大功夫,也取得了较高的收益,不妨作为参考。我们可以以不同的关系构图
,包括IP关系、设备关系,两个用户共用同一个IP,则认为他们之间存在关联,存在边的关系,同时因为公网IP的存在,可以删除关联超过一定规模的IP。同样的,当一台设备被多个用户使用时,我们认为这多个用户存在着关联,因此就可以在这多个用户中两两构造边。
对于得到的graph embedding,我们不仅可以直接使用该向量作为特征,还可以计算该向量与已有标签用户的余弦相似度作为新维度的特征。
以上是对于一个基础分类模型的构建,我们也尝试使用一些半监督的方法,比如伪标签的思路,将基础模型用于预测无标签数据,再将置信度高的无标签数据作为有标签数据,进一步进行模型的学习,但实际上效果非常有限。其他团队有提到使用社区划分
的方法(LOUVAIN算法),并且取得了性能的提升。
❝在社区划分之后,我们使用简单的规则进行社区属性的划分,即: