本文作者:Alicia , 现在美国名校读博士后,从事 AI 研究及教学工作,拥有 10 年以上工作与科研经历。
图(Graph:G = <V (节点), E(边)>)是一种普遍存在的数据结构。
譬如,我们大家(users)生活在一个人际关系网络/图 中。
一个实际的问题是 商品推销 (recommender system,商品推荐系统),如果你的 朋友 喜欢购买游戏 你可能也会喜欢电脑;如果你的朋友 喜欢购买篮球,你可能也会喜欢运动。
这里你我便是图的节点,‘朋友’便是一种关系(图的边连接你我)。
图是普遍 广泛的知识表达方式,所以 我们 需要好的技术/模型 来进行图的分析。我们可以直接对图进行操作。
经典的方法,例如,节点之间的最短路;给定某个节点求其最近的 K 个节点;还有著名的 random-walk (with restart); PageRank - Google 的搜索算法;基于 谱分析的 (spectral) diffusion maps 等等。
”图的表示“ 学习(Graph Representation Learning)变得很流行,也就是 找到一个函数/Map 把一个图的节点变成向量表示形式 (f: G --> V)。
其重要性为:向量/数更为直接作为机器学习的输入,从而来分析图,例如可以直接对节点向量进行聚类/分类分析 (物以类聚,人以群分)更好的推荐商品。
那么,如何来把图的节点转化成向量呢?
DeepWalk 是纽约州立大学石溪分校的工作,想法简洁,效果很好。
简单介绍:对图上的节点进行随机行走 K 步(random walk),得到一个 K+1 个节点的路径,然后把路径上相邻的节点分成对子 (Ni, Nj), 然后,可以建立深度学习模型来预测(输入是Ni,输出是 Nj)
也就是著名的 word2vec。
若是有兴趣可以查看原文。
References:
Deep-Walk: https://arxiv.org/abs/1403.6652
random-walk/page-rank:
http://ilpubs.stanford.edu:8090/422/1/1999-66.pdf
Diffusion maps:
https://www.sciencedirect.com/science/article/pii/S1063520306000546
长按二维码,关注她。最近与我合作撰写一个 Python 全栈 60 天专栏,感兴趣的点击阅读原文,了解详情。