参与:Nurhachu Null、Chita作者:Brian Srebrenik

网络新闻真假难辨?机器学习来助你一臂之力

前不久,因为 AI 可以自动生成文本和图片,关于 AI 自动生成假新闻的讨论不绝于耳。有人不免担忧假新闻的泛滥,但是本文作者以子之矛攻子之盾,用机器学习来检测假新闻的源头。

拥有超过一百万粉丝的认证用户的推特网络。圆圈(节点)代表用户,连接圆圈的线条代表一个用户「关注」另一个用户。颜色表示通过模块化聚类确定的类别。

虽然「假新闻」早在互联网时代开始之前就存在了,但如今确定新闻源头的可靠性貌似比以往任何时候都难。在做了关于这个课题的一些研究之后,作者发现图论方面正在做一些研究,来观察我们是否可以用机器学习来帮助检测假新闻的源头。作者对网络的力量以及能够从中得到的信息非常感兴趣,所以决定建立一个分类模型,以从 ego network 中寻找一些模式来检测假新闻。

什么是 ego network?

Ego Network(在人类社交网络分析中也被称为 Personal Network)由一个中心节点 Ego 和与其直接相连的节点 Alter 组成,网络中的边展示了 Ego 与 Altar 或者 Alter 之间的联系。ego network 中的每个 alter 可以有其自己的 ego network,所有的 ego network 结合起来就形成了社交网络。在这样的网络中,ego 可以是人类,或者是像商业活动中的产品和服务一样的对象。在下图中,作者可视化了推特上粉丝超过一百万的认证用户的 ego network。每个圆圈代表一个推特认证用户的节点(圈的大小与其粉丝总数相关),连接它们的线条或者边代表的是一个用户「关注」了另一个用户。这张可视化图,以及本文中的其它图都是使用 Gephi 来制作的。


考虑到这个项目的目的,作者决定分析严格经过认证的推特网络,因为有一种自然的倾向:用户更加信任被推特官方认证的信息源。

训练数据的问题:如何确定哪个节点代表假新闻的源头?

在项目开端面临的最大问题可能就是如何确定哪个推特账户被归类为用作训练数据的虚假新闻来源。目前并没有一致的方式来确定某条新闻是不是假新闻,如果有的话,这也不会是一个首要问题了。幸运的是,作者找到了 ICWSM 2015 的一篇论文《CREDBANK: A Large-scale Social Media Corpus With Associated Credibility Annotations》所附带的 CREDBANK 数据。

总之,CREDBANK 包含了超过 6 千万条关于 1049 个真实事件的推文,每条推文都由 Amazon Mechanical Turk 的 30 名工作人员做了可信度标注(每个标注都有他们的基本理由)。CREDBANK 的主要贡献就是以一种系统、全面的方式编制了一个将社交媒体事件流和人类置信度判断连接在一起的独特数据集。

通过把这个数据集和推特社交网络数据结合起来,作者可以创建一个用于训练分类模型的数据集。该数据包含 69025 个认证用户,以及他们之间的所有联系。在这些用户中,有 66621 名被确定为真实新闻来源,有 2404 名被确认为虚假新闻源。被认定为虚假新闻源的是那些有超过 5% 的推文被 Amazon Mechanical Turk 的置信度评价者标记为低于部分准确的用户。

社交网络 EDA

这是作者所创数据集中所有新闻源的社交网络图。蓝色的点和线代表的是真信息源,红色的代表的是假信息源。

这和上面的图是同一幅图,只是仅仅显示了虚假信息源。

在收集和组织完数据(作者用了图数据库 Neo4j 来存储网络数据)以后,第一步就是对网络数据做一个初始的探索性分析。作者在初始分析中用了两个网络算法:特征向量中心性(Eigenvector Centrality)和 PageRank。特征向量中心性算法只在数据中的一个样本上运行,因为在大规模网络上计算中心性会耗费相当长的时间。

特征向量中心性是对一个节点在网络中的影响力的度量。基于以下概念将相对分数赋给网络中的所有节点:与高分节点的连接对所讨论节点的分数贡献比与低分节点的相等连接更多。高特征向量得分意味着该节点连接了许多高分节点。

PageRank 被广泛视为检测图中具有影响的节点的一种方式。它与其他的中心性算法不同,因为一个节点的影响要依赖于其邻近节点的影响。

来源: https://github.com/neo4j-graph-analytics/graph-algorithms-notebooks

我使用 Python 库 NetworkX 对这些算法的实现来确定上面展示的统计量。

正如你所看到的,尽管真实信息源的特征向量中心性有更大的扩展,但是总体上二者非常相似。因此必须寻找其他方法来区分这两类节点。

通过 Louvain 社区发现(Community Detection)算法进行聚类

Louvain 的社区发现方法是一个用于检测网络中的社区的算法。它最大化了每个社区的模块化得分,其中模块化通过评估它们在随机网络中的连接程度来量化节点到社区的分配质量。

作者决定在其网络数据上运行这个算法来看看虚假信息源是否被放在了同一类别。在下面的第一张图中,他可视化了整个网络图,每个节点都被标记为了它被分配的类别的颜色。第二张图仅包含了虚假信息源。

