推荐系统-CTR预估
简介
推荐系统通常分为召回和排序两个步骤
召回:粗排选取合适的内容,可以通过协同过滤,兴趣tag,内容最热等方式
排序(CTR预估):使用一个点击率预估模型(输入用户特征,内容特征,用户内容交叉特征等)对召回出来的内容进行排序
Deep & Wide
LR是一个简单的线性模型,其不具备学习高阶特征的能力
而通过DNN+embedding可以较好的学习到更抽象的特征达到泛化的效果
在CTR预估任务中结合LR和DNN实现记忆+泛化的效果
实际效果
DeepFM
2way-FM就是在线性回归的基础上加一个特征交叉系数矩阵w,意在自动学习组合特征
实际上会对矩阵w做分解,变成向量的乘积,这样可以提高效率
实际上还有一种叫FFM的方法针对不同特征域有单的向量v
所以结合FM和DNN就能得到一个新的CTR模型DeepFM
FM和DNN共享了embedding层
实际效果
DNN for YouTube
借鉴了Word2Vec的思想,使用历史行为预测下一个点击
http://paddlepaddle.org/docs/develop/book/05.recommender_system/index.cn.html
视频向量即softmax层的W参数
本质上就是一个类似于CBOW的多分类问题
DSSM
深度语义匹配模型
DSSM最大的卖点在检索场景下使用点击数据来训练语义层次的匹配
Q是用户的查询
D是文档的特征
Word Hashing 是一个解决字典太大的trick参考
http://www.mamicode.com/info-detail-1909443.html
在推荐场景下Q可以理解为用户特征
而D为内容的特征
GBDT + LR
因为决策树可以学习高阶特征
所以使用GBDT构造一个二分类问题进行特征预处理
然后把每颗子树的输出(根据最后的叶节点位置进行one hot编码)交给LR进行 预测
GBDT 二分类
对于XGBoost的实现个人认为应该是
把目标损失函数定义为交叉熵损失函数
然后预测概率值
Deep & Cross
DCN模型的输入包括了sparse特征,dense特征, embedding特征,而模型训练阶段分成两个部分,右边部分是传统的DNN模型的deep层,其中每个deep层后都接入relu激活层, 把原始特征通过多个隐层使得特征变得更加高阶,而左边的cross layer通过一个递归的特征组合公式
每一层的特征都由其上一层的特征进行交叉组合,并把上一层的原始特征重新加回来。这样既能做特征组合,自动生成交叉组合特征,又能保留低阶原始特征,随着cross层的增加,是可以生成任意高阶的交叉组合特征(而DeepFM模型只有2阶的交叉组合特征)的,且在此过程中没有引入更多的参数,有效控制了模型复杂度。最后把cross层的输出结果和deep层的输出结果组合到一块来进行LR模型训练,在我们的业务场景下,就是预估user_id在<catid, item>pair下的点击概率。