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 角度理解 矩阵分解算法 **

  • 优化目标:向量内积 逼近 实际得分 ru,ir^u,i=μ+bu+bi+vuTwir_{u,i}\approx \hat r_{u,i}=\mu+b_u+b_i+v_u^Tw_i

    • 输入输出:输入 user / item 编号,输出打分

    • 优化目标(RMSE):minμ,bu,bi,v,w(u,i)R(rr,iμbubivuTwi)2+λ1vu22+λ2wi22\min_{\mu,b_u,b_i,v,w}\sum_{(u,i)\in R}(r_{r,i}-\mu-b_u-b_i-v_u^Tw_i)^2+\lambda_1||v_u||_2^2+\lambda_2||w_i||_2^2

    • 神经网络模型:编号 -> embedding -> 内积 -> 偏置 -> 评分

    • 训练方法:反向传播,BGD

    • 超参数:λ1\lambda_1λ2\lambda_2,低维稠密向量 v,wv,w 的维度

  • 矩阵分解 = 没有非线性单元的 NN

  • 隐式反馈:需要调整(置信度、排序损失函数)、可能效率更低

2. 用深度学习,根据用户行为,计算物品相似度 ***

  • 无监督学习(Prod2Vec):将 item 看作单词,将 user 的购买序列看作句子,借用 Word2Vec 的 skip-gram 模型

  • 监督学习:消费过物品 x 待推荐物品 -> 相似度 -> 求和推荐 -> 损失函数

3. 用深度学习,基于会话的推荐系统 ***

  • 给定输入(动作序列),预测输出(用户的下个动作)

  • 方法分类:频繁模式挖掘、马尔科夫链、马尔可夫决策过程 MDP、RNN

4. 二阶因子分解机 ****

  • 二阶因子分解机 y^(x)=μ+i=1nwixi+i=1nj=i+1nvi,vjxixj\hat y(x)=\mu+\sum_{i=1}^n w_ix_i + \sum_{i=1}^n \sum_{j=i+1}^n \langle v_i,v_j\rangle x_i x_j

    • 稀疏特征的 embedding,内积可以表达 任意 特征交叉系数,但维度限制表达能力

    • embedding 之间引入 非线性运算(NN),可以提升表达能力,e.g. DeepFM

5. 快速近似 KNN**

  • 基于空间划分的算法:高维空间划分,精确算法,维度高 时计算量过大,e.g. KD-树、区间树、度量树

  • 局部敏感哈希类算法:高维相邻向量,映射到同一个桶里,但 需要设计 好的哈希函数、边界 附近有损失

  • 积量化类算法:对数据集做划分,对每个划分,找到表示向量,比较灵活

  • 基于最近邻图的算法:精确,但 内存消耗高,预处理时间长

11.3 推荐按系统评估

1. CTR 为什么选择 AUC

  • 几何含义:相对顺序,与绝对分值没有关系,不受正负样本比例影响

  • 概率含义:正样本评分 > 负样本评分 的概率

2. 为什么线下 AUC 提高,不能保证线上 CTR 提高

  • 线下 AUC 将所有样本混杂在一起,破坏 维度信息(用户、时间、设备)

  • 解决方法:各个维度 样本聚合,分别计算 AUC,再加权平均

  • 其他原因:线下验证集分布、线上线下特征不一致

Last updated