貌似绝大多数虚假信息源都被放在了紫色和绿色的类别中,并且,显而易见所有的虚假消息源都主要分布在图中的一个区域。这确实很好地消除了 25838 个真实信息源(通过这种聚类方法将 25838 个节点放置在没有任何虚假来源的类中),但仍然不足以完全隔离虚假新闻源。为此,作者决定尝试 node2vec。

Node2Vec

斯坦福大学网络分析项目 node2vec 的创建者这样说:

node2vec 框架通过优化保留目标的邻域来学习图中节点的低维表征。其目标是灵活的,并且算法通过模拟有偏差的随机游动来适应网络邻域的各种定义。具体而言,它提供了一种平衡 exploration- exploitation 权衡的方法,这反过来得到了遵循从同质到结构等价的一系列等价的表示。

基本而言,node2vec 算法让作者可以将所有节点嵌入到一个以上的维度(具体地,在这个项目中是 128 维)中,以作为给图中节点的位置设计新特征的方式。在其模型中,他使用了该算法的这种实现。

下面是其选择的一些参数

不幸的是,即使为每个节点设计了这 128 个新特征之后,其最初尝试构建的分类模型也没有成功。由于严重的类别不均衡(不到 4%的节点是虚假源),其算法总是预测所有信息源都是真实的。因此他需要一些其他差异化功能来帮助这些分类算法。

词嵌入

node2vec 的思想实际上来自于词向量,这是一种向量化类型,它通过训练神经网络来计算文本语料的词向量,神经网络会产生高维的向量空间,而语料中的每个单词都是这个空间中的一个独特向量。在这个嵌入空间中,一个向量与其他向量的相对位置就能够捕获到语义含义。

作者决定使用每个 Twitter 用户的简要描述在循环神经网络中进行分类。网络内的嵌入层计算词嵌入向量。然后,该神经网络的输出将是 Twitter 账户的描述来自真实账户或虚假账户的概率。然后,他将结合来自 node2vec 的特性使用这些概率来构建最终的集合分类模型。以下是循环神经网络的详细信息:

模型总结

最终分类模型

作者使用来自 node2vec 的特性和来自神经网络的概率在 SVM 和 XGBoost 上进行了网格搜索。他决定将搜索聚焦于高召回率和高精度的模型上,因为其类别非常不均衡(将所有的样本预测为「真实新闻」也会得到高达 95.6% 的准确率)。

XGBoost 和 SVM 的网格搜索结果

下图展示了为 XGBoost 和 SVM 分类器找到的最佳参数,以及最终模型的混淆矩阵

1. XGBoost

2. SVM

正如你在上面看到的,XGBoost 模型的精度要稍微好一些,但是 SVM 模型的召回率要稍微好一些。

结论

这些分类模型表现得相当好,尤其是考虑到严重的类别不均衡。显然,词嵌入特征对模型检测真正例(true positive)的能力有很大的影响。虽然作者想基于网络的特征严格地对节点进行分类,但似乎还不足以将这些节点区分为虚假节点。但是,作者确实认为网络分析在检测虚假新闻方面有很大的潜力。他所遇到的一些问题必须使用更大规模的网络来解决(就像其之前提到的,由于规模的原因,不能在整个网络上计算中心性),并且,数据中确实还有更多的模式有待发现。

如果你想查看作者项目的代码库及其完整的分析,可以从以下链接找到:https://github.com/briansrebrenik/Final_Project

原文地址:https://towardsdatascience.com/ego-network-analysis-for-the-detection-of-fake-news-da6b2dfc7c7e


入门分类问题新闻媒体数据可视化
4
相关数据
混淆矩阵技术

混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度。在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。矩阵的每一行表示预测类中的实例,而每一列表示实际类中的实例(反之亦然)。 这个名字源于这样一个事实,即很容易看出系统是否混淆了两个类。

网格搜索技术

网格搜索是一项模型超参数优化技术,常用于优化三个或者更少数量的超参数,本质是一种穷举法。对于每个超参数,使用者选择一个较小的有限集去探索。然后,这些超参数笛卡尔乘积得到若干组超参数。网格搜索使用每组超参数训练模型,挑选验证集误差最小的超参数作为最好的超参数。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

真正例技术

被模型正确地预测为正类别的样本。例如,模型推断出某封电子邮件是垃圾邮件,而该电子邮件确实是垃圾邮件。

词嵌入技术

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

图论技术

图论是以“图”为研究对象的一个数学分支,是组合数学和离散数学的重要组成部分。图是用来对对象之间的成对关系建模的数学结构,由“顶点”(又称“节点”或“点”)以及连接这些顶点的“边”(又称“弧”或“线”)组成。值得注意的是,图的顶点集合不能为空,但边的集合可以为空。图可能是无向的,这意味着图中的边在连接顶点时无需区分方向。否则,称图是有向的。

XGBoost技术

XGBoost是一个开源软件库,为C ++,Java,Python,R,和Julia提供了渐变增强框架。 它适用于Linux,Windows,MacOS。从项目描述来看,它旨在提供一个“可扩展,便携式和分布式的梯度提升(GBM,GBRT,GBDT)库”。 除了在一台机器上运行,它还支持分布式处理框架Apache Hadoop,Apache Spark和Apache Flink。 由于它是许多机器学习大赛中获胜团队的首选算法,因此它已经赢得了很多人的关注。

聚类技术

将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。

暂无评论
暂无评论~