11. 推荐系统
11.1 推荐系统基础 **
1. 推荐系统 **
典型推荐系统:数据层 -> 算法层(召回层 + 排序层) -> 展示层
召回策略:内容过滤、协同过滤
协同过滤(基于用户 / 基于物品)
基于邻域
隐语义模型(Latent Factor Model)
矩阵分解、概率矩阵分解、协同主题模型
排序算法(CTR)
LR、GBDT、FM、NN
Wide&Deep、DIN、DIEN
其他模块:条件过滤、权重调整、冷启动(强化学习)召回 / 排序 的异同
2. 为什么 召回 + 排序 **
设备资源、响应时间 有限,简单方法 + 复杂模型 更有利
传统算法:协同过滤 + LR / GBDT
深度学习
召回:特征粗略,Softmax 输出,结构简单
排序:特征精细,单个神经元,结构复杂(LSTM、GRU 等)
11.2 推荐系统设计与算法
1. NN 角度理解 矩阵分解算法 **
优化目标:向量内积 逼近 实际得分
输入输出:输入 user / item 编号,输出打分
优化目标(RMSE):
神经网络模型:编号 -> embedding -> 内积 -> 偏置 -> 评分
训练方法:反向传播,BGD
超参数:,,低维稠密向量 的维度
矩阵分解 = 没有非线性单元的 NN
隐式反馈:需要调整(置信度、排序损失函数)、可能效率更低
2. 用深度学习,根据用户行为,计算物品相似度 ***
无监督学习(Prod2Vec):将 item 看作单词,将 user 的购买序列看作句子,借用 Word2Vec 的 skip-gram 模型
监督学习:消费过物品 x 待推荐物品 -> 相似度 -> 求和推荐 -> 损失函数
3. 用深度学习,基于会话的推荐系统 ***
给定输入(动作序列),预测输出(用户的下个动作)
方法分类:频繁模式挖掘、马尔科夫链、马尔可夫决策过程 MDP、RNN
4. 二阶因子分解机 ****
二阶因子分解机
稀疏特征的 embedding,内积可以表达 任意 特征交叉系数,但维度限制表达能力
embedding 之间引入 非线性运算(NN),可以提升表达能力,e.g. DeepFM
5. 快速近似 KNN**
基于空间划分的算法:高维空间划分,精确算法,维度高 时计算量过大,e.g. KD-树、区间树、度量树
局部敏感哈希类算法:高维相邻向量,映射到同一个桶里,但 需要设计 好的哈希函数、边界 附近有损失
积量化类算法:对数据集做划分,对每个划分,找到表示向量,比较灵活
基于最近邻图的算法:精确,但 内存消耗高,预处理时间长
11.3 推荐按系统评估
1. CTR 为什么选择 AUC
几何含义:相对顺序,与绝对分值没有关系,不受正负样本比例影响
概率含义:正样本评分 > 负样本评分 的概率
2. 为什么线下 AUC 提高,不能保证线上 CTR 提高
线下 AUC 将所有样本混杂在一起,破坏 维度信息(用户、时间、设备)
解决方法:各个维度 样本聚合,分别计算 AUC,再加权平均
其他原因:线下验证集分布、线上线下特征不一致
Last updated