本文主要介绍基于项目的协同过滤推荐算法的推荐原理、推荐过程、代码实现。
一、基于项目的协同过滤推荐算法推荐原理
基于项目的协同过滤推荐算法也是推荐算法中最基础、最简单、很重要的算法,主要是根据用户对项目的某一种操作行为,构成项目-用户操作行为矩阵,根据操作行为矩阵计算项目之间的相似度,最终为目标用户推荐目标用户有操作行为的预测评分高的项目,作为目标用户感兴趣的项目。
二、基于项目的协同过滤推荐算法推荐过程
基于项目的协同过滤推荐算法推荐过程可分为三个步骤:构建项目-用户操作行为矩阵、计算项目之间似度、获取推荐结果。
1、构建项目-用户操作行为矩阵
我们以用户对项目的评分数据为例,M个项目和N个用户最大有M*N条项目的评分数据,记为矩阵MN,在计算机语言中可以通过一个二维数组来表达array[M][N],项目用数组下标0-M表示,用户用数组下标0-N表示,矩阵MN图形如下所示(0表示用户对项目没有评分):
评分 | 0 | 1 | 2 | 3 | 4 | 5 | … | N |
---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 5 | 2 | 0 | 3 | … | 5 |
1 | 5 | 2 | 4 | 0 | 0 | 0 | … | 0 |
2 | 2 | 5 | 3 | 4 | 2 | 1 | … | 4 |
3 | 0 | 4 | 0 | 0 | 4 | 1 | … | 2 |
… | … | … | … | … | … | … | … | … |
M | 3 | 0 | 4 | 2 | 3 | 2 | … | 1 |
项目-用户评分矩阵可适用于项目-用户浏览记录矩阵、项目-用户浏览时长矩阵、项目-用户播放次数矩阵、项目-用户播放时长矩阵、项目-用户收藏记录矩阵(矩阵中的数据为0没有收藏,1已收藏)等项目-用户操作行为矩阵。
2、计算项目之间相似度
根据项目-用户评分矩阵计算项目之间的相似度有很多种算法,例如余弦算法、修正余弦算法、person皮尔森算法、欧几里得距离公式等算法,这些算法公式很固定,比较简单不再详述,可在百度百科中学习,其中根据项目-用户收藏记录矩阵计算项目之间的相似度需要用到谷本系数算法,该算法主要计算项目之间是否有相同的操作行为。
3、获取推荐结果
为目标用户推荐的项目是目标用户没有评分同时预测评分高的项目,推荐的项目有预测评分,推荐项目的预测评分等于目标用户对其他项目的评分*其他项目与推荐项目的相似度,然后乘积求和,最后乘积之和除以其他项目与推荐项目的相似度之和的值就是推荐项目的预测评分,推荐项目的预测评分越高,目标用户对推荐的项目越感兴趣。
三、代码实现
本文的实现代码以movielens电影评分数据为例,java语言开发。
下载地址:https://download.csdn.net/download/u011291472/11971298
该程序仅供学习和测试使用。
作者专业长期研究各种协同过滤推荐算法,欢迎留言、私信互相交流学习,后续会不断更新不同的协同过滤推荐算法,欢迎关注。