7M推荐系统 - S3 Learn to Rank中的模型结构
1 重排序算法和多目标排序
多目标排序
score = CTR(α+CVR)(β+Price)...拍脑袋
rules:同⼀XX N出1;活动扶持、新品扶持、低俗打压;流量控制…
Learning to rank
- 三种:
pointwise算ctr从高到低,pairwise比较两个item然后排序,listwise直接出 -
评价指标
MAP:
F1 score:
AUC:
train AUC >> test AUC 过拟合
test AUC >> online AUC 检测模型输入,模型裁剪是不是有问题
nDCG:
判断这个listwise推的好不好 - Bayesian Personalized Ranking
pairwise方法
BPR-MF
BPR-AUC analogy - LambdaMart
LambdaMart = MART + LambdaNet
2008 Yahoo! Learning to Rank Challenge
http://proceedings.mlr.press/v14/chapelle11a/chapelle11a.pdf
《From RankNet to LambdaRank to LambdaMART: an overview》
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.180.634&rep=rep1&type=pdf
迁移学习和multi-task learning
共享特征,共享权重
2 排序和深度学习模型
问题定义
算法演变
- 基于规则
- LR
- CART,RF
- FM
- GBDT/DNN
- 模型融合
大规模特征+线性模型(Google,Baidu)
中小规模特征+非线性模型(Yahoo,Bing,FB,Taobao)
数据优化:Position Bias
DNN实用化
- 搜索+DeepRank
MS-DSSM,MS-DSSM CNN,MS - Deep Crossing - 推荐+DeepRank
- DeepRank
序列类,多媒体类,Attention,知识图谱
3 分布式机器学习系统及其在排序模型中的应用
推荐书籍:分布式机器学习:算法理论与实践
概念
分布式机器学习系统 = 分布式系统 + 机器学习
分布式系统 = 分布式计算MapReduce + 分布式存储HDFS
基本流程
计算量太大:基于共享内存(或虚拟内存)的多线程或多机并行计算
训练数据太多:数据划分, 分配到多个工作节点进行训练
模型规模太大:模型划分, 分配到多个工作节点进行训练
数据和模型划分
数据对训练样本置乱切分
模型:线性模型直接切分,深度模型横向或者纵向切分
通信模块
- 通信的内容
数据并行:子模型或者子模型的更新(梯度), 应用最广泛的分布式机器学习模式
模型并行:节点之间存在较强的依赖关系, 上一个子模型的输出是下一个的输入, 中间结果作为通信内容 - 通信的拓扑结构
基于迭代式MapReduce/AllReduce的通信拓扑:Spark MLlib
基于参数服务器的通信拓扑:Google 的DistBelief,微软的Multiverso,PS-Lite,BytedancePs
基于数据流的通信拓扑:TensorFlow - 通信的步调:同步与异步
具体流程
-
计算并行
-
数据并行
-
模型并行
线性模型:
深度模型:
-
同步和异步SGD
同步:
异步:
例子DistBelief
模型并行,数据并行,异步SGD
https://papers.nips.cc/paper/4687-large-scale-distributed-deep-networks.pdf
4 深度召回和深度模型
itemCF/userCF类, 矩阵分解类,deeplearning类
通过用户历史(点击,收藏,点赞,购买,浏览)找候选topK
如果是新用户可以hot2i,比如曝光top100,点击top100,收藏top100
如何算user2i
1.user2i根据日志统计出有用户行为的user2i
2.有一类svd可以计算user的向量和item向量,根据向量来算user和item的相似度
通过多种方式计算共现,比如共现点击,共现购买,共现收藏,共现曝光
如何计算I2I:同品类,同tag,近似算法过滤
解决方案1:SVD,SVD++,SVD+sideinfo
解决方案2:FM
解决方案3:引入交叉特征
解决方案4:加入历史信息
解决方案融合: