node2vec是做什么的,

  node2vec是做什么的,

  看到一个很有意思的算法,在腾讯朋友圈的lookalike一文中也有提到,于是捡了个热点学了起来。论文也送KDD2016。。

  I .主要论文:节点2 VEC:网络的可扩展特征学习这一部分引自

  A.微博中的jdddr:【每日论文阅读】节点二VEC:面向网络的可扩展特征学习

  b简书:node2vec:网络的可扩展特征学习

  本文的特征提取方法类似于聚类分析的无监督方法,本质上是利用相邻节点之间的联系。文中提到,网络中的节点一般有两个相似性度量:1。内容相似性和2。结构相似。其中,内容相似度主要是相邻节点之间的相似度,而结构相似点不一定是相邻的,也可能是相距很远的,这也是为什么本文要结合BFS和DFS来选择相邻节点的原因。

  本文的主要思想是用SkipGram方法提取网络的表示。那么,自然,按照SkipGram的思路,最重要的是定义这个上下文,或者说邻域。从忧郁小鸭子的角度来看,这个邻域当然是当前词周围的词。这个定义很自然。但是对于图形或者网络就没那么容易了。

  阐述了深度优先搜索或广度优先搜索通常用于对节点周围的节点进行采样的问题。简单来说,BFS更容易有微观视野,而DFS更容易有宏观视野,两者都有代表性的问题。

  这篇文章的核心思想是使用随机漫步,而不是DFS或BFS。本文定义了一个二阶随机游走,它有两个参数来控制重复通过某个节点的概率和控制所谓的向内和向外。简而言之,整个随机漫步的目的是在DFS和BFS之间取得平衡。

  虽然本文提出了提取节点特征的算法,但是也可以很容易地从节点特征导出边缘特征。

  总的感觉是,坚持用SkipGram或者WordVec的思路在网络上做,很牵强。因为这个邻域的概念,在图上并没有那么直观的定义,所以所有类似的工作都显得很尴尬。当然,这篇文章是一个很好的启发。。

  第二,python实现了github URL

  案例:

  运行节点2 vecon的空手道俱乐部网络,从项目主目录执行以下命令:

  python src/main.py -输入graph/空手道. edgelist -输出emb/空手道. emdOptions

  您可以使用以下命令查看node2vec的其他可用选项:

  python src/main . py-helpInput

  支持的输入格式是边列表:

  node 1 _ id _ int node 2 _ id _ int weight _ float,可选默认情况下,该图被假定为无向和未加权的。这些选项可以通过设置适当的标志来更改。

  Output

  对于具有n个顶点的图,输出文件有n-1行。第一行具有以下格式:

  接下来的n行如下所示:

  节点id dim1 dim2.dimd其中dim1,…,dimd是node2vec学习到的d维表示。。

  三、腾讯应用到node2vec微信微信官方账号infoQ:当机器学习遇到复杂网络:解析微信朋友圈的Lookalike算法

  横轴是与广告互动的好友数量,纵轴是用户对广告的关注率(包括观看、喜欢或评论)。我们发现这个关注率会随着好友数量的增加而增加。这个数据拐点差不多是3到5个好友。

  会重点挖掘这两个价值,即社会同质性和社会影响力。

  事实上,社交网络中的节点也是如此。我们经常会有一些大的节点,他会有很多朋友,而有些人不会有那么多朋友。所以其实社交网络中一个节点的分布也是幂律分布。如何将Wodrd2Vec迁移到node2vec?这时候就会生成一个节点序列,对应自然语言处理的一句话。图结构中的节点相当于NLP的一个单词。

  因此,使用搜索方法来生成图网络上的节点序列。这个节点序列可以对应于自然语言中的一个句子。后来,我们通过Wodrd2Vec的框架将节点嵌入到一个向量中。所以在做网络嵌入的时候,这种生成节点序列的搜索策略非常重要。最简单的方法是随机游走,一方面生成节点序列,另一方面也对图进行采样,减少计算量。

  比如在我们的一个社交网络里,我的同学会组成一个社团。如果我们把这个P设计成往回走,那么走到我的组就更容易了。p越大,越均匀。当Q较大时,实际上可以反映出这种结构的相似性,不同的节点有不同的作用。例如,节点F和节点E是这两个社区之间的桥接点。当Q较大时,反映网络结构的相似性。这个时候我们该如何选择P和Q呢?这个可以根据实际任务半监督学习。

  先给你看node2vec的结果,先给你看这个算法的输出。这是一个简单的图表。作为嵌入的结果,1和2的节点向量是相同的。它将是一个重叠的向量,3、4、5和6也是重合的节点。它表达了什么?为什么1和2完全重叠?其实1和2的网络环境是完全一样的。这种嵌入结果的表现就是节点的社会网络环境,也就是我们所说的拓扑特征。

  对于社会相似度的学习框架,可以看下图。我们建立一个回归模型。我们现在做的是SVR模型。输入好友网络、交流网络、文章转发阅读网络等。并嵌入得到特征向量表达式。通过SVR模型,学习这些特征与广告相似度之间的函数关系。这个函数计算好友的相似度,可以给好友排序。

  我们来看看算法的效果。评价我们算法的效果,最直接的就是我有多个算法,广告主需要100万用户。我所有的算法给100万用户,然后看一下这100万用户的点击量。我们称之为提升价值。和其他算法比较一下,看它的效果有没有提高。与直接二元分类模型相比,我们的算法有2 -3倍的提升。

  延伸一:网络与词向量来自:网络与几何的纠缠快乐风景br最近,深度学习成为科学界的新宠。人们把大量数据扔进神经网络,希望它能自己学习数据中包含的模式。但目前深度学习处理的数据大多局限于图像和忧郁的小鸭子,而不包括互联网。这是因为网络的本质在于节点之间的连接信息,这些信息很难被结构化为标准数据。我该怎么办?

  答案在太空。只要把网络嵌入到一个几何空间中,就可以把每个节点的坐标作为那个节点的特征,然后放入神经网络进行学习和训练。那么,对于一个一般的网络,我们如何计算每个节点的空间坐标呢?

  答案就在DeepWalk算法中。首先,它在网络上释放大量的随机行走粒子,这些粒子将在给定的时间内走出一系列节点。我们不妨把节点想象成单词,那么它们生成的序列就构成了句子,我们就可以得到一种节点由序列组成的“语言”。接下来,我们可以应用强大的Word2Vec算法来计算每个节点“字”的矢量表示,也就是空间坐标。

  这种节点嵌入算法可以很好的反映节点之间的连接信息,或者我们可以把DeepWalk算法得到的节点坐标看作是每个节点的连接信息的编码。那些具有相似连接结构的节点将在空间上彼此靠近。

  通过这种从结构到空间的转换,我们可以使用常见的聚类和分类算法来处理复杂的网络。

  扩展2:NE(网络嵌入)论文概述来源:http://blog.csdn.net/dark_scope/article/details/74279582

  自从word2vec诞生以来,似乎一切都在被嵌入。今天我们要重点介绍的领域是网络嵌入,它是基于一个图将节点或边投影到一个低维向量空间,然后用于后续的机器学习或数据挖掘任务。这对于复杂网络来说是一个比较新的尝试,也取得了一些成果。

  本文大致梳理了近年来比较流行的一些方法和论文。论文主要来自thunlp/NRLPapers的列表,也夹杂了一些其他的论文。大概看过一遍,简单总结了一下。希望对你有帮助。如有不确切之处,请指正。

  抛开一些传统的流形学习方法,下面大概就是这个大纲组织的(区分不严格):

  在此输入图片的描述。

  深度行走(在线学习社交再现。)深度行走是KDD 2014的一篇文章。当时word2vec在《忧郁的小鸭子》中的成功应用,掀起了一股向量化的浪潮。word2vec根据词的共现关系将词映射到低维向量,保留了语料库中丰富的信息。DeepWalk算法的思路其实很简单。用随机游走从图的一个节点生成类似忧郁小鸭子的序列数据,然后用节点id作为“单词”,用skip gram训练“单词向量”。

  想法虽然简单,但背后还是有一定道理的。后来的一些著作证明,这实际上等价于特殊的矩阵分解。DeepWalk本身也激发了一系列后续工作。

  node2vec(网络的可扩展特征学习)

  node2vec在DW的基础上,定义了一个偏置随机游走的策略生成序列,仍然采用skip gram进行训练。

  本文对BFS和DFS进行了分析,保留的网络结构信息是不同的。

  在DeepWalk中,根据边的权重进行随机行走,而node2vec增加了一个权重调整参数: T为上一个节点,V为最新节点,X为候选下一个节点。D(t,x)是从t到候选节点的最小跳数。

  通过设置不同的P和Q参数,可以达到保留不同信息的目的。当P和Q都为1.0时,相当于DeepWalk。

  MMDW(网络表示的最大间隔深度行走判别学习)DW本身是无监督的。如果能够引入标签数据,生成的向量对分类任务的效果会更好。

  如前所述,证明DW实际上是一个特殊矩阵M的分解,

  本文将DeepWalk与Max-Margin(SVM)结合起来,根据损失函数由这两部分组成:

  1.训练时我们分别优化,固定X和Y优化W和,其实就是多类的SVM。

  2.当W和固定优化X和Y时,就有点特殊了,计算了一个有偏梯度,因为损失函数中有X和W的组合。

  这样在训练中同时优化了区分度和表征度,取得了很好的效果。

  Tadw(具有丰富文本信息的网络表征学习。)文章有一个简单的证明,DeepWark等价于M的矩阵分解,但实际中旺旺在某些节点上会有忧郁的小鸭子信息。所以在矩阵分解的框架下,直接加入忧郁的小鸭子作为子矩阵,会让学习到的向量包含更丰富的信息。

  忧郁小鸭矩阵是TFIDF矩阵SVD降维的结果。

  扩展三:基于word2vec和doc2vec(1)用户表示方法的用户表示方法本文采用了五种用户表示方法,即一热表示法、基于用户抑郁的分布式表示法、基于用户关系网络的分布式表示法、半监督网络分布式表示法和联合表示法。

  本节使用word2vec和doc2vec通过用户的忧郁小鸭数据来学习用户的分布表示,使用logistic回归分类器对用户的不同属性进行分类。

  基于word2vec(生成向量长度为100,窗口大小为5,模型为CBOW模型,算法为分层Softmax模型)的用户分布式表示实验结果如表2所示。

  使用doc2vec(生成的向量长度为100,窗口大小为5,模型为CBOW模型,算法为分层Softmax模型)是错误的。)生成的用户分布式表示的实验结果如表3所示。

  从实验结果的对比可以看出,简单的词向量累加得到的用户分布表征并不能有效提高实验的效果,相反所有参数都有所下降。另一方面,虽然使用doc2vec工具直接获得的用户分布式表示仍低于word bag模型,但高于word2vec的累积表示。

  (2)用户的关系网络我们使用Deepwalk和LINE两个工具,通过用户的关系网络数据来学习用户的分布式表示,使用logistic回归分类器对用户的不同属性进行分类。

  来源:Searle原创新浪微博中用户表征方式对用户属性分类性能影响的研究

  作者:哈工大SCIR大方的滑板,无辜的黑裤子,无私的鸵鸟。

  扩展4: Flownetwork:面向流媒体网络的开源Python包。该软件包的主要功能如下:https://github.com/chengjun/flownetwork

  来源:聚智仙子,《Flownetwork:流网络的开源Python包》

  南京大学的清洁电灯泡老师和芝加哥大学的kdzx博士开发了一个开源工具包Flownetwork,将所有常见的计算集成在一起。初学者可以直接调用这个包来完成关于明流网的各种计算。

  然后对注意力网络进行分析:

  首先,我们可以使用help语句来检查这个流网络的结构:

  help(fn.constructFlowNetwork)模块中关于函数constructFlowNetwork的帮助flow network . flow network:constructflow network(C)是一个二维数组,例如c=np.array ([[user1,item1],[user1,item2],[user2,item1],[user2,item3]])返回一个平衡的流网络在了解了这个网络的架构之后,我们就可以自己创建一个流网络了:

  Demo=fn . attention _ datagd=fn . constructflow network(demo)为了更好地理解这个流网络的结构,我们可以使用matplotlib来绘制这个demo的流网络:

  #绘制演示网络fig=plt.figure(figsize=(12,8),face color= white )POS={ 0:NP . array([0.2,0.8]),2: np.array([ 0.2,0.2]),1: np.array([ 0.4,0.6]),6: np.array([ 0.4,0.4]),4: np.array([ 0.7,0.8]),5: np.array([ 0.7

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • Vue项目启动,nodejs启动vue项目,如何启动一个Vue.js项目
  • pm2自动重启node项目,nodejs 部署,nodejs高大上的部署方式(PM2)
  • pm2管理nodejs,
  • npm切换淘宝镜像指令,node配置淘宝镜像
  • node实现爬虫的几种简易方式选择,node实现爬虫的几种简易方式选择,node实现爬虫的几种简易方式
  • node写爬虫,node实现爬虫的几种简易方式选择
  • nodemon怎么安装,nodemon app.js
  • nodemon怎么安装,nodemon app.js,node.js开发辅助工具nodemon安装与配置详解
  • nodejs __dirname,node环境变量
  • nodejs __dirname,node环境变量,node全局变量__dirname与__filename的区别
  • node.js配置环境变量,如何配置node环境
  • node.js配置环境变量,如何配置node环境,node安装及环境变量配置详细教程
  • node. js安装,Windows安装node
  • node. js安装,Windows安装node,Node.js安装详细步骤教程(Windows版)详解
  • node sass安装不上,安装sass一定安装nodesass吗
  • 留言与评论(共有 条评论)
       
    验证码: