
1) 【一句话结论】
传统协同过滤(基于物品的CF)在淘天成熟商品推荐中利用稳定物品相似性,深度学习(如Wide&Deep)适合冷启动场景和大规模特征学习,淘天根据业务场景选择:新品推荐(冷启动)优先用深度学习,热门商品推荐结合传统CF(基于物品的CF)与深度学习,个性化搜索排序用深度学习结合搜索特征。
2) 【原理/概念讲解】
传统协同过滤(基于用户/物品的CF)核心是利用用户或物品的相似性推荐:
深度学习推荐算法(如DNN、Wide&Deep、DeepFM)通过神经网络学习特征表示和交互:
类比:传统CF像“找邻居”,相似用户/物品推荐;深度学习像“学画像”,通过神经网络学习用户和物品的复杂特征关系。
3) 【对比与适用场景】
| 算法类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 基于用户CF | 计算用户相似度,推荐相似用户喜欢的物品 | 简单,依赖用户-物品交互,冷启动差 | 小规模数据、成熟用户推荐 | 数据稀疏时效果差 |
| 基于物品CF | 计算物品相似度,推荐用户喜欢的相似物品 | 利用成熟商品相似性,物品相似性稳定 | 成熟商品推荐(如热门商品) | 新用户/新物品冷启动 |
| DNN | 全连接神经网络学习特征非线性 | 处理高维特征,捕捉复杂交互 | 大规模数据、个性化推荐 | 计算成本高,可解释性弱 |
| Wide&Deep | 结合线性(Wide)和深度(Deep)网络 | 处理低阶+高阶特征,平衡效率与效果 | 中大规模数据,需平衡计算与效果 | 需设计Wide部分特征 |
| DeepFM | FM的深度版本,DNN+FM | 捕捉高阶特征交互,保留FM特性 | 大规模数据,需处理高维特征 | 计算成本中等,可解释性弱 |
4) 【示例】
以淘天个性化搜索排序为例,DeepFM模型结合搜索特征的应用:
# 伪代码:淘天搜索排序中DeepFM模型
from tensorflow.keras.layers import Input, Dense, Embedding, Flatten, Concatenate
from tensorflow.keras.models import Model
# 输入层
search_query = Input(shape=(10,), name='search_query')
user = Input(shape=(2,), name='user')
item = Input(shape=(3,), name='item')
# 嵌入层
search_embed = Embedding(input_dim=10000, output_dim=64)(search_query)
user_embed = Embedding(input_dim=100, output_dim=32)(user)
item_embed = Embedding(input_dim=1000, output_dim=16)(item)
# 展平
search_flat = Flatten()(search_embed)
user_flat = Flatten()(user_embed)
item_flat = Flatten()(item_embed)
# FM交叉特征
search_user_cross = search_flat * user_flat
user_item_cross = user_flat * item_flat
search_item_cross = search_flat * item_flat
# DNN部分
dnn_input = Concatenate()([search_flat, user_flat, item_flat])
dnn_hidden = Dense(64, activation='relu')(dnn_input)
dnn_output = Dense(1, activation='sigmoid')(dnn_hidden)
# 合并输出
output = Concatenate()([search_user_cross, user_item_cross, search_item_cross, dnn_output])
prediction = Dense(1)(output)
# 模型编译
model = Model(inputs=[search_query, user, item], outputs=prediction)
model.compile(optimizer='adam', loss='binary_crossentropy')
# 训练(数据量小,训练时间短)
model.fit([search_query_train, user_train, item_train], y_train, epochs=5, batch_size=32)
# 预测:输入搜索“连衣裙”、用户(25岁女)、物品(连衣裙类别、价格99)
search_query = [[0, 1, 0, ...]] # “连衣裙”词嵌入
user = [[25, 1]] # 25岁女
item = [[1, 99, 1]] # 类别1=连衣裙,价格99
score = model.predict([search_query, user, item])
# 根据得分排序,得分越高越靠前
5) 【面试口播版答案】
“传统协同过滤(基于物品的CF)在淘天场景中,基于物品的CF适合热门商品推荐,因为成熟商品有大量交互数据,物品间相似性稳定;而深度学习(如Wide&Deep)适合冷启动场景,比如新品推荐,通过用户画像和物品特征学习,解决新用户/新物品问题。具体来说,新品推荐优先用深度学习,因为它能利用用户年龄、性别等画像和物品类别、价格等特征,推荐新商品;热门商品推荐可结合传统CF(基于物品的CF)和深度学习,利用物品相似性推荐热门商品,同时用深度学习提升相关推荐效果;个性化搜索排序用深度学习(如DeepFM),结合搜索查询、用户特征和物品特征,实现精准排序。总结来说,淘天根据业务场景选择:冷启动场景(新品推荐)用深度学习,成熟场景(热门商品)用传统CF+深度学习,搜索排序用深度学习结合搜索特征。”
6) 【追问清单】
7) 【常见坑/雷区】