推荐系统技术栈
1. 推荐系统基本概念
1. Embedding
1. 召回
fun-rec ch2.1.1
1. ItemCF
- 物品相似度的公式
- 得到物品相似度后如何预测用户对物品的喜爱程度?
- 如何对热门物品进行惩罚
- 什么时候适合用 UserCF,什么时候适合用 ItemCF?
- 协同过滤的缺点是什么?什么思路可以缓解?
2. Swing 算法
- 公式
- 解决什么问题
3. UserCF
- 公式
- 如何降低热门物品权重
- 可以做哪些离线运算?
- 有哪些缺点?
4. 算法评估
- recall
- precision
- coverage(覆盖率)
4. 隐语义模型与矩阵分解
- 什么是隐式分解?什么是潜在因子?
- 矩阵分解算法
5. Airbnb 召回
- 训练 listing embedding 的 objective(四个)
- 如何引入 booked list 信息的?
- 如何解决新 list 的冷启动问题
- 如何解决数据稀疏问题?(没太看懂,可以再看看 Airbnb如何解决数据稀疏问题)
6. YouTubeDNN
YouTubeDNN
召回阶段:
- 训练目标是什么?or 训练任务是什么(分离线和在线)
- 主要的特征处理有哪些
- Example Age 是什么?为了解决什么问题,有什么用,怎么做的
- 什么是不对称的浏览问题?YouTubeDNN 的解决方式是什么?
- 怎么选负样本的?选取的时候怎么处理热门 item?
排序阶段:(YoutubeDNN 的排序逐渐被新的深度模型替代,但其召回仍很经典常用) - 训练目标是什么?(离线和在线)
- 为什么用点击率?
王喆十大问题 - 为什么召回 seriving 的时候不直接用离线的模型,而是要做近邻搜索?为什么 video embedding 和 user embedding 来源不一样?(或者说两个分别怎么生成的?)
在线上推理时,对所有 item 过模型计算概率开销太大。因此可以存储得到的 video 的 embedding,推理时用最近邻搜索。DNN 模型的输入是<user, context>,结合上下文,将最后一层的输出作为 user vector。
- 在 video embedding 的时候为什么把长尾的 video 直接用 0 向量替代?有无更好方法?
长尾数据 embedding 训不好,不如直接丢弃或者置 0
- 为什么在一些特征,比如#previous impressions,要用开方和平方处理后当作三个特征输入模型?
获取特征的非线性表示
- 测试集的选取为什么不用随机留出法(random holdout),而是用用户最近的一次观看行为做测试集?
防止数据穿越问题,避免用未来数据预测历史数据(其实和时序这边类似,测试集一般选取的训练集后面的序列)
- 为什么排序输出层要用 weighted LR,而不是直接 LR?
王喆-YoutubeDNN的serving
Weighted LR 使用用户观看时长作为权重,使得 serving 的时候计算的就是时长的期望
7. 样本选择
- 召回、排序时分别可以怎么挑选正负样本?(SENet)
1. 排序
1. 特征交叉
1. Factorized Machine(FM)
- FM 的原理/公式
2. DCN
- 应用场景
- DCN 作用
- DCN 网络结构/代码
3. LHUC
- 应用于推荐系统的哪一过程?
- 为什么用户特征神经网络最后一层 sigmoid 输出要乘 2?
1. Wide&Deep
- 为什么 google 的 wide&deep 使用带 l1 正则化的 FTRL 作为 wide 部分的优化,而使用 AdaGrad 作为 deep 部分的优化?answer
- wide 部分对长尾问题可能也有一定优势,deep 很难训好长尾的数据
1. DIN
1. 行为序列
- 怎么对用户历史行为进行建模?
- DIN 模型做了什么改进?
- DIN 模型的优劣
- SIM 模型针对什么问题做了什么改进?
1. 其他
2. L1 正则与 l2 正则公式。为什么 l1 更容易使模型稀疏
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cloni!