论文阅读 - Outlier detection in social networks leveraging community structure

目录

摘要

1. Introduction

2. Related works

3. Preliminaries

3.1. 模块化度量

  3.2. Classes of outliers

3.2.1. 点异常

 3.2.2. Contextual anomalies

3.2.3. Collective anomalies

 3.3. Problem definition

 3.4. Outliers score

 4. Methodology

4.1. Proposed approach

 4.2. Complexity analysis

4.3. Implementation


摘要

        社交网络已成为现代社会的一个重要方面,并逐渐成为世界范围内不可或缺的交流手段。每天都有大量数据通过社交网络传输。因此,确保安全成为一种必要。可疑用户或垃圾邮件发送者可能会对用户在网络上共享的信息和数据构成威胁。有鉴于此,异常值检测是网络通信的一个重要方面。本文提出了一种新技术,利用网络社区结构从全局角度识别网络中的异常情况。一般来说,最先进的异常值检测算法主要关注单个节点及其直接邻域。但我们的技术只考虑那些倾向于属于多个社区的节点,或其邻居属于同一社区或不属于任何社区的节点。

        在合成网络和真实世界网络上的实验结果表明,与最先进的算法相比,我们的 F-Score 和 Jaccard 相似度分别提高了 7-10% 和 29%。此外,与最先进的算法相比,我们的计算速度提高了近 1.83 倍。

1. Introduction

        在过去的几十年里,社交网络(SN)已成为全球用户之间交流的重要媒介,用户之间共享着大量的数据和信息。如今,Facebook、Twitter 等社交网络拥有数十亿用户。对这些用户进行验证变得极为重要,因为他们可能对网络上共享的信息构成威胁,并可能导致盗窃、欺诈、有组织犯罪甚至恐怖活动[1]。因此,识别社交网络中的可疑用户最近引起了广泛关注。

        一般来说,社交网络包含社区[2],在这些社区中,用户形成了联系紧密的子群,因此子群之间的联系与同一子群内部的联系相比是稀疏的[3,4]。社交网络中的离群值被定义为往往属于一个以上社群的用户,或其邻居只属于一个社群或不属于任何社群的用户[5]。迄今为止,已有多项研究识别出了社交网络中的离群值 [6-10],但其中大多数研究的速度较慢,且计算量较大。

        本文展示了一种利用网络社区结构快速查找社交网络中异常值的方法。通过只关注最有可能成为离群值的挂点节点和社区边界节点(CBN)1,搜索空间被大大缩小。然后,我们使用一种称为 "永久性"(permanence)的基于节点的指标来评估 CBN 在其社区内的关联性 [11]。

        本文的主要贡献如下:

        利用 SN 的社群结构来识别离群值,其中社群边界节点使用基于节点的度量标准 "永久性"(permanence)[11]来处理,这是我们所知的首个研究。

        在合成网络和真实世界网络上进行的实验评估结果表明,与现有作品相比,F- Score 和 Jaccard 相似度分别提高了 10%和 29%。此外,与最先进的算法相比,所提出的技术实现了 1.83 倍的提速。

        我们将本文的其余部分安排如下。第 2 节介绍了相关工作。第 3 节正式定义了问题陈述和衡量标准。第 4 节的目的是说明如何利用群落结构来识别异常值。第 5 节介绍了实验结果。在第 6 节中,我们对结果进行了分析。最后,我们将在第 7 节中结束本文。

