使用概率矩阵模型在推荐系统中整合多种信息
2013-12-23 00:54
239 查看
做推荐时,往往会有不同的数据可用。如Netflix数据集中,有用户的显示评分信息(1-5),也有用户隐式评分信息(即用户观看记录,但没有评分);在上下文广告推荐中,有用户访问网页信息R1、用户点击广告信息R2和广告与网页关联度信息R3。那如何集成这些不同的信息,来做更好的推荐呢?
首先,SVD++算是一种集成。它通过在原有评分矩阵分解的基础上集成了隐式评分信息,但它的集成过程不是十分直观。若换成上下文广告推荐,要通过启发式的方法集成上述3个矩阵就变得更加困难了。不过,初步的想法是:对每个矩阵都进行latent semantic factor, 将R1分解成用户特征矩阵U和网页特征矩阵W,将R2分解成U和广告特征矩阵A,将R3分解成A和W。可以看到,这三个矩阵之间是有共享隐语义信息的。这强烈暗示着我们能把这三个矩阵结合起来,但具体如何做?目前据我所知,一个有效的模型是概率矩阵分解。
[1]如果将每个矩阵里的分数分别建成一个高斯分布,那么可以很自然地将不同矩阵使用联合概率分布结合起来。优化目标和单个高斯分布是一样的:使联合概率最大[1]。
采用同样的思想和方法,[2]将社交网络之中的trust信息同评分矩阵结合起来。它将用户之间的信任矩阵同样分解成用户特征矩阵U与另一个矩阵Z。虽然推荐准确度上升了,但个人觉得这个模型缺少一个合理地解释。因为矩阵Z的含义未知。我们知道矩阵U代表用户的偏好,“它与物品属性相乘得到用户对物品的评分”很合理。但用户偏好与什么相乘会得出用户对其他人的信任度呢?一个可能的解释是,一个用户会把另一个用户标注为信任的前提是,那个人跟他有相同的兴趣爱好。
最后,[3]中作者指出,以往的推荐模型将所有用户的评分同等对待。但要知道,有些评分是不能客观地反应一个物品的真正质量的。如,有些评分是很subjective的。于是作者很巧妙在概率模型中改变方差,引入评分质量以提高推荐的质量。具体模型可以参见论文,这里说下这个改进基于的intuition:对于质量好的实际评分,隐语义模型得出的预测应该会与该评分比较接近;而对于质量差的实际评分,隐语义模型的预测与该评分的差别就可能会较大—— 因为这个时候,打分的用户可能带入了自身的偏见,单从用户喜好(这正是隐语义要做的事)无法捕捉这种偏见。因此,高质量评分允许小方差,低质量评分允许大方差。那评分的质量如何得来?[3]使用的数据中,每条评分记录包含了用户ID,物品ID,用户的评分,用户的评论,以及其他用户给该条评论点赞的次数,等。由于点赞次数无法准确反应一个评论的质量:因为新来的高质量评论,点赞次数也会很少。因此作者将点赞次数多的评分作为训练样本,训练一个回归模型给其他评论打质量分。质量模型使用了两类feature:文本信息(bag-of-word特征,用LDA提取的topic特征)和用户元数据信息(打分用户平均获得的赞的个数,评论文本长度,评论的时间等)。作者指出,用户元数据信息能捕捉绝大多数的质量信息;相反,LDA提取的topic特征趋向于捕捉语义信息,而不擅长捕捉质量信息(也就是说,质量有区别的评论在用词上区别不大)。
参考文献:
[1] 基于联合概率矩阵分解的上下文广告推荐算法
[2] SoRec: Social Recommendation Using Probabilistic Matrix Factorization
[3] Review Quality Aware Collaborative Filtering
首先,SVD++算是一种集成。它通过在原有评分矩阵分解的基础上集成了隐式评分信息,但它的集成过程不是十分直观。若换成上下文广告推荐,要通过启发式的方法集成上述3个矩阵就变得更加困难了。不过,初步的想法是:对每个矩阵都进行latent semantic factor, 将R1分解成用户特征矩阵U和网页特征矩阵W,将R2分解成U和广告特征矩阵A,将R3分解成A和W。可以看到,这三个矩阵之间是有共享隐语义信息的。这强烈暗示着我们能把这三个矩阵结合起来,但具体如何做?目前据我所知,一个有效的模型是概率矩阵分解。
[1]如果将每个矩阵里的分数分别建成一个高斯分布,那么可以很自然地将不同矩阵使用联合概率分布结合起来。优化目标和单个高斯分布是一样的:使联合概率最大[1]。
采用同样的思想和方法,[2]将社交网络之中的trust信息同评分矩阵结合起来。它将用户之间的信任矩阵同样分解成用户特征矩阵U与另一个矩阵Z。虽然推荐准确度上升了,但个人觉得这个模型缺少一个合理地解释。因为矩阵Z的含义未知。我们知道矩阵U代表用户的偏好,“它与物品属性相乘得到用户对物品的评分”很合理。但用户偏好与什么相乘会得出用户对其他人的信任度呢?一个可能的解释是,一个用户会把另一个用户标注为信任的前提是,那个人跟他有相同的兴趣爱好。
最后,[3]中作者指出,以往的推荐模型将所有用户的评分同等对待。但要知道,有些评分是不能客观地反应一个物品的真正质量的。如,有些评分是很subjective的。于是作者很巧妙在概率模型中改变方差,引入评分质量以提高推荐的质量。具体模型可以参见论文,这里说下这个改进基于的intuition:对于质量好的实际评分,隐语义模型得出的预测应该会与该评分比较接近;而对于质量差的实际评分,隐语义模型的预测与该评分的差别就可能会较大—— 因为这个时候,打分的用户可能带入了自身的偏见,单从用户喜好(这正是隐语义要做的事)无法捕捉这种偏见。因此,高质量评分允许小方差,低质量评分允许大方差。那评分的质量如何得来?[3]使用的数据中,每条评分记录包含了用户ID,物品ID,用户的评分,用户的评论,以及其他用户给该条评论点赞的次数,等。由于点赞次数无法准确反应一个评论的质量:因为新来的高质量评论,点赞次数也会很少。因此作者将点赞次数多的评分作为训练样本,训练一个回归模型给其他评论打质量分。质量模型使用了两类feature:文本信息(bag-of-word特征,用LDA提取的topic特征)和用户元数据信息(打分用户平均获得的赞的个数,评论文本长度,评论的时间等)。作者指出,用户元数据信息能捕捉绝大多数的质量信息;相反,LDA提取的topic特征趋向于捕捉语义信息,而不擅长捕捉质量信息(也就是说,质量有区别的评论在用词上区别不大)。
参考文献:
[1] 基于联合概率矩阵分解的上下文广告推荐算法
[2] SoRec: Social Recommendation Using Probabilistic Matrix Factorization
[3] Review Quality Aware Collaborative Filtering
相关文章推荐
- 使用矩阵分解(SVD)实现推荐系统
- 推荐系统---基于概率的矩阵分解(PMF)
- 【推荐系统】概率矩阵分解 probabilistic matrix factorization
- Linux使用ps查看系统进程信息的多种姿势
- 推荐系统之概率矩阵分解的详细推导过程(Probabilistic Matrix Factorization,PMF)
- 推荐系统:矩阵分解与邻域的融合模型
- 在Linux系统中使用lsblk和blkid显示设备信息的方法
- 使用微信公众平台发送报警信息(Python版) 推荐
- 使用lvm2整合系统磁盘资源
- 使用C#获得系统信息
- 强烈推荐使用 Hessian/Burlap 作为J2EE分布式系统内部 的 远程服务方案
- ORA-01552: 非系统表空间 'USERS' 不能使用系统回退段的处理 推荐
- 【译文】构建一个图书推荐系统 – 基础知识、knn算法和矩阵分解
- windows 重装系统后必装的软件(根据个人使用情况整理,欢迎读者在评论推荐其他好用的软件)
- SQL2000系统表、存储过程、函数的功能介绍及应用2009年01月21日 星期三 11:38虽然使用系统存储过程、系统函数与信息架构视图已经可以为我们提供了相当丰富的元数据信息,但是对于某些特殊的元数据信息,我们仍然需要直接对系统表进行查询。因为SQL
- linux系统使用python获取内存使用信息脚本分享
- ERP系统为什么要使用集成的数据和信息平台?
- 情境感知(上下文信息)推荐系统---《推荐系统技术、评估及高效算法》---读书笔记(7)
- Spark推荐系统中用户-物品模型
- 使用Python收集获取Linux系统主机信息