node2vec

2021/5/10 22:25:44

本文主要是介绍node2vec,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

node2vec的实战讲解(不讲论文和公式),只写例子

https://zhuanlan.zhihu.com/p/323134817

代码

https://link.zhihu.com/?target=https%3A//github.com/aditya-grover/node2vec

https://github.com/cjziems/Node2Vec

关于Node2vec算法中Graph Embedding同质性和结构性的进一步探讨

https://mp.weixin.qq.com/s/AI-gMTPxqTcXR5qPduU9VQ

Node2vec是在DeepWalk的基础上更进一步,通过调整随机游走权重的方法使graph embedding的结果在网络的同质性(homophily)结构对等性(structural equivalence,下面简称结构性)中进行权衡。

其中,网络的“同质性”指的是距离相近节点的embedding应该尽量近似,如图1中,节点u与其相连的节点s1、s2、s3、s4的embedding表达应该是接近的,这就是“同质性“的体现。

“结构性”指的是结构上相似的节点的embedding应该尽量接近,图1中节点u和节点s6都是各自局域网络的中心节点,结构上相似,其embedding的表达也应该近似,这是“结构性”的体现。

BFS更多抓住了网络的结构性,而DFS更能体现网络的同质性(只有深入了解,才能发现是不是同一类人)

对于同一个价格,顺路度订单来说,需要发现同质性

 

如图所示,当从节点t跳转到当前节点v后,下一步的跳转到节点x的概率为

图片

其中α如图所示,参数p为返回参数(return parameter),p越小则随机游走返回节点t的可能性越大,算法更倾向于BFS。参数q为进出参数(in-out parameter),q越小则随机游走到远方的节点可能性越大,算法更倾向于DFS。

为了发现订单的同质性,让q等于一个比较小的值

这种灵活的游走方式使得node2vec可以更好的挖掘出图关系的特征表达,以推荐系统为例:

  • 同质性相同的物品可能是同类目、同属性,或者经常被加到同一个购物车的商品;

  • 结构性相同的物品可能是爆款、满减凑单,套餐折扣等具有相似结构特征的商品。

这两种信息都很重要,都可以是推荐的理由。因此,甚至可以通过不同参数的node2vec来召回不同的商品列表。

如果前面提及DeepWalk的时候你还有为什么明明有了序列数据还要用Graph Embedding这样的疑问,相信到这里也找到一些答案了。首先,在图上进行随机游走可以生成出原始数据里没有出现过的序列,丰富了embedding的训练数据。另外,像Node2vec提供的游走方式可以挖掘出结构相似等序列本身没有的信息。

Node2vec只是Graph Embedding的一个开始,主要针对同构的图。但现实中的图数据往往是异构的,不仅包含异构的节点(用户和商品),而且包含异构的边(点击、购买等多种行为),将这些异构的信息利用进来就能有更好的结果,一些基于异构网络的嵌入学习也被广泛研究(感兴趣的同学可以看看metapath2vec和GATNE)。对于我们的场景,也有需要挖掘客户(消费者或经销商)之间共性的。那么除了聚类、画像这些手段,是不是也可以通过node2vec或者其它的graph embedding技巧去得到用户甚至是SKU的embedding呢?

 



这篇关于node2vec的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程