2. Related works

        在过去几年中,研究人员对社交网络中的异常值检测问题进行了广泛的研究。

        Keyvanpour 等人在 [2] 中提出了一种基于网络社区结构的方法来识别社交网络中的异常点。该方法没有通过应用额外的特征或特征组合方法来提高异常评分。这种方法只适用于静态图,而社交网络是随时间变化的。

        Win 等人在文献[9]中提出了一种基于边缘结构的社交网络社区检测方法,利用节点的相似性进行邻域重叠,从而识别异常值。

        Gupta 等人在文献[7]中提出了一种基于异构信息网络中社区分布的异常值检测技术,如果节点的异常值偏离了常见的社区分布模式,就会被识别出来。实验评估表明,该算法能够检测出不同程度的离群值、数据维度和多种类型的离群值。该算法没有考虑流场景中涉及多个时间网络快照的情况。

        Helling 等人在 [10] 中提出从全局角度找出异常节点。如果一个节点属于一个社区,但却连接到多个不同的社区,那么这个节点就是异常节点。该算法与某些边呈线性扩展,比以前的工作有所改进。本文重点介绍了用于社区检测的 CADA 算法,但还需要进行比较研究,以确定哪种社区检测方法对节点异常检测最稳健。

        Pandhre 等人在 [12] 中提出了一种基于图的节点和边数据的新型离群节点检测方法。

        Berenhaut 等人在 [13] 中提供了一种从诱导局部比较中获得图结构信息的方法。该方法的不足之处在于,天真算法的实现需要花费立方时间。目前,该方法适用于最大规模为 20,000 的数据集。

        Anand 等人在他们的研究成果[14]中概述了现有的社交网络异常检测技术,分为基于结构的方法和基于行为的方法。

        在 [15] 中,作者使用了一种基于距离度量的离群点检测方法来检测在线社交网络(OSN)中的潜在谣言。

        Khamparia 等人在 [16] 中提出了一种结构化多层次系统,用于对不同在线社交网络(OSN)中的异常情况进行分类。该算法还有待在许多数据集上进行测试,并应通过大型实时数据集进行验证。

        Aggarwal 等人在 [17] 中研究了许多小型图中的离群点检测问题,调查了从全局角度检测离群点的各种可用模型,并对图中局部和全局结构的显著变化(通常是突变)进行了研究。尽管迄今为止已有许多文献报道了离群值检测方法,但其中大多数都需要大量的计算且速度较慢。

        在本文中,我们利用 SN 的群落结构来识别离群值,通过只处理垂点和群落边界节点,显著减少了搜索空间。与其他最先进的算法相比,本文提出的技术总能更好地识别离群值。

3. Preliminaries

        让我们考虑一个社交网络G(V ,E ),网络中的每个用户都表示为节点v_i \in V ,用户之间的关系表示为边(v_i,v_j) \in E。在社交网络中,社群结构意味着节点被自然划分为子群 C = \{c_1,c_2,...,c_k\},因此同一子群内的用户之间存在密集的联系。相反,子群之间的联系相对稀疏 [18] 。

        定义 1. 设C = \{c_1,c_2,...,c_k\} 是网络G(V , E)的一个社区结构。如果对于任意两个社区c_i,c_j且在 , c_i \cup c_j = \oslash,其中 i≠j [19],则称其为无连接社区。

        例 1. 对于一个给定为G (V , E) 的网络,图 1 显示了将 G 分解成不同社区的可能方案。

        定义 2. 给定网络G ( V,E ) 的互不相交群落结构,具有群落间边的节点称为群落边界节点 (CBN) [18] 。

        例 2. 分解成不相交群落结构的情况如图 1 所示,集合为 CBN = {3, 4, 6}

3.1. 模块化度量

        为了量化脱节群落结构的质量,我们使用了广受认可的模块化度量 Q [20],其数学表达式为

        

        其中 |E_c| 表示特定社区c内所有边的总计数,|k_c|表示社区c内所有节点的度数总和,即 kc = \sum_{v \in c}d_v ,其中 d_v是节点的度数。 

        根据定义,0 ≤ Q ≤ 1,该值越接近统一值,表示群落结构质量越好,即群落内部的联系比群落之间的联系密集。

  3.2. Classes of outliers

        所需的异常类别是异常值检测技术的关键要素。异常值分为以下三类:

3.2.1. 点异常

        如果一个数据实例与其他数据相比可以证明是异常的,那么它就被称为点异常[21]。大多数异常检测研究都以这种异常为中心,因为从概念上讲,它是最简单的异常。例如,在图 2 中,数据点 o1、o2 和图 1 中区域 O3 中的数据点都位于被认为具有正常数据点(N1 和 N2)的区域边界之外,因此属于点异常。现实生活中的一个例子是入侵检测。让数据集代表来自单个系统的广播。为简单起见,假设数据只包含一个属性:广播频率。假设与给定时间内广播频率的典型范围相比,任何软件包的播出时间都很短。在这种情况下,这可能会被视为全局异常值,我们可以推断相关系统可能已被入侵。

 3.2.2. Contextual anomalies

        上下文异常或条件异常是指数据实例在特定上下文中并不常见(但在其他地方并不常见)。数据集的结构意味着上下文的概念,而上下文必须作为问题表述的一部分加以说明。每个数据实例都使用两组上下文属性和行为属性来定义。上下文属性决定了实例的上下文或邻域(如空间数据集的经度和纬度)。行为属性决定了每个数据实例的非上下文特征(例如,对于描述全球平均降雨量的空间数据集,任何地区的降雨量)[21]。以信用卡欺诈检测为例。在信用卡领域,购买时间是一个上下文属性。假设一个人每周的购物支出平均为 1000 卢比,只有圣诞节那一周会飙升至 10,000 卢比。在八月的一个星期内新购买 10,000 卢比将被视为背景异常,因为它偏离了该人在当时背景下的惯常行为(尽管在圣诞节周内的相同消费金额将被视为正常)。

