传统的协同过滤算法虽然可以很容易地挖掘出用户的兴趣爱好, 但存在数据冷启动和稀疏性问题. 针对这些问题, 提出一种基于用户兴趣模型的推荐算法. 首先通过LDA主题模型训练数据集得到物品-主题概率分布矩阵, 利用物品-主题概率分布矩阵得到用户历史兴趣模型, 然后结合用户历史行为信息和物品内容信息得到用户兴趣模型, 最后计算用户与候选集之间的相似度, 进行TOP-N推荐. 在豆瓣电影数据集上的实验结果表明, 改进后的推荐算法能够更好地处理稀疏数据和冷启动问题, 并且明显提高了推荐质量.
Although traditional collaborative filtering recommendation algorithm can easily find potential users’ interests, it remains cold-start problem and sparsity problem. In order to solve these problems, a new hybrid recommendation algorithm is proposed. Firstly, this study builds topic distribution matrix through the LDA topic model, and user interest matrix is created using topic distribution matrix. Secondly, the user interest model is obtained by combining user’s historical behavior information and user’s content information. Finally, the TOP-N recommendation list is output after calculating the similarity of user and candidate movies. Experiments on the Douban Movies dataset reveals that the results obtained from improved recommendation algorithm are obviously better than that from traditional recommendation algorithm, and it can better deal with sparse data and cold-start problems.
随着互联网特别是移动互联网的飞速发展, 网络上的资源呈指数级增长, 网上资源严重过载[
主题模型[
LDA的概率图模型如
LDA的概率图模型
基于用户的协同过滤算法[
用户相似度的计算是基于共同评分的项目集进行的, 通常利用余弦相似度[
其中,
基于用户的协同过滤算法如算法1.
算法1. 基于用户的协同过滤算法 |
输入: 评分矩阵 |
输出: 目标用户 |
|
for |
for |
|
end for |
|
end for |
|
for |
for |
|
end for |
end for |
return sorted( |
虽然基于用户的协同过滤对物品冷启动问题不敏感, 但需要解决第一推动力问题, 即第一个用户如何发现新物品. 如果将物品随机展示给用户, 显然不太个性化, 因此可以考虑利用物品的内容信息, 将新物品投放给曾经喜欢过和它内容相似的物品的用户[
通过分析用户的历史评分记录来创建用户历史兴趣模型, 进而为用户推荐一组物品. 用户的历史记录是有限的, 因此存在数据稀疏性问题. 针对此问题, 提出了以用户行为和物品内容为基础来构建用户兴趣模型, 从而为用户进行推荐.
首先通过标题、导演、编剧、主演、类型和简介等等来给电影划分属性, 生成电影-属性分布文件. 然后在电影-属性分布上利用LDA主题模型进行建模, 得到电影-主题概率分布, 利用这个分布计算相似性.
给定电影集
对于任意用户, 利用评论过的电影和电影-主题概率分布矩阵Θ进行数学运算, 得到与
其中,
对于任意用户, 利用评论过的电影计算用户行为之间的相似度, 通过协同过滤将相似用户群的历史模型推荐给该用户, 得到与
用户
用户
其中,
对于任意用户, 结合电影的内容信息计算用户内容之间的相似度, 通过协同过滤将相似用户群的历史兴趣模型推荐给该用户, 得到与
设用户
用户
用户
其中,
得到目标用户的UHIM、UAIM和UCIM后, 将三个兴趣模型的主题词权值进行合并, 可得到用户兴趣模型(User Interest Model, UIM), 其数学表达形式为
设目标用户
将候选电影集同目标用户UIM进行相似度计算, 进行TOP-N推荐.
设候选电影
构建用户兴趣模型算法的描述如算法2.
首先将电影内容向量化, 利用LDA模型建模, 生成电影-主题概率分布矩阵Θ; 其次分析用户记录, 构建用户历史兴趣模型UHIM; 再次利用用户记录计算用户行为相似度, 从而构建用户行为兴趣模型UAIM; 最后结合物品内容信息计算用户内容相似度, 进而构建用户内容兴趣模型UCIM, 融合UHIM、UAIM和UCIM生成用户兴趣模型UIM.
算法2. 构建用户兴趣模型的算法 |
输入: 电影-主题概率分布矩阵Θ,用户集 |
输出: 目标用户 |
|
|
|
// calculate |
for |
|
end for |
|
// calculate |
for |
for |
|
end for |
|
|
end for |
// calculate |
for |
end for |
for |
|
end for |
// calculate |
|
while |
|
|
|
end while |
|
|
// calculate |
for |
|
end for |
for |
|
end for |
// calculate |
|
return |
实验数据采用豆瓣电影网的1337部电影, 1535个用户, 109 398条评分记录作为实验数据集.
本文使用离线实验方法进行评测[
准确率计算如式(11)所示.
(1) 主题个数
利用LDA主题模型进行建模时, 需要设定主题个数
不同的主题个数对应的召回率、准确率和
主题个数 | 10 | 15 | 20 | 25 | 30 |
召回率 | 0.165 | 0.187 | 0.206 | 0.185 | 0.176 |
准确率 | 0.289 | 0.305 | 0.327 | 0.3 | 0.291 |
0.2100 | 0.2318 | 0.2527 | 0.2288 | 0.2193 |
(2)最近邻
构建UAIM和UCIM时需要设置最近邻的个数,
不同的
相似用户数 | 10 | 20 | 30 | 40 | 50 |
召回率 | 0.193 | 0.202 | 0.214 | 0.209 | 0.198 |
准确率 | 0.309 | 0.323 | 0.336 | 0.33 | 0.324 |
0.237 | 0.248 | 0.2614 | 0.2559 | 0.2457 |
(3) 不同推荐方法下召回率、准确率和
召回率对比
准确率对比
通过上述的对比可以看出, 本文采用的方法在推荐质量上要优于传统的推荐算法, 从而证明了该模型的可行性.
本文针对传统协同过滤算法中面临的数据冷启动和稀疏性的问题, 提出了一种基于用户兴趣模型的电影推荐算法, 该算法首先利用用户记录和物品信息构建用户历史兴趣模型, 然后使用协同过滤算法挖掘出用户行为兴趣模型和用户内容兴趣模型, 最后将三种模型进行融合, 再与候选电影集进行相似度计算. 最后通过实验验证, 表明本文算法在一定程度上改善了数据稀疏性问题, 提高了算法的推荐质量. 面对日益增多的用户, 数据量的急剧增加, 算法的扩展性问题成为制约推荐系统实施的重要因素, 尤其当用户量达到一定水平时, 用户相似度的计算量是巨大的, 传统的推荐算法会遇到严重的瓶颈问题, 该问题解决不好, 将会直接影响推荐系统的质量, 那么下一步的重点是解决算法的扩展性问题.
胡勋, 孟祥武, 张玉洁, 等. 一种融合项目特征和移动用户信任关系的推荐算法. 软件学报, 2014, 25(8): 1817–1830.
曹一鸣. 协同过滤推荐瓶颈问题综述. 软件, 2012, 33(12): 315–321.
陶俊, 张宁. 基于用户兴趣分类的协同过滤推荐算法. 计算机系统应用, 2011, 20(5): 55–59.
Kim HN, Ji AT, Ha I. Collaborative filtering based on collaborative tagging for enhancing the quality of recommendation. Electronic Commerce Reserch and Applications, 2010, 9(1): 73–83
Schein A, Popescul A, Ungar LH, et al. Methods and metrics for cold-start recommendation. Reserch and Developpment in Information Retrieval, 2012, 22(1): 253–260.
Adomavicius G, Tuzhilin A. Toward the next generation of recommender systems: a survey of the state-of-the-art and possible extensions. IEEE Trans on Knowledge & Data Engineering, 2015, 17(6): 734–749.
冷亚军, 陆青, 梁昌勇. 协同过滤推荐技术综述. 模式识别与人工智能, 2014, 27(8): 720–734.
汪静, 印鉴, 郑利荣, 等. 基于共同评分和相似性权重的协同过滤推荐算法. 计算机科学, 2010, 37(2): 99–104.
董立岩, 王越群, 贺嘉楠, 等. 基于时间衰减的协同过滤推荐算法. 吉林大学学报(工学版), 2017, 47(4): 1268–1272.
刘毓, 何锐. 一种改进SlopeOne的学习推荐算法. 西安邮电大学学报, 2017, 22(4): 105–108.
张峻玮, 杨洲. 一种基于改进的层次聚类的协同过滤用户推荐算法研究. 计算机科学, 2014, 41(12): 176–178.
姚平平, 邹东升, 牛宝君. 基于用户偏好和项目属性的协同过滤推荐算法. 计算机系统应用, 2015, 24(7): 15–21.
高娜, 杨明. 嵌入LDA主题模型的协同过滤推荐算法. 计算机科学, 2016, 43(3): 57–61, 79.
黄璐, 林川杰, 何军, 等. 融合主题模型和协同过滤的多样化移动应用推荐. 软件学报, 2017, 28(3): 708–720.
唐晓波, 谢力. 基于主题的用户兴趣模型的构建及动态更新. 情报理论与实践, 2016, 39(2): 116–123.
卢露, 朱福喜, 高榕, 等. 基于用户-内容主题模型的兴趣点联合推荐算法. 计算机工程与应用, 2018, (4):154–159.
廉涛, 马军, 王帅强, 等. LDA-CF: 一种混合协同过滤方法. 中文信息学报, 2014, 28(2): 129–135, 150.
吴毅涛, 张兴明, 王兴茂, 等. 基于用户模糊相似度的协同过滤算法. 通信学报, 2016, 37(1): 198–206.
杨武, 唐瑞, 卢玲. 基于内容的推荐与协同过滤融合的新闻推荐方法. 计算机应用, 2016, 36(2): 414–418.