第六章:项目实战之推荐/广告系统
第一部分:推荐系统基础与召回算法
第七节:召回算法之u2u2i: Graph Embedding(Node2Vec、DeepWalk、GraphSAGE)算法原理与精讲
在推荐系统中,召回是“从全量候选中快速筛出与你最相关的 Top-N 候选集合”。当用户与物品之间存在“图结构关系”时(例如用户共同点击、共同收藏、共同购买、共同浏览等),图表示学习(Graph Embedding)就成为一种非常强大的召回技术路线。本节我们将系统拆解:
DeepWalk → Node2Vec → GraphSAGE
理解它们如何把图中的点(item/user)转成向量,再用于u2u / i2i / u2u2i 召回场景。
1. 图召回的来源:为什么是 Graph Embedding?
推荐系统中常见召回方法:
| 方法 | 特点 | 局限 |
|---|---|---|
| 协同过滤 CF | 简单有效 | 稀疏、冷启动弱 |
| i2i / u2i 基于共现 | 工程可落地 | 只看局部关系 |
| 双塔召回 | 效果稳定 | 仅建模用户和物品,图关系利用不足 |
| Graph Embedding(图召回) | 利用社交关系、行为关系、时序关系,能挖掘“潜在结构” | 需要建图,训练成本高 |
图召回最核心一句话:
让“相连关系强的节点”在向量空间里越靠越近,用距离找 Top-K 完成召回
2. 图召回适用的经典场景
召回目标:u2u2i
用户 → 找相似用户 → 找相似用户喜欢/行为过的物品。
适用场景包括:
-
同看推荐(看相同电影的人)
-
同买推荐(买相同商品的人)
-
同收藏推荐(收藏行为稠密)
-
社交推荐(关注网络)
-
教育 / 广告 / 资讯推荐(阅读轨迹相似)
其中图构建一般形式为:
User — Item — User — Item — User ...
或压缩成 Item 图:
Item — co_click — Item
Item — co_buy — Item
Item — tag — Item
3. 三种算法的直观类比
| 算法 | 本质思想 | 训练方式 | 优点 | 缺点 |
|---|---|---|---|---|
| DeepWalk | 图 = 语料,随机游走当 skip-gram | Word2Vec | 简单有效 | 只随机,结构表达弱 |
| Node2Vec | BFS / DFS 可控游走权衡 | Word2Vec | 可表达“结构相似”或“邻居相似” | 参数多 |
| GraphSAGE | 聚合邻居特征(GNN) | minibatch 训练 | 可 inductive,工业强 | 训练复杂但最强 |
一句话区别:
-
DeepWalk:不加思考走(Random Walk + Word2Vec)
-
Node2Vec:有策略地走(p/q 控制 BFS/DFS)
-
GraphSAGE:不走了,我聚合邻居就能学到结构
4. DeepWalk 原理(最适合 i2i 图)
核心 pipeline:
图 → 随机游走生成序列 → Word2Vec → 得到节点 embedding
本质:把节点当词,把随机游走序列当句子
| 类比 NLP | 在图中的含义 |
|---|---|
| word | 节点 |
| sentence | 随机游走路径 |
| corpus | 图上的所有游走序列 |
优点:简单、高效、适合电商/视频共现召回
流程图如下:
random walk → skip-gram → embedding → faiss ANN → recall Top-K
5. Node2Vec 原理(结构表达更强)
Node2Vec 核心 = DeepWalk + 可控随机游走
参数:
| 参数 | 含义 |
|---|---|
| p | 回到原节点的概率 |
| q | 更远 or 更近搜索的倾向 |
→ q>1 偏 BFS (更像同类 item)
→ q<1 偏 DFS (更像结构 role 相似)
适用两个召回需求:
| 需求 | 选择 |
|---|---|
| 找同类 item | BFS(q>1) |
| 找功能角色相似 item | DFS(q<1) |
6. GraphSAGE 原理(最强,工业可扩展)
核心思想:
在节点自身特征 + 邻居特征聚合下,学习节点 embedding
通俗理解:不是走路径,而是:
item_vec = agg(item + neighbors)
常用聚合器:
| 聚合器 | 特点 |
|---|---|
| Mean | 最常用最快 |
| Pooling | 表达更强 |
| LSTM-Aggregator | 表达最强但慢 |
优势:
泛化能力强(新节点冷启动有解)
mini-batch 训练,适合大规模工业化
与 GNN 接轨
7. 工程实战 Pipeline(生产可落地)
图召回完整流程如下:
行为日志 → 共现建图 → DeepWalk/Node2Vec/GraphSAGE → embedding → ANN 检索(Faiss) → Top-K → 进入排序
召回代码示例(最简 DeepWalk):
from gensim.models import Word2Vec
walks = random_walk(graph, walk_length=20, num_walks=10)
model = Word2Vec(walks, vector_size=128, window=5, sg=1)
embedding = model.wv
ANN 检索示例(Faiss):
import faiss
faiss_index = faiss.IndexFlatL2(128)
faiss_index.add(embedding_matrix)
D, I = faiss_index.search(user_vec, 50) # Top 50
8. 总结:三者如何在推荐系统中选型?
| 场景 | 最佳选择 |
|---|---|
| 电商/视频共现 i2i | DeepWalk / Node2Vec |
| 社交网络 / 图结构强 | Node2Vec |
| 工业级召回(新用户/新节点) | GraphSAGE(企业最常用) |
一句最重要的落地建议:
中小规模用 Node2Vec,大规模工业用 GraphSAGE
1855

被折叠的 条评论
为什么被折叠?