3.2.3. Collective anomalies

        如果相关数据实例的集合对整个数据集而言是偏心的,则称为集体异常。图 3 展示了人体心电图输出的一个示例 [22]。由于同一低值持续时间过长,图中突出显示的区域表示异常(对应于心房早搏),尽管低值一般不被视为异常。

 3.3. Problem definition

        对于已知社区结构的给定社交网络G(V , E),目标是识别离群节点集V_o∈ V。确定的离群节点集属于一个以上的社群,或其邻居只属于一个社群,或不属于任何社群。

 3.4. Outliers score

        在这项工作中,使用的离群值评分是基于一个节点的指标,称为永久性 [11],它提供了一个节点在多大程度上属于其社区的定量指标,数学定义为

         其中 v表示一个节点,每个 e_i,1 ≤i ≤ k,表示属于第 i 个外部组的邻居数,如果节点没有外部邻居,我们假设e = 1,d_v表示节点的度,EN_v表示节点的外部邻居,IN_v表示节点的内部邻居。

        一般情况下,0 ≤S_v ≤ 1,S_v值越小,表示节点倾向于属于多个社区,即在其社区内联系松散。而S_v = 1 则表示节点与其社区的联系紧密。

        让我们考虑一个简单的社交网络,该网络由 14 个节点和 26 个连接组成,已知离群结构C = {c1, c2, c3},如图 4 所示。在图 4 中,节点 5 的离群值计算公式为

         其中,D5 = 7、IN5 = 3、EN5 = 4 和 ENG 5 = {2,2},即 C2 和 C3 中的两个外部邻居。同样,我们计算其他边界节点的值如下。

 4. Methodology

4.1. Proposed approach

        迄今为止,已有多种基于社区的技术被提出来检测社交网络中的异常值,但这些技术的计算密集度高、速度慢。在 [10] 中,作者提出了从全局角度发现异常节点的方法,即把与许多其他社区有社区成员链接的节点视为异常节点。利用网络的底层拓扑结构,为网络中的每个节点计算异常得分,异常得分越高,表明节点偏离预期位置或分布的程度越高。

        现在,根据我们的工作中对节点离群值的猜想,如果一个节点与其社区成员的联系很弱,并且在其他社区有邻居,那么它很有可能是一个离群值。由于节点有可能在不同的社区中有邻居,因此只需查看位于社区边界的节点就能发现离群值,从而降低了计算成本。

        在提议的算法中,我们考虑了两类节点来检测异常值。属于单一社区的节点在其社区内的关联性很弱(如挂节点)。节点与自己的社区联系松散,但与许多其他社区有联系。在此基础上,为每个 CBN 计算基于节点的度量--永久性[11]。永久度从数量上说明了这些边界节点在社区中的成员程度,也就是说,它确定了边界节点对其社区的归属程度[23]。然后,我们使用公式 (2) 计算每个节点的永久性值,如果任何节点S≤\beta ,则该节点为离群值,其中阈值为\beta。对于吊坠节点,很明显它们在其社区内的关联性很弱。因此,我们不对它们进行计算。我们可以通过节点的度数轻松识别它们。算法 1 简要介绍了这一过程。为了更好地利用内存,我们使用了压缩解析行(Compressed-Sparse-Row,CSR)[24] 表示法。

 4.2. Complexity analysis

        由于网络是天然稀疏的,因此建议的技术需要 O(|V| + |E|) 的空间复杂度,一般来说,|E| ∼ (O|V|)。在计算方面,建议的技术在O (| V|) 时间内识别出挂接节点,计算也需要 (||. ),d_{max}其中表示节点可能具有的最高度数。

        在建议的算法中,|CBNs| ≪ |V | |,而对于大多数真实世界的网络,|E| ∼ O(| V |),建议的算法具有线性时间复杂度。

