DeepWalk学习
DeepWalk
Background
使用机器学习的算法解决问题需要有大量的信息,但是现实世界中的网络中的信息往往比较少,这就导致传统机器学习算法不能在网络中广泛使用。
(Ps: 传统机器学习分类问题是学习一种假设,将样本的属性映射到样本的类标签,但是现实网络中的结点属性信息往往比较少,所以传统机器学习方法不适用与网络。)
Introduce
deepWalk是网络表征学习的比较基本的算法,用于学习网络中顶点的向量表示(即学习图的结构特征即属性,并且属性个数为向量的维数),使得能够应用传统机器学习算法解决相关的问题。
Algorithm Theory
input:邻接表
每行代表一个顶点的所有边
output:
第一行为结点个数和向量维数,后面每行为一个结点的向量表示,第一列为nodeId**
innovation:
借助语言建模word2vec中的一个模型,skip-gram来学习结点的向量表示。将网络中的结点模拟为语言模型中的单词,而结点的序列(可由随机游走得到)模拟为语言中的句子,作为skip-gram的输入。
feasibility:
以上假设的可行性证明,当图中结点的度遵循幂律分布(通俗讲即度数大的节点比较少,度数小的节点比较多)时,短随机游走中顶点出现的频率也将遵循幂律分布(即出现频率低的结点多),又因为自然语言中单词出现的频率遵循类似的分布,因此以上假设可行。(Ps: 为证明有效性,作者针对YouTube的社交网络与Wikipedia的文章进行了研究,比较了在短的随机游走中节点出现的频度与文章中单词的频度进行了比较,可以得出二者基本上类似。(幂率分布))
process:
随机游走+skip-gram 语言模型
通过随机游走得到短的结点序列,通过skip-gram更新结点向量表示。Random Walk
Random Walk从截断的随机游走序列中得到网络的局部信息,并以此来学习结点的向量表示。
deepwalk中的实现是完全随机的,根据Random Walk的不同,后面又衍生出了node2vec算法,解决了deepwalk定义的结点相似度不能很好反映原网络结构的问题。
skip-gram 语言模型
skip-gram 是使用单词来预测上下文的一个模型,通过最大化窗口内单词之间的共现概率来学习向量表示,在这里扩展之后便是使用结点来预测上下文,并且不考虑句子中结点出现的顺序,具有相同上下文的结点的表示相似。(Ps:两个node同时出现在一个序列中的频率越高,两个node的相似度越高。)
结点相似性度量: 上下文的相似程度(LINE中的二阶相似度)
共现概率根据独立性假设可以转化为各条件概率之积即
对序列中的每个顶点,计算条件概率,即该结点出现的情况下序列中其他结点出现的概率的log值并借助随机梯度下降算法更新该结点的向量表示。
Φ(vj)为当前结点的向量表示。Hierarchical Softmax用于分解并加快计算第三行的条件概率。
Advantage
- 并行性:同时进行多个随机游走。
- 适应性:当图变化后,不需要全局重新计算,可迭代更新,因此可以为大规模、稀疏的图创建有意义的表示。
Experiment
本次实验在人工网络上进行(平均度为20,最大度为50,一个社区小包含结点数minc为10,最大maxc为100),deepwalk参数为默认值,训练向量维数为64。分别在mu(混合度)为0.1,0.2,0.3,0.4,0.5,0.6,并且节点规模N为2k,4k,6k,8k,10k上进行。使用sklearn库的K-means进行聚类,K进行人工调整在实际值,重复每个实验10次并且计算每个实验的平均NMI值。
NMI | N=2k | N=4k | N=6k | N=8k | N=10k |
---|---|---|---|---|---|
u=0.1 | 0.955741 | 0.965896 | 0.973577 | 0.973319 | 0.969941 |
u=0.2 | 0.958258 | 0.958192 | 0.960152 | 0.955094 | 0.957447 |
u=0.3 | 0.955079 | 0.941854 | 0.933403 | 0.929904 | 0.932717 |
u=0.4 | 0.953002 | 0.924042 | 0.908161 | 0.916834 | 0.913081 |
u=0.5 | 0.949694 | 0.895752 | 0.876676 | 0.878265 | 0.876310 |
u=0.6 | 0.897372 | 0.872618 | 0.852643 | 0.838807 | 0.835484 |
存在问题:
聚类参数k的确定问题对实验的影响很大。
本实验未探究deepwalk参数即训练的向量维数,随机游走长度,迭代次数,skip-gram窗口大小对聚类精度的影响。
DeepWalk学习的更多相关文章
- 网络表示学习Network Representation Learning/Embedding
网络表示学习相关资料 网络表示学习(network representation learning,NRL),也被称为图嵌入方法(graph embedding method,GEM)是这两年兴起的工 ...
- LINE学习
LINE Abstract LINE 是一种将大规模网络结点表征成低维向量的算法,可很方便用于网络可视化,结点分类,链路预测,推荐. source code Advantage LINE相比于其他算法 ...
- 关于embedding-深度学习基本操作 【Word2vec, Item2vec,graph embedding】
https://zhuanlan.zhihu.com/p/26306795 https://arxiv.org/pdf/1411.2738.pdf https://zhuanlan.zhihu.com ...
- 使用DeepWalk从图中提取特征
目录 数据的图示 不同类型的基于图的特征 节点属性 局部结构特征 节点嵌入 DeepWalk简介 在Python中实施DeepWalk以查找相似的Wikipedia页面 数据的图示 当你想到" ...
- DeepWalk论文精读:(1)解决问题&相关工作
模块1 1. 研究背景 随着互联网的发展,社交网络逐渐复杂化.多元化.在一个社交网络中,充斥着不同类型的用户,用户间产生各式各样的互动联系,形成大小不一的社群.为了对社交网络进行研究分析,需要将网络中 ...
- DeepWalk论文精读:(4)总结及不足
模块4 1 研究背景 随着互联网的发展,社交网络逐渐复杂化.多元化.在一个社交网络中,充斥着不同类型的用户,用户间产生各式各样的互动联系,形成大小不一的社群.为了对社交网络进行研究分析,需要将网络中的 ...
- [阿里DIN]从论文源码学习 之 embedding_lookup
[阿里DIN]从论文源码学习 之 embedding_lookup 目录 [阿里DIN]从论文源码学习 之 embedding_lookup 0x00 摘要 0x01 DIN代码 1.1 Embedd ...
- 论文解读(DeepWalk)《DeepWalk: Online Learning of Social Representations》
一.基本信息 论文题目:<DeepWalk: Online Learning of Social Representations>发表时间: KDD 2014论文作者: Bryan P ...
- 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):生物信息学中的图表示学习:趋势、方法和应用
4.(2021.6.24)Briefings-生物信息学中的图表示学习:趋势.方法和应用 论文标题: Graph representation learning in bioinformatics: ...
随机推荐
- UML,构件图与部署图
一.构件图概述 1.概念 用来显示一组构件之间的组织及其依赖关系 2.基本元素 (1)构件:定义了良好接口的物理实现单元. ● 配置构件:形成可执行文件的基础,如:动态链接库(DLL).ActiveX ...
- Springmvx拦截html出现406解决以及Server Tomcat v8.0 Server at localhost failed to start 问题解决方法
问题是这样的:环境是SSM框架,在配置好的框架里想请求一个html,结果406了,406就是HTTP协议状态码的一种,表示无法使用请求的特性来响应请求的网页.一般指客户端浏览器不接受所请求页面的MIM ...
- SpringBoot整合Netty
总体来说只需要三个步骤,下面详细介绍 第一步 创建SpringBoot工程snetty 第二步 创建子模块也就是ModuleClient,Server,均为SpringBoot工程 第三步 将服务器端 ...
- Django中连接redis
1. 安装 pip install django-redis 2. settings中配置 CACHES = { "default": { "BACKEND": ...
- ss 重新设置 端口的方法 记录
1. 选择 ssh 进行远程登入: ssh root@服务器ip -p 端口, 事例如:ssh root@176.122.134.96 -p 28202 2. ls 展示 当前目录下的文件,看到有 s ...
- Boto Config File
Boto是AWS SDK for Python,可以通过pip安装,也可以下载源码直接安装.直接安装挺方便的. 安装后参照AWS给出的Sample Project,连接S3,遍历一下buckets,获 ...
- Android 状态栏开发
又好久没写了...还是记个笔记吧.这次关于Android手机App状态栏的各种处理做一个笔记. 场景一:需要做全屏,不看到手机状态栏信息(手机电量,信号等) 这种需求一般用的比较多的地方是App的Sp ...
- 学习MVC之租房网站(十二)-缓存和静态页面
在上一篇<学习MVC之租房网站(十一)-定时任务和云存储>学习了Quartz的使用.发邮件,并将通过UEditor上传的图片保存到云存储.在项目的最后,再学习优化网站性能的一些技术:缓存和 ...
- JavaScript数字转字符串,字符串转数字
//--------------------字符串转数字--------------------------- var s = "234"; //1.纯数字转换 //1 字符串在运 ...
- Vue入门(二)之数据绑定
Vue官网: https://cn.vuejs.org/v2/guide/forms.html#基础用法 [入门系列] (一) http://www.cnblogs.com/gdsblog/p/78 ...