论文题目:BotFinder: A Novel Framework for Social Bots Detection in Online Social Networks Based on Graph Embedding and Community Detection
目录
3 Our Proposed Method: BotFinder
3.2 Step1: Feature Engineering
3.3 Step2: Similarity Calculation
3.4 Step3: community detection
论文链接:https://assets.researchsquare.com/files/rs-1871702/v1_covered.pdf?c=1659021986
摘要
背景信息:
近年来,随着在线社交网络(OSN)的广泛普及,用户数量也呈指数级增长。与此同时,社交机器人(即由程序控制的账户)也在不断增加。OSN 的服务提供商经常使用它们来保持社交网络的活跃。同时,一些社交机器人的注册也是出于恶意目的。有必要检测这些恶意社交机器人,以呈现真实的舆论环境。
论文方法介绍:
该论文提出的 BotFinder 是一个检测 OSN 中恶意社交机器人的框架。
它结合了机器学习和图方法,从而可以有效地提取社交机器人的潜在特征。
在特征工程方面,其生成二阶特征,并使用编码方法对具有高基数(包含大量不同值)的变量进行编码。这些特征充分利用了有标签和无标签样本。
在图方面,首先通过嵌入方法生成节点向量,然后进一步计算人类和机器人向量之间的相似度;
接着,使用无监督方法扩散标签,从而再次提高性能。
实验效果
为了验证所提方法的性能,在人工智能竞赛提供的数据集上进行了大量实验,该数据集由 800 多万条用户记录组成。结果表明,该方法达到了 0.8850 的 F1 分数,大大优于目前的技术水平。
1 Introduction
背景信息:
社交机器人,即由程序控制的账户,可用于保持社交网络的活跃度。尽管 OSN 中存在有益的社交机器人,但一些恶意社交机器人的出现也会产生有害影响。例如,有些人出于各种目的注册大量账户,如恶意增加粉丝或点赞数。这些恶意行为已成为威胁社交网络平台健康发展的重要信息安全问题[1-2]。因此,有必要对这些恶意社交机器人进行检测,也就是社交机器人检测。目前的研究大多针对 Twitter 等国外平台,而针对国内 OSN 的研究较少。
之前方法挑战:
目前与社交机器人检测相关的工作主要分为两类,即机器学习方法和基于图的方法。
然而,这一课题仍然存在一些挑战:
1) 一般来说,大多数方法都依赖于单一算法来识别社交机器人,但由于数据集的多样性,这可能不是理想的选择。
2) 在实践中,大部分数据是无标签的,这表明标签的数量通常很少。因此,如何有效利用无标签数据是一个巨大的挑战;
BotFinder方法:
该研究提出了一种综合机制 BotFinder,通过结合特征工程和图方法来检测社交机器人。
首先,对数据集进行特征工程,提取全局信息。
然后,通过嵌入方法生成节点向量。
然后,计算人类和机器人向量之间的相似度。
最后,采用无监督方法(这里考虑使用社群检测算法)来进一步提高性能。
文章贡献:
本文的贡献概述如下:
1) 首先,当孤立节点较多时,图算法可能表现不佳。而机器学习方法则无法学习拓扑结构。因此,结合机器学习方法和图方法来克服这些问题。
2) 其次,在特征工程中,试图获得二阶特征,并采用编码方法对具有高基数(或换句话说,包含大量不同值)的变量进行编码。
就图而言,通过嵌入方法生成节点向量。然后,利用无监督方法扩散标签,以提高性能。这些方法充分利用了有标签和无标签样本。
2 Method: BotFinder
方法简介:
它主要包括三个步骤: 1) 在表格数据上体现特征工程技术;
2) 得出节点嵌入,然后测量人类和机器人之间的相似性;
3) 应用社群检测算法来进一步提高性能。
3.1 Overview
方法介绍:
图 1 详细说明了这些步骤。
第一步,利用特征工程技术生成特征矩阵。
第二步,使用图嵌入方法生成相似性矩阵,然后合并这两个矩阵。
之后,采用 LightGBM 训练合并矩阵,并推断出临时结果。
第三步,使用社群检测方法生成部分结果,并利用这些结果修正 LightGBM 的结果。
3.2 Step1: Feature Engineering
特征工程:
尝试获取二阶特征、时间间隔特征、数值编码和k倍目标编码。然后,应用 LightGBM 来训练获得的特征并推断临时结果。
二阶特征:
为了表示表中分类变量的组合,假设二阶特征表示为 (𝐶𝑂𝑈𝑁𝑇, 𝑁𝑈𝑁𝐼𝑄𝑈𝐸, 𝑅𝐴𝑇𝐼𝑂)。
COUNT:
这里𝐶𝑂𝑈𝑁𝑇反映的是活动程度。
具体来说,选择一对变量(即 V1 和 V2),并预期记录这对变量在数据集中出现的次数。
将其简称为𝐶𝑂𝑈𝑁𝑇 (V1,V2)。例如,用户使用设备类型(V1)iPhone12,1 和应用程序版本(V2)126.7.0 的组合向某人点赞,这个组合在数据集中出现 k 次。
那么,使用 iPhone12,1 和 126.7.0 的用户将获得𝐶𝑂𝑈𝑁T值 k。
𝑁𝑈𝑁𝐼𝑄𝑈𝐸:
𝑁𝑈𝑁𝐼𝑄𝑈𝐸表示特定范围内的多样性。
使用一个变量(V1)作为主键,在另一个变量(V2)中记录唯一类别的数量。
将其缩写为𝑁𝑈𝑁𝐼𝑄𝑈𝐸 (V1)[V2]。
例如,对于使用设备类型(V1)iPhone12,1 的用户,数据集中有 k 个不同的应用程序版本。那么,使用 iPhone12,1 的用户将得到为 k的 𝑁𝑈𝑁𝐼𝑄𝑈𝐸值。
𝑅𝐴𝑇𝐼𝑂:
𝑅𝐴𝑇𝐼𝑂描述了计数的比例。
计算公式为 𝐶𝑂𝑈𝑁𝑇(v1, v2)/𝐶𝑂𝑈𝑁𝑇(v1) 。
例如,设备类型(V1)iPhone12,1 和应用程序版本(V2)126.7.0 的组合出现 k 次,设备类型(V1)iPhone12 在数据集中出现 v 次。
那么,所有使用 iPhone12,1 和 126.7.0 的用户将得到 k/v 值。
时间间隔功能:
不同用户的请求时间间隔各不相同。在此,主要考虑时间间隔的最大值、最小值、中位数和总和。
计数编码:
计数编码是用数据集上计算出的计数来替换类别。然而,某些变量的计数可能是相同的,这可能会导致两个类别被编码为相同的值。这将导致模型性能下降。因此,我们在此引入一种目标编码技术。
K 折目标编码(或可能性编码、影响编码、平均值编码):
目标编码是通过目标(标签)对分类变量进行编号。
用目标的相应概率替换分类变量的每个类别。
为减少目标泄漏,采用 k 折目标编码。
具体做法如下:
(a) 将训练数据分成 10 份。
(b) 将第 2~10 个折目标的平均值视为第 1 个折的编码值,并同样计算第 2~10 个折的编码值。
(c) 利用训练数据的目标值确定测试数据的编码值。
3.3 Step2: Similarity Calculation
采用 Node2vec来获取用户的节点嵌入(向量),然后计算用户与标签用户之间嵌入的余弦相似度。
相似度值表示两个用户拥有相同标签的概率,例如,如果用户 1 和用户 2 之间的余弦相似度相对较大,则他们拥有相同标签的概率很高。
例如,A和 B表示用户/账户的两个节点向量。两个向量的余弦相似度计算公式为
其中 Ai 和 Bi 分别表示向量A 和 B的元素.
然后,对于训练集和测试集中的每个节点向量C,计算它在机器人和人类之间的最大余弦相似度和平均余弦相似度,用向量 [Smax1, Smean1, Smax0, Smean0] 表示如下
其中 Di和Ei 表示节点向量
流程如下图所示:
3.4 Step3: community detection
在社群检测方面,采用了典型的卢万方法,将构建的图划分为不同的社群。
然后,将用以下规则为社区贴标签:
1) 如果有标签的用户属于同一社区,则社区中的所有用户都应具有相同的标签。
2) 如果一个社区中的用户没有任何标签,或者用户的标签不同,我们将不进行预测。
不过,预测可能无法覆盖所有用户。
因此,该规则的性能有限。但该规则的结果比 LightGBM 更准确。
通过将上述两个步骤结合起来,可以进一步提高性能。
4 Experiment
为了评估所提议机制的性能,从人工智能竞赛中收集了一个数据集(https://security.bytedance.com/fe/ai-challenge#/sec- project?id=2&active=1)。该数据集包含 800 多万条记录,包括用户资料和用户请求(关注或喜欢某人)。
数据集的基本信息如表 1 和表 2 所示:表 1 显示了用户的个人信息(个人资料),而表 2 则说明了用户的行为(请求),包括当时用于发起请求的设备和应用程序版本。
任务描述如下:
给定用户配置文件及其请求。只有一小部分用户被标记。因此,必须建立一个合理、可解释且有效的模型,以便从用户中检测出恶意机器人。
然后,在表 3 中进行了简单的统计分析。
标签为 1 的请求表示该请求被阻止,相应的用户为机器人。实验发现机器人的数量明显少于人类的数量。
4.2 Data processing
数据处理过程:
总的来说,在变量 "用户 "上将用户资料矩阵与用户请求矩阵合并,并对用户请求进行预测。
对于特征工程,不同变量的处理过程如表 4 所示。操作完成后,得到特征工程矩阵
在相似性计算中,利用 3 种关系得出图形,然后计算相似性。
利用 "request_ip"、"request_device_id "和 "request_target "关系得到图。例如,如果两个用户使用相同的 IP,或关注相同的目标,或共享相同的设备,他们之间就会有一条边。
1) 使用 "request_ip "构建图: 分析了每个 IP 关联的用户数量,相应结果见表 5。在大多数情况下,每个 IP 只关联一个用户。然而,构建的图可能无法覆盖所有用户。
因此,预计将排除只有 1 个用户的 IP。此外,还存在一些拥有超过 1000 个用户的 IP,它们可能是公共 IP。这些公共 IP 的存在会导致构建的图中出现大量的边,从而削弱用户之间的关联。因此,为简单起见,也排除了用户数量超过 1000 的 IP。
表 6 显示了排除后每个 IP 关联用户数量的量化值。共有 26,836,730 条边和 1,953,559 个节点,占所有用户的 44.23%。
2)使用‘request_device_id‘构建图:相关性较IP强,但是构建的图更小, only 17,193 nodes and 5,432,432 edges。
3)‘request_target' 构建图:用所有的数据,将构建60,544,191 edges and 2408,814 nodes, 需要大量资源处理该数据。排除超过20个关联用户的节点,最终获得5121,010 edges and 1317,012 nodes
生成向量:[𝑆𝑚𝑎𝑥1, 𝑆𝑚𝑒𝑎𝑛1, 𝑆𝑚𝑎𝑥0, 𝑆𝑚𝑒𝑎𝑛0] 使用request_ip, ‘request_device_id’ and ‘request_target’
生成向量:[_𝑆𝑚𝑎𝑥1, _𝑆𝑚𝑒𝑎𝑛1, _𝑆𝑚𝑎𝑥0, _𝑆𝑚𝑒𝑎𝑛0],使用‘request_ip’ and ‘request_device_id’