4.3. Implementation

        我们的算法是用 C 语言在配备 8 GB 内存和 Linux 操作系统的 64 位机器上实现的。我们使用了 Louvain [25] 和 GN [26] 算法进行社区检测。此外,我们还通过实验将阈值设为 0.25。在程序中,我们使用 CSR(压缩稀疏行)表示法[27]来表示一个社交网络(见图 5)。

        其中一个数组,即 eptr,用于保存网络中的每一条边,而另一个数组 vptr 则用于获取节点的第一个邻居。以节点 n 为例,如果 n 不是最后一个节点,则 n 的邻居数计算公式为 vptr[n+1]-vptr[n]。否则,我们的计算公式为(2*图中的边数-vptr[n]),耗时为 O(1)。对于相关的社交网络,我们考虑使用 1 到 n 的 flag 数组,其中每个索引代表一个节点及其相应的 flag 值。flag 值分别为 0、1 和 2。flag 值为 1 代表节点度为 1 或只有一个邻居的节点。现在,我们使用公式 (2) 计算 flag 值为 2 的节点的永久性值,该公式定量描述了节点在多个社区中的成员资格程度。如果 flag 值小于或等于阈值,则该节点将与那些 flag 值为 1 的节点一起被归类为离群节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/77857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

初识FUSE(Filesystem in userspace)

初识FUSE(Filesystem in userspace) 什么是FUSE?FUSE原理FUSE协议 如何去使用?参考文章 之前因为一次作业有幸接触过FUSE,觉得它是一个很不错的框架,没来得及仔细了解。现在有点时间了,想要利用它做一个文件…

Linux部署kettle并设置定时任务

一.安装Kettle linux中使用kettle时首先需要jdk环境,这里就不概述linux中jdk的安装与配置了。 1.首先将kettle压缩包放入linux并解压 unzip data-integration.zip kettle安装路径为:/root/Kettle9.3/data-integration 设置权限 chmod -R 755 /root/Kettle9.3/d…

LVS负载均衡群集NAT模式

LVS负载均衡群集NAT模式 一、集群与分布式1.1、集群的含义1.2、lvs模型1.3、系统性能扩展方式1.4、群集的三种类型1.4.1、负载均衡群集1.4.2、高可用群集1.4.3、高性能运算群集 1.5、LVS的负载调度算法1.5.1、轮询1.5.2、加权轮询1.5.3、最少连接1.5.4、加权最少连接1.5.5、ip_…

pc端测试手机浏览器运行情况,主要是测试硬件功能

测试h5震动摇晃等功能时不方便测试,需要连电脑显示调试数据 方法: 1.需要手机下载谷歌浏览器,pc端用edge或这谷歌浏览器 2.手机打开USB调试,打开要测试的网页 3.pc端地址栏输入edge://inspect/#devices(这里用的edge浏…

K8S:kubeadm搭建K8S+Harbor 私有仓库

文章目录 一.部署规划1.主机规划2.部署流程 二.kubeadm搭建K8S1.环境准备2.安装docker3. 安装kubeadm,kubelet和kubectl4.部署K8S集群(1)初始化(2)部署网络插件flannel(3)创建 pod 资源 5.部署 …

Linux HTTP协议

目录 1.浏览器与服务器通信过程2.HTTP请求报头(1)HTTP的请求报头结构(2)HTTP的请求方法 3.HTTP应答报头(1)HTTP的应答报头结构(2) HTTP的应答状态 1.浏览器与服务器通信过程 浏览器…

回归预测 | MATLAB实现PSO-SDAE粒子群优化堆叠去噪自编码器多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现PSO-SDAE粒子群优化堆叠去噪自编码器多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现PSO-SDAE粒子群优化堆叠去噪自编码器多输入单输出回归预测(多指标,多图)效果一览…

清理Maven仓库中下载失败的文件

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Nginx详解 五:反向代理

