0 推荐技术
1)协同过滤:
(1)基于user的协同过滤:根据历史日志中用户年龄,性别,行为,偏好等特征计算user之间的相似度,根据相似user对item的评分推荐item。缺点:新用户冷启动问题和数据稀疏不能找到置信的相似用户进行推荐。
(2)基于item的协同过滤:根据item维度的特征计算item之间的相似度,推荐user偏好item相似的item。
(3)基于社交网络:根据user社交网络亲密关系,推荐亲密的user偏好的item。
(4)基于模型:LR模型,user和item等维度特征输入给模型训练,label是show:clk,根据预估的pctr进行推荐。DNN模型:见下面。
2)基于内容的过滤:抽取item的有意义描述特征,推荐user偏好item相似度高的item,个人觉得像基于item的过滤。
3)组合推荐:根据具体问题,组合其它几种技术进行推荐。
1 DNN推荐模型
1)特征工程:
用户维度:用户id,性别,年龄和职业。
电影维度:电影id,类型和名称。
2)模型设计:
user和item维度特征embedding,各自的全连接网络结构,最顶层是两个维度网络结构的cosin距离代表相似度。所以为user推荐相似度高的item。
(1) user维度的网络结构,分别将四个特征embedding,并输入全连接层;再将四个全连接输入到全连接层,并定义激活函数为tanh(代码为paddle开源工具)。
(2)item维度网络结构,同user维度一样,分别将三个特征embedding后输入全连接层,再相加输入全连接层(注意title用了cnn)。
(3)最顶层将user和item连接,cosin距离代表了user和item的相似度,并且损失函数为mse。
2 youtube推荐模型
1)大规模推荐的系统由于数据量太大,不能直接进行全连接的排序,所以一般大致分为两个阶段:百万级到百级的触发过滤出一部分,再进行细致排序截断阶段。
2)百万级到百级的触发过滤,模型采用MLP,训练时softmax做多分类,预测时计算与所有视频的相似度,取top K个视频。我认为label可以是show:clk,类似于LR进行模型推荐。
3)排序截断阶段:网络结构与触发阶段一样,只是最顶层是LR,做排序;特征工程方面可以更细致,比如视频ID,上次点击时间等等。
参考:https://github.com/PaddlePaddle/book/tree/develop/05.recommender_system