精华内容
下载资源
问答
  • node2vec

    2021-05-11 14:05:46
    node2vec: Scalable Feature Learning for Networks》 《node2vec:大规模网络节点的表征学习》

    1. 学习任务

        《node2vec: Scalable Feature Learning for Networks》

    《node2vec:大规模网络节点的表征学习》Adiya Grover,Jure Leskovec 等; 单位:Stanford;  KDD 2016

    1.1 论文结构

    在这里插入图片描述

    1.2 研究背景

      图是一种描述复杂数据的模型(任意的节点数量、复杂的关系) vs 图片(CNN)、文本结构(word2vec)
    在这里插入图片描述
    snap数据集 - 链接 是Jure等人不间断收集的网络数据集,极大地 推动社交网络领域的发展

      研究涵盖:节点分类(node classification)、边预测(link prediction)、社群检测(community detection)、网络营销(viral marketing)、网络相似度(network similarity)

    2. node2vec 结构框架

    Network embedding 学习目标

    在这里插入图片描述

    • 给定图 G = (V, E),目标是去学习一个映射 f:uRdf: u \rightarrow \mathbb{R}^{d}

    论文核心:通过随机游走策略生成 NS(u)\mathcal{N}_{S}(u)

    2.1 优化目标

    node2vec 的优化目标 类似Skip-gram,给定顶点 uu,在低维空间中最大化其邻居NS(u)\mathcal{N}_{S}(u) 的对数似然函数
    maxfuVlogPr(NS(u)f(u))\max _{f} \sum_{u \in V} \log \operatorname{Pr}\left(\mathcal{N}_{S}(u) \mid f(u)\right)

      假设邻居节点NS(u)\mathcal{N}_{S}(u) 之间互不影响
    Pr(NS(u)f(u))=niNS(u)Pr(nif(u)) \operatorname{Pr} (N_{S}(u) \mid f(u))=\sum_{n_{i} \in N_{S}(u)} \operatorname{Pr}\left(n_{i} \mid f(u)\right) \quad\Rightarrow \quad
    logPr(NS(u)f(u))=niNS(u)logPr(f(ni)f(u))\log \operatorname{Pr} (N_{S}(u) \mid f(u))=\sum_{n_{i} \in N_{S}(u)} \log \operatorname{Pr}\left(f\left(n_{i}\right) \mid f(u)\right)

      通过softmax函数来建模条件概率 σ(z)j=ezjk=1Kezk for j=1,,K\sigma(\mathbf{z})_{j}=\frac{e^{z_{j}}}{\sum_{k=1}^{K} e^{z_{k}}} \quad \text { for } j=1, \ldots, K
    Pr(f(ni)f(u))=exp(f(ni)f(u))vVexp(f(v)f(u)) \operatorname{Pr}\left(f\left(n_{i}\right) \mid f(u)\right)=\frac{\exp \left(f\left(n_{i}\right) \cdot f(u)\right)}{\left.\sum_{v \in V} \exp (f(v) \cdot f(u)\right)}

      最后node2vec优化函数为:
    maxfuV[logZu+niNS(u)f(ni)f(u)] \max _{f} \sum_{u \in V}\left[-\log Z_{u}+\sum_{n_{i} \in N_{S}(u)} f\left(n_{i}\right) \cdot f(u)\right]

      优化函数中的常数对结果无影响,可省略。其中Zu=vVexp(f(u)f(v))Z_{u}=\sum_{v \in V} \exp (f(u) \cdot f(v))

    2.2 一阶相似性与二阶相似性

      文章中使用BFSDFS两种策略采样得到的邻居 NS(u)\mathcal{N}_{S}(u)

    在这里插入图片描述
    一阶相似性与二阶相似性描述-参考链接

    一阶相似性:在Node2Vec中也叫做 同质性(homophily)。一阶相似性捕捉的是图中实际存在的结构,比如两个节点由一条边相连,则这两个节点应该具有相似的表示。按照Node2Vec中的说法,高度互连且属于相似网络集群或社区的节点表示应该比较相近。一阶相似性往往可以通过对节点的DFS遍历得到。

    二阶相似性:在Node2Vec中也叫做 结构对等性(structural equivalence)。在网络中具有相似结构的节点表示应该相近,它并不强调两个节点是否在图中存在连接,即使两个节点离得很远,但由于结构上相似(连接的邻居节点相似),它们的表示也应该相似,所以二阶相似性可以发现不同的社区。二阶相似性可以通过对节点的BFS遍历得到。

    2.3 Random Walk

      传统的random walk不具备探索节点不同类型领域的能力,本文中认为网络同时具备 结构相似性[通过BFS]同质/社群相似性[通过DFS]

      传统的random walk:给定源点uu,采样一个长度为 ll 的随机游走序列,序列起始顶点为 c0=uc_0=ucic_i 的采样策略为:
    P(ci=xci1=v){πv,xZ, if (v,x)E0, else  P\left(c_{i}=x \mid c_{i-1}=v\right)\left\{\begin{array}{ll} \frac{\pi_{v, x}}{Z}, & \text { if }(v, x) \in E \\ 0, & \text { else } \end{array}\right.

    其中 πv,x\pi_{v, x}为非归一化的、从顶点 vv 转移到顶点 xx 的概率, ZZ 为归一化常数。

    2.4 Biased Random Walk - 2nd order

    在这里插入图片描述

    • dtxd_{tx}ttxx之间的最短路径,ppqq 控制了从源点V离开其邻居的快慢。

      图中T时刻处于V点,由T-1时刻从t位置转移过来。此时看上一时刻(T-1)处的t点到其他四个点(t,X1,X2,X3t, X_1,X_2,X_3)的距离,分别为 0,1,2,2;对应的概率分别为 1p,1,1q,1q\frac{1}{p},1,\frac{1}{q},\frac{1}{q}

    超参数的理解

    p值大:对应的α\alpha小,倾向不回溯,降低了2-hop的冗余度;p值小:倾向回溯,采样序列集中在起始点的周围。
    q > 1:则 α=1q<1\alpha=\frac{1}{q} < 1,转移到X1X_1概率大,BFS占主导;q < 1DFS占主导。

    2.5 alias sampling

    Darts, Dice, and Coins: Sampling from a Discrete Distribution-The Alias Method - 链接
    在这里插入图片描述
    具体理解可查看 Alias method:时间复杂度O(1)的离散采样方法 - 链接



    附录

    1. 图结构中 BFS、DFS

      定义一个无向图,如下图所示。参考链接 -CSDN-黄蜜桃-Python图的BFS与DFS

    # 定义图结构
    graph = {
        "A": ["B","C"],
        "B": ["A", "C", "D"],
        "C": ["A", "B", "D","E"],
        "D": ["B", "C", "E","F"],
        "E": ["C", "D"],
        "F": ["D"],
    }
    

    1.1 图的广度优先遍历 BFS

    # BFS: 使用queue队列, FIFO 先进先出
    def BFS(Graph, vertex):
        queue = []
        queue.append(vertex)  # 首节点添加
    
        seen = set()      # 集合中存储已访问过的节点
        seen.add(vertex)
    
        res = list()
    
        while queue:
            temp = queue.pop(0)   # 队首元素出队
            res.append(temp)
    
            adjnodes = Graph[temp]   # 获取邻接点; 不同的存储结构,得到邻接点的方式不一样
    
            for node in adjnodes:
                if node not in seen:
                    queue.append(node)
                    seen.add(node)
        return res
    

    1.2 图的深度优先遍历 DFS

    # DFS: 使用 stack 栈
    def DFS(Graph, vertex):
        stack = []
        stack.append(vertex)  # 添加首节点
    
        seen = set()
        seen.add(vertex)
    
        res = list()
        while stack:
            temp = stack.pop()  # 栈顶元素
            res.append(temp)
    
            adjnodes = Graph[temp]  # 获取邻接点;
    
            for node in adjnodes:
                if node not in seen:
                    stack.append(node)
                    seen.add(node)
        return res
    

    参考链接- 深度之眼- 图神经网络精讲班
    参考链接- 深度之眼Paper带读笔记GNN.01.Node2Vec

    展开全文
  • Node2Vec node2vec算法Aditya Grover,Jure Leskovec和Vid Kocijan的Python3实现。 安装 pip install node2vec 用法 import networkx as nx from node2vec import Node2Vec # Create a graph graph = nx . fast_...
  • node2vec 使用数据集cora的node2vec的示例
  • <p>I installnode2vec using pip install. However when I start the sample scripts from your example, it shows error: "from node2vec import Node2Vec ImportError: cannot import name 'Node2Vec'...
  • Node2Vec JAVA实现 参考 在图的遍历时,通过p和q两个参数,平衡深度优先(DFS)和广度优先(BFS)。 git: 存储图的结构czzGraph 1.1 图的存储,图的节点,图的边 1.2 图的输入(邻接表,邻接矩阵) 1.3 图的可视化...
  • node2vec原理by Zohar Komarovsky 由Zohar Komarovsky node2vec的工作原理-word2vec无法做到的 (How node2vec works — and what it can do that word2vec can’t) 如何以不同的方式考虑您的数据 (How to think ...

    node2vec原理

    by Zohar Komarovsky

    由Zohar Komarovsky

    node2vec的工作原理-word2vec无法做到的 (How node2vec works — and what it can do that word2vec can’t)

    如何以不同的方式考虑您的数据 (How to think about your data differently)

    In the last couple of years, deep learning (DL) has become the main enabler for applications in many domains such as vision, NLP, audio, clickstream data etc. Recently, researchers started to successfully apply deep learning methods to graph datasets in domains like social networks, recommender systems, and biology, where data is inherently structured in a graphical way.

    在过去的两年中,深度学习(DL)已成为视觉,NLP,音频,点击流数据等许多领域应用的主要推动力。最近,研究人员开始成功地将深度学习方法应用于诸如以下领域的图形数据集社交网络,推荐系统和生物学,其中数据以图形方式固有地结构化。

    So how do Graph Neural Networks work? Why do we need them?

    那么图神经网络如何工作? 我们为什么需要它们?

    深度学习的前提 (The Premise of Deep Learning)

    In machine learning tasks that involve graphical data, we usually want to describe each node in the graph in a way that allows us to feed it into some machine learning algorithm. Without DL, one would have to manually extract features, such as the number of neighbors a node has. But this is a laborious job.

    在涉及图形数据的机器学习任务中,我们通常希望以一种允许将其馈入某种机器学习算法的方式来描述图中的每个节点。 如果没有DL,则必须手动提取特征,例如节点具有的邻居数。 但这是一项艰巨的工作。

    This is where DL shines. It automatically exploits the structure of the graph in order to extract features for each node. These features are called embeddings.

    这就是DL的魅力所在。 它会自动利用图的结构以提取每个节点的特征。 这些功能称为嵌入。

    The interesting thing is, that even if you have absolutely no information about the nodes, you can still use DL to extract embeddings. The structure of the graph, that is — the connectivity patterns, hold viable information.

    有趣的是,即使您完全没有节点信息,您仍然可以使用DL提取嵌入。 图的结构(即连接模式)保存可行的信息。

    So how can we use the structure to extract information? Can the context of each node within the graph really help us?

    那么我们如何使用该结构来提取信息呢? 图中每个节点的上下文真的可以为我们提供帮助吗?

    从上下文中学习 (Learning from Context)

    One well-known algorithm that extracts information about entities using context alone is word2vec. The input to word2vec is a set of sentences, and the output is an embedding for each word. Similarly to the way text describes the context of each word via the words surrounding it, graphs describe the context of each node via neighbor nodes.

    word2vec是一种仅使用上下文提取有关实体的信息的著名算法。 word2vec的输入是一组句子,而输出是每个单词的嵌入。 类似于文本通过其周围的单词描述每个单词的上下文的方式,图形通过邻居节点描述每个节点的上下文。

    While in text words appear in linear order, in graphs it’s not the case. There’s no natural order between neighbor nodes. So we can’t use word2vec… Or can we?

    尽管文字在文本中以线性顺序出现,但在图形中却并非如此。 邻居节点之间没有自然顺序。 所以我们不能使用word2vec…还是可以?

    像坏蛋数学家一样还原 (Reduction like a Badass Mathematician)

    We can apply reduction from the graphical structure of our data into a linear structure such that the information encoded in the graphical structure isn’t lost. Doing so, we’ll be able to use good old word2vec.

    我们可以将数据的图形结构简化为线性结构,以使图形结构中编码的信息不会丢失。 这样做,我们就可以使用旧的word2vec。

    The key point is to perform random walks in the graph. Each walk starts at a random node and performs a series of steps, where each step goes to a random neighbor. Each random walk forms a sentence that can be fed into word2vec. This algorithm is called node2vec. There are more details in the process, which you can read about in the original paper.

    关键是在图中执行随机游走。 每次步行都从一个随机节点开始,并执行一系列步骤,其中每个步骤都将到达一个随机邻居。 每个随机游走都会构成一个句子,可以将其输入word2vec。 该算法称为node2vec 。 该过程中有更多详细信息,您可以在原始论文中阅读。

    案例分析 (Case study)

    Taboola’s content recommender system gathers lots of data, some of which can be represented in a graphical manner. Let’s inspect one type of data as a case study for using node2vec.

    Taboola的内容推荐系统收集大量数据,其中一些可以图形方式表示。 让我们检查一种数据类型,作为使用node2vec的案例研究。

    Taboola recommends articles in a widget shown in publishers’ websites:

    Taboola推荐发布者网站中显示的小部件中的文章:

    Each article has named entities — the entities described by the title. For example, the item “the cutest dogs on the planet” contains the entities “dog” and “planet”. Each named entity can appear in many different items.

    每篇文章都有命名的实体,即标题所描述的实体。 例如,项目“地球上最可爱的狗”包含实体“狗”和“行星”。 每个命名实体可以出现在许多不同的项目中。

    We can describe this relationship using a graph in the following way: each node will be a named entity. There will be an edge between two nodes if the two named entities appear in the same item:

    我们可以通过以下方式使用图形描述这种关系:每个节点将是一个命名实体。 如果两个命名实体出现在同一项目中,则两个节点之间将存在一条边:

    Now that we are able to describe our data in a graphical manner, let’s run node2vec to see what insights we can learn out of the data. You can find the working code here.

    既然我们能够以图形方式描述数据,那么让我们运行node2vec来看看我们可以从数据中学到什么见识。 您可以在此处找到工作代码。

    After learning node embeddings, we can use them as features for a downstream task, e.g. CTR (Click Through Rate) prediction. Although it could benefit the model, it’ll be hard to understand the qualities learned by node2vec.

    在学习节点嵌入之后,我们可以将它们用作下游任务的功能,例如CTR(点击率)预测。 尽管它可以使模型受益,但是很难理解node2vec所学到的质量。

    Another option would be to cluster similar embeddings together using K-means, and color the nodes according to their associated cluster:

    另一种选择是使用K-means将相似的嵌入物聚类在一起,并根据节点的关联聚类为节点着色:

    Cool! The clusters captured by node2vec seem to be homogeneous. In other words, nodes that are close to each other in the graph are also close to each other in the embedding space. Take for instance the orange cluster — all of its named entities are related to basketball.

    凉! node2vec捕获的群集似乎是同质的。 换句话说,图中的彼此靠近的节点在嵌入空间中也彼此靠近。 以橙色集群为例-它的所有命名实体都与篮球有关。

    You might wonder what the benefit of using node2vec over classical graphical algorithms, such as community detection algorithms (e.g., the Girvan-Newman algorithm) is. Capturing the community each node belongs to can definitely be done using such algorithms, there’s nothing wrong with it.

    您可能想知道,使用node2vec优于传统的图形算法(例如社区检测算法(例如, Girvan-Newman算法 ))有什么好处。 捕获每个节点所属的社区绝对可以使用这种算法来完成,这没有错。

    Actually, that’s exactly feature engineering. And we already know that DL can save you the time of carefully handcrafting such features. So why not enjoy this benefit? We should also keep in mind that node2vec learns high dimensional embeddings. These embeddings are much richer than merely community belonging.

    实际上,这就是功能工程。 我们已经知道DL可以节省您精心制作此类功能的时间。 那么为什么不享受这种好处呢? 我们还应该记住,node2vec学习高维嵌入。 这些嵌入比仅仅是社区归属更丰富。

    采取另一种方法 (Taking Another Approach)

    Using node2vec in this use case might not be the first idea that comes to mind. One might suggest to simply use word2vec, where each sentence is the sequence of named entities inside a single item. In this approach, we don’t treat the data as having a graphical structure. So what’s the difference between this approach — which is valid, and node2vec?

    在这种用例中使用node2vec可能不是想到的第一个想法。 可能有人建议简单地使用word2vec,其中每个句子都是单个项目中命名实体的序列。 在这种方法中,我们不会将数据视为具有图形结构。 那么,这种方法(有效)和node2vec有什么区别?

    If we think about it, each sentence we generate in the word2vec approach is a walk in the graph we’ve defined earlier. node2vec also defines walks on the same graph. So they are the same, right? Let’s have a look at the clusters we get by the word2vec approach:

    如果我们考虑一下,在word2vec方法中生成的每个句子都是我们在前面定义的图中的遍历。 node2vec还定义了同一图形上的游走。 所以他们是一样的,对吗? 让我们看一下通过word2vec方法获得的集群:

    Now the “basketball” cluster is less homogenous — it contains both orange and blue nodes. The named entity “Basketball” for example was colored orange. While the basketball players “Lebron James” and “Kobe Bryant” were colored blue!

    现在,“篮球”群集的同质性降低了-它包含橙色和蓝色节点。 例如,命名实体“篮球”的颜色为橙色。 篮球运动员“勒布朗·詹姆斯”和“科比·布莱恩特”被涂成蓝色!

    But why did this happen?

    但是为什么会这样呢?

    In this approach, each walk in the graph is composed only of named entities that appear together in a single item. It means we are limited to walks that don’t go further than distance 1 from the starting node. In node2vec, we don’t have that limit. Since each approach uses a different kind of walks, the learned embeddings capture a different kind of information.

    用这种方法,图中的每个游动仅由在单个项目中一起出现的命名实体组成。 这意味着我们仅限于步行距离起点不超过距离1的步行。 在node2vec中,我们没有该限制。 由于每种方法使用不同类型的走动,因此学习到的嵌入会捕获不同类型的信息。

    To make it more concrete, consider the following example. Say we have two items — one with named entities A, B, C and another with D, B, E. These items induce the following graph:

    为了更具体,请考虑以下示例。 假设我们有两个项目-一个项目的名称为A,B,C,另一个项目的名称为D,B,E。这些项目产生以下图形:

    In the simple word2vec approach we’ll generate the following sentences: [A, B, C] and [D, B, E]. In the node2vec approach, we could also get sentences like [A, B, E]. If we fetch the latter into the training process, we’ll learn that E and C are interchangeable. The prefix [A, B] will be able to predict both C and E. Therefore, C and E will get similar embeddings, and will be clustered together.

    在简单的word2vec方法中,我们将生成以下句子:[A,B,C]和[D,B,E]。 在node2vec方法中,我们还可以获得类似[A,B,E]的句子。 如果将后者带入训练过程,我们将了解到E和C是可互换的。 前缀[A,B]将能够预测C和E。因此,C和E将获得相似的嵌入,并将被聚类在一起。

    外卖 (Takeaways)

    Using the right data structure to represent your data is important. Each data structure implies a different learning algorithm. Or in other words — introduces a different inductive bias.

    使用正确的数据结构来表示数据非常重要。 每个数据结构都包含不同的学习算法。 换句话说-引入了不同的归纳偏置。

    Identifying your data has a certain structure, so you can use the right tool for the job, might be challenging.

    识别数据具有一定的结构,因此您可以使用正确的工具来完成这项工作,这可能很困难。

    Since so many real-world datasets are naturally represented as graphs, we think Graph Neural Networks are a must-have in our toolbox as data scientists.

    由于许多现实世界的数据集自然地以图形表示,因此我们认为图形神经网络是数据科学家中工具箱中的必备工具。

    Originally published at engineering.taboola.com by me and Yoel Zeldes.

    最初由我和Yoel Zeldes发表在engineering.taboola.com上

    翻译自: https://www.freecodecamp.org/news/how-to-think-about-your-data-in-a-different-way-b84306fc2e1d/

    node2vec原理

    展开全文
  • matlab中代码英文node2vec-c 无依赖C ++中的实现。 node2vec使用短偏差随机游动来学习未加权图中顶点的表示。 可在中找到其他实现,并在中找到参考实现。 该代码被开发用于纸面文件,以进行公平的性能比较。 此外,...
  • Node2vec

    2020-01-07 10:04:39
    参数p 控制着重新返回顶点t的概率。如果 p>max(q,1) ,那么下一步较小概率重新返回t;如果p(q,1) ,那么下一步会更倾向于回到顶点t。 参数q ,如果q>1,那么下一步倾向于回到t或者t...p和q的设置一般是2的指数。

    Node2vec
    参数p控制着重新返回顶点t的概率。如果 p>max(q,1) ,那么下一步较小概率重新返回t;如果p<max(q,1) ,那么下一步会更倾向于回到顶点t。
    参数q,如果q>1,那么下一步倾向于回到t或者t的临近顶点,这接近于BFS的探索方式;如果q<1,那么下一步倾向于走到离t更远的顶点,接近于DFS寻路方式。
    因此,可以通过设置p和q来控制游走网络的方式。p和q的设置一般是2的指数。

    展开全文
  • 嵌入表示学习是当下研究热点,从word2vec,到node2vec, 到graph2vec,出现大量X2vec的算法。但如何构建向量嵌入理论指导算法设计?最近RWTH Aachen大学的计算机科学教授ACM Fellow Martin Grohe教授给了《X2vec: ...
  • node2vec论文

    2016-06-11 15:05:11
    node2vec的论文
  • <div><p>i run node2vec in win10, python3.6 and got a problem , i don't know what's mean , i run it as the example you give. hope you can help me <p>Traceback (most recent call last): File &#...
  • node2vec-master.zip

    2021-03-15 15:40:40
    node2vec-master.zip
  • node2vec error

    2020-11-25 21:35:09
    <div><p>I get the following error when trying to execute node2vec. <p>Traceback (most recent call last): File "/usr/share/pycharm/helpers/pydev/pydev_run_in_console.py", line 78, in globals...
  • node2vec论文里面的代码,
  • 基于Node2Vec的改进算法研究
  • ve tried to run the <code>node2vec</code> algo from the 1.3.0 preview on my database but have not had much luck and keep getting an <code>ArrayIndexOutOfBoundsException</code>. Is this a bug? <p>...
  • <div><p>This is the pull request for adding Keras Node2Vec layer to StellarGraph library. <p>I mainly made the following changes: <ol><li>Add the Node2Vec layer.</li><li>Add the Node2VecNodeGenerator ...
  • node2vec笔记

    千次阅读 2018-11-02 09:02:43
    node2vec论文:https://dl.acm.org/citation.cfm?id=2939754 node2vec作者KDD口头报告视频:...node2vec是deepwalk的一个扩展,主要考虑了两点:(1)邻近性,即节点在图上的距离越近越相似;  ...

    node2vec论文:https://dl.acm.org/citation.cfm?id=2939754

    node2vec作者KDD口头报告视频:https://www.youtube.com/watch?v=1_QH5BEP5BM

    node2vec是deepwalk的一个扩展,主要考虑了两点:(1)邻近性,即节点在图上的距离越近越相似;

                                                                                         (2)同构性,即如果两个节点周围的结构越相近,则越相似。

    前面的公式没什么好说的,主要是作者定义了一种搜索策略来捕捉上述作者观察到的性质。

    首先,node2vec通过如下分布来产生给定节点的邻居游走节点

                                                         \mathrm{Pr}(c_i=x\vert c_{i-1}=v)= \begin{cases} \frac{\pi_{vx}}{Z} & \text{if } (v,x)\in E\\ 0 & \text{otherwise} \end{cases}

    其中,\pi_{vx}表示节点v到节点x的转移概率,Z是归一化因子。那么,如下图,如果当前节点为v,上一次访问的节点为t,那么下一次要访问的节点是由\pi_{vx}来定的。

     \pi_{vx}的定义为:\pi_{vx}=\alpha_{pq}(t,x)\cdot w_{vx}w_{vx}为节点v到节点x边上的权重,如果是无权图则默认为1。下面就主要是关于的\pi_{vx}定义了,如下

                                                             \alpha_{pq}(t, x) = \begin{cases} \frac{1}{p} & \text{if } d_{tx}=0\\ 1 & \text{if } d_{tx}=1\\ \frac{1}{q} & \text{if } d_{tx}=2 \end{cases}

    其中,d_{tx}表示 tx之间的最短路径,这里作者定义的取值范围为{0,1,2},这样作者定义的p和q就能有效的引导游走序列了。

    下面讨论一下这两个主要的参数p和q。

    Return参数p:参数p控制再次访问刚刚被访问过的节点的概率。如果p设置得比较大(如p>\max(q,1)),则可以保证在后续的两个游走中尽量不再次访问刚刚被访问过的节点(除非当前的节点没有其他邻居了)。该策略能够引导进行适度的探索并避免采样重复。如果该值被设置得偏小(如p<\min(q,1)),则游走更倾向于回溯,游走趋向于是节点u附近的节点,也就是比较关注u的局部信息。
    In-out参数q:参数q控制探索向内节点和向外节点。如果q>1,那么随机游走的节点与节点t接近。这样的游走与BFS类似,能够获得节点t的局部结构信息。如果q<1,则随机游走的节点将尽可能的远离节点t。这与DFS类似,趋近于探索源节点的外向节点。

     

    展开全文
  • node2vec 包安装

    2019-09-19 15:26:55
    在命令行直接用 pip命令安装,命令如下 pip install node2vec node2vec安装需要提前安装numpy、 scipy、gensim等包
  • <div><p>I make some minor changes on the node2vec wording introduction in the "demos/embeddings/keras-node2vec-embeddings.ipynb" and "demos/node-classification/keras-node2vec-node-...
  • node2vec核心思想

    2019-06-17 15:19:39
    node2vec核心思想 [kdd2016] node2vec: Scalable Feature Learning for Networks node2vec的核心在于得到从每一个节点uuu出发,定长lll的随机游走序列集合,进而得到每个节点的“新邻居”,然后用word2vec的思想来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 910
精华内容 364
关键字:

node2vec