欲下载本文相关的代码,请移步留言区
/前言/
传统的推荐系统使用用户-项目匹配矩阵来预测用户对项目的兴趣程度,矩阵如上图所示,推荐算法的实现过程可以看作是填补矩阵中缺失值的过程。
其中比较占主流的方法是矩阵分解(matrix factorization),从2009年的Netflix推荐算法大赛至今,矩阵分解家族延伸出来了各种各样的算法,比如概率矩阵分解、社会化矩阵分解、基于信任关系的矩阵分解和结合产品的社会化矩阵分解等等,前几期我们已经实现了部分矩阵分解的算法:
读书笔记(27)| 推荐系统之概率矩阵分解原理及实现
读书笔记(31)| 推荐系统之社会化矩阵分解原理及实现
今天就让我们来实现一下从矩阵分解方法延伸出来的又一新的方法Item Co-occurrence算法。
1. Introduction
阅读文章:
Factorization Meets the Item Embedding: Regularizing Matrix Factorization with Item Co-occurrence
DOI: http://dx.doi.org/10.1145/2959100.2959182
在社会化矩阵分解的基础之上,这篇文章提出了Item Co-occurrence factorization模型,与社会化矩阵分解不同的是,该模型将用户-项目匹配矩阵和项目-项目共现矩阵通过共享项目潜因子进行联合分解,来预测用户-项目匹配矩阵中的空值,过程如下图所示。其中,左下的矩阵是用户-项目的匹配矩阵,矩阵里的元素表示用户给项目的打分,分值越高表示用户对项目的偏好程度越大,右下矩阵是项目-项目共现矩阵。
比较本文的方法与weight matirx factorization(wmf)方法,结果显示当用户在平台累积的行为比较少(冷用户)的时候本文的算法可以得到更准确的推荐结果,但是如果用户在平台累积的行为数据较多(活跃用户)的时候,其效果却和wmf差不多,这是因为对于一个庞大的数据集,活跃用户数目是非常少的,这会增加标准误差。
在应用场景方面,本文的方法可以应用在ArXiv的论文推荐,豆瓣、Netflix、MovieLens等平台上的电影推荐,网易云等音乐平台上的歌曲、歌单推荐,还有各大电商平台上的产品推荐等。并且在数据较稀疏的情况下,该方法的表现较其他方法要好,所以可以用于对刚进入上述平台的用户产生推荐列表。
2. Model
1)Matrix factorization
矩阵分解通过将目标矩阵分解成两个小因子矩阵的乘积来预测目标矩阵中的空值,在下图中我们将用户-项目匹配矩阵分解成用户隐因子和项目隐因子矩阵,在用户隐因子矩阵中每一行代表一个用户的因子,同理项目隐因子矩阵中每一行也表示项目的隐因子。
2)Item embedding
3)The Co-Factor model
4)coordinate updates
3.Algorithm
1)Data preprocessing
数据获取
数据分布
数据过滤和拆分
保存结果
2)Train Co-Factor Model
构造PPMI矩阵
生成co-occurrence矩阵
构建SPPMI矩阵
Train the model
上图中Validation NDCG@k随着迭代进行逐渐提高,这说明通过不断学习,模型预测的效果越来越好,DCG原先是一个衡量搜索引擎算法的指标,在这里我们将DCG的结果归一化后得到NDCG,其值越接近1表示推荐准确度越好。
3)Test the model
从测试的结果来看MAP@100表示第100个SPPMI矩阵预测出平均精度均值为0.0545,是用来衡量算法精度的好坏的,在这里说一下虽然这个数字看上去不是很好,但去阅读原文你会发现作为文章的baseline算法weighted matrix factorization (WMF)的MAP@100只有0.047。
- END -