作者:林夕

本文长度为2900字,建议阅读9分钟

本文为大家介绍图网络的基本概念、网络的应用以及图的结构。

标签:机器学习

目录

一、Why Networks

二、网络的应用

    2.1 应用领域

三、图的结构

    3.1 网络表示的选择

    3.2 点的度(Degree)

    3.3 图的表示方式

        邻接矩阵(Adjacency Matrix)

        边列表(Edge list)

        邻接列表(Adjacency list)

    3.4 图的连通性

参考资料

最近我们小组开始整理CS224W机器学习图网络的一些笔记,这是第一课对应的PPT。

课程相关PPT链接:

http://web.stanford.edu/class/cs224w/slides/01-intro.pdf

一、Why Networks

第一部分简单介绍下关于图网络的一些基本定义,应用和意义。

网络的定义:网络是描述一系列交互实体的复杂系统的一种通用语言。

网络(Network)和图(Graph)的一些区别:

  • 网络通常指真实的系统,eg.互联网、社交网络、信息网络、代谢网络、常用的表达有网络、节点、关系等;

  • 图是网络的数学表达方式,比如互联网图谱、社交图谱、知识图谱、场景图、分子图(分子预测模型)。常用表达有图、顶点、边等词;

  • 网络的概念比图的概念总体来看会大一点,但是总的来说network和graph区别也是比较模糊的,在实际中,这点区别也不会刻意强调,大家大致理解一下也就可以。

常见的网络比如有社会网络,通信网络,基因/蛋白质的互动网络,人脑神经元的连接网络。

现在学习图网络有什么意义呢。首先网络是一种描述复杂数据的通用语言,可以应用在众多领域,比如计算机,社会科学,物理学,经济学,生物都会涉及到对网络数据分析。其次网络数据关系能反应非欧式空间的数据关系,更能反应数据潜在的联系。另一方面,研究图网络将会对这些领域产生很大的影响

接下来看网络的一些实际应用。

二、网络的应用

网络分析方法角度来看,网络的应用可以分为以下几类:

  • 节点分类(Node classification):预测一个给定节点的类型;

  • 链路预测(Link prediction):预测两个节点是否是关联;

  • 社区发现(Community detection):识别密集的节点簇;

  • 网络相似度分析(Network similarity):节点或者网络相似度的测量。

2.1 应用领域

社交网络:研究人员从Facebook的数据中发现,人之间的平均距离实际是3.74。提出了新的4度社交网络。除此之外可以利用图聚类算法,识别社交圈。

基础建设(Infrastructure):通过网络分析可以识别基建网络中哪里出了问题。比如电力系统中,可以通过图网络分析哪些点受影响比较严重。

知识图谱:知识图谱是异构图很好的例子,图的每一个结点具有不同的含义。可以对给定领域的知识进行编码。

推荐系统:预测一个用户的偏好,可以抽象为在一个二部图中预测边是否存在。涉及到的算法有Embedding Node, Graph-based algorithm recommend system。

生物化学应用:最近几年,使用图卷积网络(GNN)来预测药物的作用,相比点云技术(point-cloud based)已经获得了巨大的进展。预测药物相互组合的作用可以通过异构图来进行建模。

三、图的结构

这部分主要介绍图的结构以及图的一些表示方式和性质,以及如何选择适当的网络表示方式。

了解图的结构是图的分析的前提,一个网络是由一系列用边连接的实体构成(objects)。网络中的基本元素包括实体、关系和系统。

  • 实体(objects):节点(nodes)或顶点(vertex)N;

  • 关系(interaction):连接(links)或边(edges)E;

  • 系统(system):网络(network)或者图(graph)G(N,E)。

定义一个网络第一步就是选择表示实体,这个会决定研究的结果是否有意义,所以选择一个适当的网络表示方式非常重要。

  • 比如当研究和工作有关系的人,可以构建一个职业网络;

  • 当研究和性别有关系的人,可以构建一个性别网络;

  • 当研究论文和引用的关系时,可以构建一个论文引用网络。

然后我们来看下如何定义一个网络。首先要知道如何构建一个图,构建一个图的两个关键是弄明白是什么,边是什么。对于一个给定问题能否选择一个合适的网络决定了能否成功使用网络。有时候表示是唯一的、明确的,有时候表示是不唯一的,连边的方式将会决定研究的问题的本质。

3.1 网络表示的选择

图网络存在多种表示方式,根据边的连接是否有方向,可以分为有向图和无向图,根据边是否有权重可以分为有权图和无权图。除此之外,还有有环图,多边图,完全图,二部图等多种形式。

有向图 Vs 无向图:

  • 无向图:边没有方向,例如,社交网络的关系;

  • 有向图:边有方向,例如,打电话,Twitter的Follow。

完全图(complete graph):

  • 无向图的最大边数:

  • 当一个无向图中每个节点都有最大的边数的图叫完全图

  • 平均度是 N-1;

二部图(Bipartite Graph):