文章目录 1. 正向代理和反向代理1.1 正向代理概述1.1.1 什么是正向代理1.1.2 正向代理的作用1.1.3 正向代理的基本格式 1.2 反向代理概述1.2.1 什么是反向代理1.2.2 反向代理可实现的功能1.2.3 反向代理的可用模块 2. 配置反向代理2.1 反向代理配置参数2.1.1 proxy_pass2.1.2 其…

当你的公司突然开始大量的裁员,被留下的你,真的准备好面对以后了吗?

留下来的,也是迷茫的 最近公司突然开始大量裁员,裁了一多半,作为唯一留下的APP 端开发人员,也开始陷入了焦虑,开始了思考,未来究竟何去何从,是否再去转到原生,从事原生的开发工作&a…

C语言入门Day_19 初识函数

目录 1.函数的定义 2.函数的调用 3.易错点 4.思维导图 前言: printf()我们已经很熟悉了,它有一个特定的功能,就是在屏幕上输出一行文字。之前的课程我们都称呼printf()为一个功能,实际上ta在编程中有个特定的名字——函数。 …

测试-----selenuim webDriver

文章目录 1.页面导航2.元素定位3. 浏览器操作4.获取元素信息5. 鼠标的操作6. 键盘操作7. 元素等待8.下拉框9.弹出框10.滚动条11.frame处理12.验证码处理(cookie) 1.页面导航 首先是导入对应的包 :from selenium import webdriver然后实例化:driver web…

网络安全宣传周|探索AI数字人的魅力和价值所在

9月11日至9月17日是国家网络安全宣传周,在福州举办的安全博览会上有着多种人工智能模型产品亮相现场,吸引着众多参观者的目光,尤其是AI数字人面对不同的问题、不同的场景都可以进行实时响应,不同于冷冰冰的传统智能客服的对话场景…

前端面试合集(二)

前端面试题合集 1.懒加载的原理及实现了解吗2.如何理解JS异步3.阐述一下 JS 的事件循环4.JS 中的计时器能做到精确计时吗?为什么? 1.懒加载的原理及实现了解吗 原理:当图片没有到达可视范围内时,图片不加载,当图片一旦…

Mobileye CEO来华:只有能控制住成本的公司,才能活下来

‍作者|德新 编辑|王博 上午9点近一刻,Mobileye CEO Amnon Shuashua步入酒店的会议室。由于Amnon本人是以色列希伯来大学的计算机科学教授,大部分人更习惯称他为「教授」。 时近以色列的新年,这趟教授的中国之行安排十分紧凑。 他率领了一…

遥遥领先的内存函数

目录 ​编辑 函数介绍 1.1 strlen 1.2 strcpy 1.3 strcmp 1.4 strcat 1.5 strstr 2.1 memcpy 2.2 memmove 2.3 memcmp 函数实现 1.1 strlen 1.2 strcpy 1.3 strcmp 1.4 strcat 1.5 strstr 2.1 memcpy 2.3 memcmp 函数介绍 1.1 strlen size_t strlen ( const char *…

SpringBoot整合Redis,基于Jedis实现redis各种操作

前言&#xff08;三步教你学会redis&#xff0c;主打一个实用&#xff09; springboot整合redis步骤&#xff0c;并基于jedis对redis数据库进行相关操作&#xff0c;最后分享非常好用、功能非常全的redis工具类。 第一步&#xff1a;导入maven依赖 <!-- springboot整合re…

小程序代码管理

“微信开发者工具”点击版本管理&#xff0c;然后点击代码管理会打开代码管理网页。 选择对应的项目组。 进来后点击创建项目。 输入git名称&#xff0c;然后选择命名空间&#xff0c;最后创建即可。 在刚才的“微信开发者工具”选择设置&#xff0c;然后添加远程。 输入名称&…

朋友圈大佬都去读研了,这份备考书单我码住了

作者简介&#xff1a; 辭七七&#xff0c;目前大二&#xff0c;正在学习C/C&#xff0c;Java&#xff0c;Python等 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 七七的闲谈 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f…

pycharm安装jupyter,用德古拉主题,但是输入行全白了,看不清,怎么办?

问题描述 今天换了以下pycharm主题&#xff0c;但是jupyter界面输入代码行太白了&#xff0c;白到看不清楚这行的字&#xff0c;更不知道写的是什么&#xff0c;写到哪了&#xff0c;这还是挺烦人的&#xff0c;其他都挺正常的。 问题分析 目前来看有两个原因&#xff1a; 1、…