图计算思维与实践项目实践

Mr-Bruce Mr-Bruce     2022-12-07     532

关键词:

前言

在前文《图计算思维与实践 (一)概览》中,我们介绍了以知识图谱、网络分析为主的图计算的应用,阐述了图思维的方式;在《图计算思维与实践 (二)核心概念与算法》中,我们介绍了图相关的核心概念与算法。本文我们将进入第三部分:项目实践。文中的示例来自我们在网络数据分析项目中的一小块,并不复杂,主要用来阐述使用图计算解决相关业务问题的基本思路。

背景

业务背景是这样的:在我们的应用网关产品中,有多个不同的引擎从不同的角度对网络流量进行安全扫描。其中有一些增强型引擎,可以更早的帮助用户发现网络威胁,但是通常只有一部分用户会打开功能,因为打开后会带来两个问题:性能下降、误报率上升。那么我们能否依靠大数据关联分析,帮助没有打开功能的用户也能在早期防御住相关网络威胁?

以某个邮件扫描的引擎为例,假设有100个用户打开了扫描功能,发现了1000封存在威胁的邮件。通过对这1000封邮件的数据进行关联分析,找出在多个用户都出现过的相似的攻击,然后我们就可以利用这些攻击的特征来分析另外200个没有打开功能的用户是否遭受了同样的攻击。如何发现一批用户在遭受相似的攻击,就是我们在这里要解决的问题。

解决方法

针对上述的业务问题,我们尝试从图计算的视角来解决。当然,这并非是解决此问题的唯一途径,我们也有尝试过其他的聚类分析方法,这里不再赘述。

研究工具

工欲善其事必先利其器,我们先来看看常用的图计算工具:Neo4j、Spark GraphX、NetworkX。我们主要使用了前两者,Neo4j用来对数据进行人工分析,寻找规律和方法;Spark GraphX用于最后的实现,因为我们只需要离线计算产出结果即可,不需要存储图数据。

  • Neo4j,是一个图数据库,提供了自有的查询语法、丰富的图算法库、图数据可视化功能,分社区版和商业版,社区版部分功能受限,比如只能创建一个DB。
  • Spark GraphX,基于Spark RDD来实现图计算的并行执行,目前官方库只有Scala版本,但是有一个准官方库GraphFrame是基于Python的,提供的算法较少,需要自己来实现。
  • NetworkX,一个Python库,提供了图数据分析常用的函数和算法,具有可视化功能。
基本分析

我们从邮件网络数据中提取出每封邮件的发件人、邮件主题和接收用户的信息,将其灌入Neo4j中进行研究。下图所示,右侧为某一天数据的一部分,左侧为放大的一块信息。可以看到,共有三种节点:红色表示发件人,棕色表示邮件主题,绿色表示接收用户;共有两种关系:发件人跟邮件主题之间是WROTE关系,邮件主题跟接收用户之间是SENT关系。

我们观察Neo4j中的可视化图形,可以发现一天的数据所构成的图是非连通的,由多个连通组件构成,而我们的目标是寻找“一群用户”,因此需要首先来分析连通性,找到符合条件的连通组件。下图所示,在Neo4j中运行Connected Component算法,再查找有超过5个用户的连通组件,发现符合条件的有5个。

社区发现

我们选择第一个连通组件来继续分析。一个连通组件里,可能包含了多个不同的攻击模式。比如下图中,通过观察发现,这里面包含3个社区。如何通过算法自动进行社区发现呢?

在社区发现算法中,都是针对同一类节点进行计算的,而这里有3种节点,因此需要对这些节点进行合并。通过分析数据发现,整体的攻击手法分两种:一种是用一个发件人发送不同的邮件主题给不同的人,另一种是用不同的发件人发送同一个邮件主题给不同的人。基于这样的模式,我们对上述的连通子图进行了合并。

下图所示,为合并后的连通子图,蓝色表示接收用户,粉色表示有相同特征的邮件组。到这里,还是没法对某一类的节点来运行社区发现算法,因为这里面还有两种节点。Neo4j提供了relationQuery的方法,支持根据关系动态构建一个子图,然后再执行社区发现算法。

下图所示,就是利用Neo4j来执行Louvain社区发现算法。阅读下面的执行语句,会发现中间动态构建了一个子图,这个图是基于邮件接收用户之间的关系来构建的,然后在此图上运行Louvain算法,最后得到了下图右侧所示两个社区,跟我们人工观察的结果是一致的(有1个社区在合并节点时因为不符合业务条件被过滤掉了)。

至此,我们通过图分析和社区发现,得到了多个分组,每个分组表示一批用户在遭受相似的攻击。基于分组信息,我们可以进一步执行其他业务动作。

小结

本文通过截取业务中的一小块,示例了如何通过图计算来解决业务问题。中间依次涉及了:提取数据构建图、连通组件分析、业务分析与过滤、节点合并、社区发现算法,在分析数据时使用了Neo4j图数据库,在实现时采用了Spark GraphX。