二部图是一种可以将节点分成两个子集U和V(U和V是互相独立的集合),如果对于U集合中每个节点都有V的节点与之对应或者U中每个节点都有U的节点与之对应。这种图描述了两类对象之间的交互关系。以下几种关系可以构造二部图。

  • 作者和文章;

  • 演员和电影;

  • 用户和电影;

  • 菜谱和菜品之间的关系等。

无权图(unweighted):边没有权重,有边权重都是1,否则是0;

无权图(weighted):边上有权重,赋权值;

有环图(self-loops):某些点上有环;

多边图(Multi-graph):有的两点之间存在多条边;

3.2 点的度(Degree

点的度是网络的一个重要属性。无向图和有向图点的度有所不同,需要分开来考虑。

无向图:

  • 点的度 :和点相连的边数;

  • 平均度:每个点的度取平均。

有向图:

我们在有向图中定义了出度(in-degree) 和 入度(out-degree)。

  • :进入结点 i 的边数;

  • :离开结点 i 的边数;

  • :出入点的边数,

  • 平均度:

  • 出入度关系:

3.3 图的表示方式

常见的图的表示方式有三种,邻接矩阵,边列表和邻接表。邻接矩阵最常用。

邻接矩阵(Adjacency Matrix):

定义:如果点之间有边,矩阵对应位置为1,假设邻接矩阵即代表i和j有边相连,无向图的邻接矩阵是一个对称矩阵。如果是有向图的话,点i和点j之间存在有向边,则为1,则为0。接下来看一个例子,如何构建邻接矩阵。

左边无向图,对应的邻接矩阵为:

右边有向图,对应的邻接矩阵为:

邻接矩阵具有以下性质:

  • 无向图:

边数:

  • 有向图:

大部分真实世界的网络是稀疏的(),结果就是邻接矩阵被大量的0填充,所以邻接矩阵多是稀疏矩阵。

边列表(Edge list):

将图表示为一系列边的集合。

例如上图可以表示为:

(2,3)(2,4)(3,2)(3,4)(4,5)(5,2)(5,1)

邻接列表(Adjacency list):

当网络很大,并且很稀疏的时候,这样表示非常方便,通过这种方式能迅速获取到一个点邻接点。依然是上图,邻接列表可以表示为:

  • 1:

  • 2:3,4

  • 3:2,4

  • 4:5

  • 5:1,2

3.4 图的连通性

无向图的连通性:如果一个无向图的任何两个顶点(vertices)之间都有路径相连,那么认为这个图是连通的。反之,如果由两个或者更多的连通图构成则是非连通图。桥边(Bridge edge)是指删除以后能使图变成非连通图的边。在邻接矩阵中,非连通图,非0的部分被限制在块对角矩阵内,其他元素是0。

有向图的连通性:如果一个有向图的任意两个点存在路径,包括反向的,则认为是强连通的。不考虑边的方向,任意两个点存在路径则认为是弱连通的。另外,我们定义强连通组件(Strongly connectedcomponents-SCCs),它是指图的子图,并且是强连通的。

参考资料

官网:

http://web.stanford.edu/class/cs224w/

资料整理:

http://snap.stanford.edu/class/cs224w-2018/

bilibili搬运:

https://www.bilibili.com/video/BV1Vg4y1z7Nf?p=1

中文讲解

https://www.bilibili.com/video/av94230023/?spm_id_from=333.788.b_636f6d6d656e74.48

CS224W-Notes:

https://snap-stanford.github.io/cs224w-notes/

CS22W-Jingbo:

https://jingboyang.github.io/cs224w_notes.html

HomeWork-Answer1 Answer2:

https://github.com/zhjwy9343/CS224W

【斯坦福CS224W 图与机器学习(1-2)】:图模型基本介绍

https://zhuanlan.zhihu.com/p/138292637

编辑:黄继彦

校对:林亦霖

作者简介

林夕,电子科技大学硕士,主要研究方向:推荐系统、自然语言处理和金融风控。希望能将算法应用在更多的行业中。

数据派研究部介绍

数据派研究部成立于2017年初,以兴趣为核心划分多个组别,各组既遵循研究部整体的知识分享实践项目规划,又各具特色:

算法模型组:积极组队参加kaggle等比赛,原创手把手教系列文章;

调研分析组:通过专访等方式调研大数据的应用,探索数据产品之美;

系统平台组:追踪大数据&人工智能系统平台技术前沿,对话专家;

自然语言处理组:重于实践,积极参加比赛及策划各类文本分析项目;

制造业大数据组:秉工业强国之梦,产学研政结合,挖掘数据价值;

数据可视化组:将信息与艺术融合,探索数据之美,学用可视化讲故事;

网络爬虫组:爬取网络信息,配合其他各组开发创意项目。

点击文末“阅读原文”,报名数据派研究部志愿者,总有一组适合你~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派THUID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”加入组织~

原创 | 斯坦福Machine Learning with Graphs 学习笔记(第一讲)相关推荐

  1. 原创 | 斯坦福Machine Learning with Graphs 学习笔记(第二讲)

    作者:于媛,十三鸣 本文长度为3300字,建议阅读10+分钟 本文为大家介绍常用的网络属性和经典的网络模型. 标签:机器学习 [ 导读 ]在研究网络的时候,我们往往需要从结构层面对网络进行分析,网络属 ...

  2. 惯性导航系统学习笔记——第一讲

    惯性导航系统学习笔记 第一讲 惯性导航系统概述 一.惯性导航基本概念 二.惯性导航基本原理 三.惯性导航应用与发展 四.小结 第一讲 惯性导航系统概述 本文为学习朱家海教授<惯性导航系统> ...

  3. Apollo星火计划学习笔记——第一讲 使用Apollo学习自动驾驶

    引言 如何学习自动驾驶? 自动驾驶是集车辆.计算机.电子电气.人工智能.通信等多学科应用为一体的的复杂系统.针对自身专业背景结合自动驾驶发展进行学习: 自动驾驶是通过智能系统来驾驶汽车从而取代了驾驶员 ...

  4. 决策树(chap3)Machine Learning In Action学习笔记

    优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据. 缺点:可能会产生过度匹配问题. 适用数据类型:数值型(必须离散化)和标称型. 决策树创建分支的伪代码函数crea ...

  5. 麻省理工公开课《算法导论》学习笔记:第一讲

    主题:简介课程,渐近概念的大局观,插入排序和归并排序,递归式函数时间分析(递归树方法) 教材:<算法导论> 收获:很感动地看到算法分析那个log(n)是为什么出现了,更深层还要听第二讲,若 ...

  6. 集体智慧编程学习笔记——第一讲

    1. 用户相似度评价 (1)欧几里德距离 (2)皮尔逊相关度评价 (3)jaccard 系数 (4)曼哈顿距离算法 转载于:https://www.cnblogs.com/gylhaut/p/9377 ...

  7. 视觉SLAM十四讲学习笔记-第一讲

    第一讲:预备知识 SLAM介绍 SLAM 是 Simultaneous Localization and Mapping 的缩写,中文译作"同时定位与地图构建".它是指搭载特定传感 ...

  8. 离散数学学习笔记——第一讲——集合论基础(1.5可数集合与不可数集合)

    1. 无限生于有限,量变引起质变 2. 自然数集的定义1--皮亚诺公理 3. 自然数集的定义2--冯·诺伊曼的自然数定义 4. 集合大小的比较 5. 集合的等势 6. 可数集合 7. 从有限到无限,不 ...

  9. 离散数学学习笔记——第一讲——集合论基础(1.4集合的运算定律)

    1. 集合运算的基本等式(集合的运算定律) 包括:幂等律.交换律.结合律.同一律.零律.分配律.吸收律.矛盾律.排中律.双重否定律.德摩根律 2. 使用文氏图表示集合的运算(比较形象) 3. 集合相等 ...

最新文章

  1. native react ssh_React Native踩坑笔记(持续更新中...)
  2. android分享到新浪微博客户端吗,Android调用手机新浪微博客户端分享
  3. aix 5.3 安装oracle 10g r2,AIX 5.3 安装 Oracle 10g R2(64)
  4. java 无类名实现接口_为什么很多人写 Java/Android 时,选择让同一个类实现多个接口,而不是用多个内部匿名类?...
  5. 1045 快速排序 (25 分)
  6. oracle服务器不识别tc服务,记一次ORACLE无法启动登陆事故
  7. pythonturtle绘图代码 四叶草_python绘图四叶草
  8. 【渝粤教育】21秋期末考试网络金融10248k2
  9. webui-popover 一个轻量级的jquery弹出层插件
  10. Mac text edit pdf reader
  11. 研发中,问题以界面开发人员为解决负责人
  12. 350.两个数组的交集II
  13. Mac 文本对比工具(比较两份文件差异)
  14. 鸿蒙系统视频美颜,BeautyCam美颜相机
  15. 达内CEO受邀出席搜狐“2011职业教育高峰论坛”
  16. ASP.NET 安全认证(二)
  17. linux suse11 sp3安装,SUSE Linux Enterprise Server 11 SP3安装教程详解
  18. 使用WIFI通讯,手机秒变单片机大屏显示器
  19. matlab数据转换为tecplot格式[ASCII码格式下的plt文件]
  20. java and运算_JAVA中逻辑运算符“|”和“”与“||”和“”的用法

热门文章

  1. linux下如何更新镜像源(ubuntu 10.04 为例),Ubuntu 10.04 更新源补充
  2. eci转换ci公式_原文提供的置信区间不是95%,如何转换?
  3. biopython有什么用_BioPython学习笔记
  4. jquery获取主机地址和端口
  5. 数人云PaaS Innovation 2017,重新定义PaaS进化
  6. Directive全面分析
  7. Java记录 -74- 自定义泛型
  8. Spring学习(23)--- AOP之Introductions应用
  9. tomcat通过conf-Catalina-localhost目录发布项目详解
  10. Windump网络命令的简单用法