Graph Embedding

Graph Embedding简介

对于网络科学而言,世间万物都可以抽象成点,而事物之间的关系都可以抽象成边,并根据不同的应用场景,生成不同的网络,因此整个世界都可以用一个巨大的复杂网络来代表。常用的图有社交关系网络、商品网络、知识图谱等。
Graph Embedding 是一种将复杂网络投影到低维空间的机器学习技术,典型的做法是将网络中的节点做向量化表达,使节点间的向量相似度接近原始节点间在网络结构、近邻关系、Meta信息等多维度上的相似性。
Graph Embedding的基本做法是,对graph进行采样(Sampling),采出来的序构建模型(Embedding)。一个典型的方法是将语言模型和无监督学习从单词序列扩展到图结构上,将截断游走的序列当成句子进行学习,之后采用word2vec中Skip-Gram模型进行训练,得到每个节点的embedding向量。
在这里插入图片描述

应用

在电商场景中,用户对商品每天产生海量的行为(浏览,收藏,购买……)。用户对商品的行为序列可以构建成 Graph 的形式,然后针对每个节点进行随机游走,生成一些候选序列,再去做 Embedding 学习,统一成同一维度的向量表示。该向量被直接用在 Item-CF 中商品相似度的计算中,相比经典 Item-CF 以共同点击次数来衡量商品相似度的做法,该算法不需要两个商品被同时点击过也能计算出商品间的相似度。
在这里插入图片描述

1.Graph构建

Graph定义:G = (V,E,W),V = vertex (顶点),E = edge(边) ,W = weight(边的权重)
在电商场景中:节点:商品,边:商品间共现关系,权重:共现次数、时间。
可以使用传统Item-CF的方式产出图的原始数据,然后构建图。

2.Graph加权游走算法

Algorithm 1 Weigted Walk(G,n,Walks)
Input: Graph G(V,E,W), Step n
Output: walk
Initialization: walk to empty
  For each vi ∈ V do
   	Append vi to walk
   	For j=1...n do
     	vj=GetNeighbor(G,vi)
     	Append vj to walk
   	Return walk

Algorithm 2 GetNeighbor(G,vi)
Input: Graph G(V,E,W), Node vi
Output: next node vj
vj=WeightedSample(vi,w)

3.Embedding

代码实现:

https://snap.stanford.edu/node2vec/
node2vec on spark
https://github.com/aditya-grover/node2vec/tree/master/node2vec_spark

Reference:

https://iamsiva11.github.io/graph-embeddings-2017-part1/
https://mp.weixin.qq.com/s/MBVac45WpZy4c208zF3Ang
https://yq.aliyun.com/articles/414733

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值