(全文完,本文地址:https://bruce.blog.csdn.net/article/details/112757802

版权声明:本人拒绝不规范转载,所有转载需征得本人同意,并且不得更改文字与图片内容。大家相互尊重,谢谢!

Bruce
2021/02/27 晚

图计算思维与实践概览

前言说起图计算,可能很多人能想到的是曾经学过图数据结构、复杂网络等,对于其在工程中的实际应用知之甚少。亦或者,很多人听说过知识图谱,却很少想过它是用一种什么样的方式在解决什么样的问题,... 查看详情

图计算思维与实践核心概念与算法

前言在前文《图计算思维与实践(一)概览》中,我们介绍了以知识图谱、网络分析为主的图计算的应用,阐述了图思维的方式。本文我们将进入第二部分:图相关的核心概念与算法,这些是进行图探索的... 查看详情

图计算思维与实践核心概念与算法

前言在前文《图计算思维与实践(一)概览》中,我们介绍了以知识图谱、网络分析为主的图计算的应用,阐述了图思维的方式。本文我们将进入第二部分:图相关的核心概念与算法,这些是进行图探索的... 查看详情

图计算思维与实践概览

前言说起图计算,可能很多人能想到的是曾经学过图数据结构、复杂网络等,对于其在工程中的实际应用知之甚少。亦或者,很多人听说过知识图谱,却很少想过它是用一种什么样的方式在解决什么样的问题,... 查看详情

《移动项目实践》实验报告——初级控件(代码片段)

...简单控件的用法、简单图形的用法实验内容以windows上的计算器为例,程序界面如下图所示:完成精简之后的Android版本的计算器效果简单计算器的运算界面效果实验过程(实验的设计思路、关键源代码等)源代码:https://... 查看详情

项目管理理论与实践——软件开发报价的计算方法

...量、商务成本、国家税收和企业利润等项有关。为了便于计算,给出一个计算公式:软件开发价格=开发工作量×开发费用/人·月1.1开发工作量软件开发工作量与估算工作量经验值、风险系数和复用系数等项有关:软件开发工... 查看详情

[思维模式-17]:《复盘》-5-“行”篇-操作复盘-项目复盘

目录前言:一、“事后回顾”与项目复盘实践二、项目复盘的12条秘诀三、大型项目的复盘1、分层级复盘2、分阶段复盘四、项目复盘的关键成功要素1.领导重视2.明确责任3.积少成多,图难于易4.把复盘当成推进工作的一... 查看详情

angularjs深度剖析与最佳实践读书笔记

一.建立一个项目的流程1.配置环境所用到的技术,软件,确定2.系统隐喻描述下目标项目与现有的哪个系统类似,能更形象的记住目标。要重点描述出与现有的不同点。3.业务目标要做什么,不做什么,需求分析(做明细图标【... 查看详情

基于scrum方法实践的西油计科党建设计与实现-个人实践流程清单

基于SCRUM方法实践的西油计科党建设计与实现个人实践流程清单一、Alpha版本冲刺个人在SCRUM团队任务清单:时间我这个三天做了什么实际解决燃尽图项目数量我遇到了什么问题我下一个三天要做什么预计下三天完成燃尽图项目数... 查看详情

基于scrum方法实践的西油计科党建设计与实现-个人实践流程清单

个人实践流程清单1.Alpha版本冲刺个人在SCRUM团队任务清单:时间我这个三天做了什么实际解决燃尽图项目数量我遇到了什么问题我下一个三天要做什么预计下三天完成燃尽图项目数量2019.10.9-2019.10.12完成了党站分析系统的登录、... 查看详情

软件工程的实践项目课程的自我目标

...合去完成并且做好一件事情的能力;规范编码习惯和逻辑思维方式,深入了解软件开发全过程,并期望从中有所得。 <2>对项目课程的期望:     希望通过此次的课程设计,能够更加清楚地认识到 查看详情

漫谈“计算思维”

漫谈“计算思维”自从2008年美国卡内基-梅隆大学(CMU)计算机系华裔教授周以真博士提出了“ComputingThinking(计算思维)”的概念以后,国内外很多人对此做了深入的研究与实践。我在此仅漫谈一下。1.“计算思维”应该从娃娃抓起... 查看详情

什么是图数据库?图数据库实践与创新浅析

近日,中国工程院院士,清华大学计算机科学与技术系教授郑纬民先生,在人民日报发表文章《把握图数据库自主创新机遇》,建议国内科研学者和工程人员,要在图数据库的理论研究与工程研发上坚持自主... 查看详情

云计算之openstack基础服务之一keystone服务最佳实践

...是一个项目,该项目支持所有类型的云环境的一个开源云计算平台,该项目的目的是为了实现简单,大规模可扩展性,以及丰富功能集,来自世界各地的云计算专家项目作出贡献。Openstack提供了一个基础架构即服务(Iaas)并通... 查看详情

tensorflow加载多个模型方法实践——graph与session(代码片段)

...f08;graph),然后在这个图上做运算,也就是用计算图来构建网络,用会话(Session)来具体执行网络。计算框架,是通过定义placeholder、Variable和OP等构 查看详情

12.pgl图学习之项目实践(unimp算法实现论文节点分类新冠疫苗项目实战,助力疫情)[系列九](代码片段)

原项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5100049?contributionType=11.图学习技术与应用图是一个复杂世界的通用语言,社交网络中人与人之间的连接、蛋白质分子、推荐系统中用户与物品之间的连接等等,都... 查看详情

iot项目管理:做好敏捷管理,从敏捷看板开始

随着移动互联网、软件即服务(SaaS)和基于云计算的快速发展,你需要加快你的产品开发周期,将重点工作放在定义核心功能集的前端。你可以从敏捷软件开发思想中借鉴一些最佳实践,并将这些实践应用于团队管理中。敏捷... 查看详情

实践作业3(2017-12-4)

今日任务:  今天分配了任务:    思维导图如下今日截图:    查看详情