详细代码放在Deepnote上了
推荐系统实践(新闻推荐)
赛题简介
- what?
根据海量用户的新闻历史点击日志、新闻文章信息、新闻文章embedding向量表示信息等,预测用户最后点击文章的编号【top5】。
其中:
数据部分:用户新闻点击日志包括用户ID、点击时间和新闻ID。比赛将以20万用户的点击日志数据作为训练集,5万用户的点击日志数据作为测试集A,5万用户的点击日志作为测试集B.
新闻文章信息共包含36万篇新闻。
提交结果部分:包含用户ID、预测用户点击新闻文章Top5的article_id【概率由高到低排序】
- how to judge?
MRR :返回的结果集的优劣,跟第一个正确答案的位置有关,第一个正确答案越靠前,结果越好。
赛题理解
结合最近了解的内容,有2种解题思维,一种是点击概率预测,一种是推荐系统预测用户对某产品的打分情况。
-
其中第一种思路是基于历史点击行为预测未来点击行为,以用户、产品相关信息构建特征,以用户是否点击该产品的概率为目标值,建立逻辑回归模型。
-
第二种是协同过滤(CF)+排序得到值得推荐的列表。其中基于用户的userCF方法利用相似用户的打分情况推测用户对某产品的打分情况,而基于产品的itemCF方法则利用构建产品相似度打分体系,向用户推荐与其之前喜好相似的产品实现推荐目的。
其中基于用户的userCF方法存在两个重大问题:a)数据稀疏性导致算法无法找到偏好相似的用户。b)需要维护用户相似度矩阵以便快速的找出Topn相似用户,存储空间随着用户数量的增加而增加,不适合用户数据量大的情况使用。适用于用户少、物品多的场景。
而相比之下,基于用品的itemCF方法因为物品之间的相似性相对比较固定,所以可以预先在线下计算好不同物品之间的相似度,把结果存在表中,当推荐时进行查表,计算用户可能的打分值,可以同时解决上面两个问题。
Item-based算法的预测结果比User-based算法的质量要高一点。
由于Item-based算法可以预先计算好物品的相似度,所以在线的预测性能要比User-based算法的高。
用物品的一个小部分子集也可以得到高质量的预测结果。
- 评估方法
-
逻辑回归模型是分类模型,常用的评价指标包括准确率、覆盖率、ROC曲线和AUC等
-
评价方法可以是用户满意度【量化用户对推荐列表的响应程度】或者预测准确度【以实际行为列表为真值评价推荐列表】。
- 关于海量数据集的处理方法,召回【工程上将海量数据集分组统计成一些特征,从而达到数据集缩减的目的?】和多路并发策略还不懂,可以在后面的学习中完善。
baseline的方案
是基于产品的协同过滤方法(itemCF)。主要思路是
-
从所有的新闻池中统计出热门新闻,当可推荐的内容不足时可以补充缺漏。
-
目标用户点击的新闻与所有新闻池中的新闻之间进行相似性量化,以此量化结果作为排序依据。【涉及到的trick包括用户的多个历史点击相似度累计求和作为评分结果,并对点击活跃的用户进行惩罚IUF】
-
结合1,2的结果估计目标用户的对各新闻的喜好程度,最后排序得到推荐列表。
思路花里胡哨的图示如下。