初识推荐系统的小白一枚,在看推荐系统遇上深度学习系列文章时,(一)–FM模型理论和实践:https://github.com/dox1994/recommend_system/blob/master/FM/fm.ipynb,
发现作者使用RMSE作为损失函数,一开始不太理解,查阅资料后,发现这个例子属于典型的评分预测问题。
推荐系统的目标
通过用户的历史行为来建模用户的偏好,进而选出用户最喜爱的TopN个item,实际是对所有item的排序,选出前N个。
评分预测和TopN的关系
评分预测(rating prediction):实际是我们知道用户对item的显示反馈,比如用户给电影打分等,对于这种评分预测场景,我们采用point-wise的方式对user和item进行建模,及考虑单个user和单个item之间的关系,这种问题的损失函数通常使用RMSE,即期望预测评分与真实评分差距最小,但是基于评分预测的思路,我们并不能得到TopN,原因是评分预测的损失和目标不一致,评分预测是point-wise的方式,而TopN实际上是list-wise方法
所以作者认为,TopN推荐是推荐的终极目标,评分预测是实现TopN的一种近似方法
point-wise方法:
特点
- 输入空间中样本是单个user(和对应的item)构成的特征向量
- 输出空间中样本是单个user(和对应的item)构成的特征向量
- 假设空间中样本是打分函数
- 损失函数评估单个item的预测得分和真实得分之间的差异
缺陷 - ranking追求的是排序结果,并不要求精确打分,只要求相对打分即可
- point-wise类方法并没有考虑user对应的item之间的内部依赖性,一方面,导致输入空间内样本不是iid的,违反ML的基本假设,另一方面,没有充分利用这种样本间的结构性,其次,当不同的item对应不同数量的item时,整体的loss将会被对应item数量多的user组所支配
- 损失函数也没有model到预测排序中的位置信息,因此,损失函数可能无意的过多强度那些不重要的item,即那些排序在后面,对用户体验影响较小的item
list-wise方法:
特点
- 输入空间中样本是同一user对应的所有item构成的多个特征向量
- 输出空间样本是这些items(和对应的user)的相关度排序
- 假设空间中样本是多变量函数,对于所有的item得到其排列,在实践中,通常是一个打分函数,根据打分函数对所有的item的打分进行排序,得到item相关度的排序
- 损失函数分为两类,一类是直接和评价指标相关的,,还有一类是不相关的,具体可看参考资料2
缺陷 - 一些ranking算法需要基于排列在计算loss,从而使得训练复杂度较高
参考资料: