zoukankan      html  css  js  c++  java
  • node2vec&社交网络

    node2vec

    我发现了一个小秘密,好用的东西,原理都非常的简单~~妙哉!!

    Learning useful representations from highly structured objects such as graphs is useful for a variety of machine learning applications. Besides reducing the engineering effort, these representations can lead to greater predictive power.
    **The node2vec framework learns low-dimensional representations for nodes in a graph by optimizing a neighborhood preserving objective. **The objective is flexible, and the algorithm accomodates for various definitions of network neighborhoods by simulating biased random walks. Specifically, it provides a way of balancing the exploration-exploitation tradeoff that in turn leads to representations obeying a spectrum of equivalences from homophily to structural equivalence.stanford

    Node2vec是用来产生网络中节点向量的模型,输入是网络结构(可以无权重),输出是每个节点的向量
    简单的来说:通过特定的游走方式进行采样,对于每个点都会生成对应的序列。再将这些序列视为文本导入word2vec中的cbow或者skip-gram模型,即可得到每个节点的向量(对应word2vec中每个词的向量)知乎专栏

    • random walk(随机游走),通过一定规则随机抽取一些点的序列。
    • 将点的序列输入至 Word2Vec 模型,从而得到每个点的 embedding 向量。

    节点的embedding,可以想象每个节点是一个词,这样用word2vec就可以做embedding了

    社交网络结构

    社交图谱:好友一般是自己在现实社会中认识的人,比如同事、同学、亲戚等,并且这种好友关系是需要双方确认的,如 Fackbook、QQ 空间。
    兴趣图谱:好友往往都是现实中互不相识的,只是出于对对方言论的兴趣而建立好友关系,并且这种好友关系也是单向的关注关系,如 Twitter、新浪微博。

    需要注意的是,任何一个社会化网站都不是单纯的社交图谱或兴趣图谱。在 QQ 空间中大多数用户联系基于社交图谱,而在微博上大多数用户联系基于兴趣图谱。但在微博中,也会关注现实中的亲朋好友,在 QQ 中也会和部分好友有共同兴趣。clvsit

    在社交网络中需要表示用户之间的联系,可以用图 G(V, E, W) 定义一个社交网络。每个user表示一个顶点,那有关联的用户会有边相连。或者通过某一用户间接进行相连。

    社交图谱:朋友关系是需要双向确认的,因而可以用无向边连接有社交网络关系的用户——无向图;
    兴趣图谱:朋友关系是单向的,可以用有向边代表这种社交网络上的用户关系——有向图。

    random walk

    【基本流程】:给定一张图 G 和一个起始节点 S,标记起始节点位置为当前位置,随机选择当前位置节点的一个邻居,并将当前位置移动至被选择的邻居位置,重复以上步骤 n 次,最终会得到从初始节点到结束节点的一条长度为 n 的“点序列”,此条“点序列”即称为在图 G 上的一次 random walk。clvsit

    random walk 算法主要分为两步:

    选择起始节点:起始节点的选择存在两种常见的做法。
    按照一定规则随机从图中抽取一定数量的节点;
    以图中所有节点作为起始节点。一般来说我们选择这种方式,以便所有节点都能被选取到。
    选择下一节点:最简单方法是按照边的权重随机选择,但是在实际应用中,我们希望能控制广度优先还是深度优先,从而影响 random walk 能够游走到的范围。
    深度优先:发现能力更强;
    广度优先:社区内的节点更容易出现在一个路径中。
    斯坦福大学计算机教授 Jure Leskovec 给出了一种可以控制广度优先或者深度优先的方法。

    After transitioning to node v from t, the return hyperparameter, p and the inout hyperparameter, q control the probability of a walk staying inward revisiting nodes (t), staying close to the preceeding nodes (x1), or moving outward farther away (x2, x3).

    For example, the graph visualization above depicts the color-coded communities exhibiting homophily discovered by node2vec in the Les Misérables Network.

  • 相关阅读:
    linux命令学习
    linux sar命令详解
    消息中间件设计
    google三驾马车
    Apache ZooKeeper 服务启动源码解释
    ubuntu16 ccls neovim coc.nvim ccls langserver安装
    ubuntu 字体安装 —— 以nerd font为例
    neovim
    vim youcompleteme conda 虚拟环境
    sublime 插件管理
  • 原文地址:https://www.cnblogs.com/gaowenxingxing/p/12862857.html
Copyright © 2011-2022 走看看