协同过滤推荐算法(java原生JDK实现-附源码地址)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

协同过滤推荐算法(java原生JDK实现-附源

码地址)

一、项目需求

1.需求链接

https:///getStart/information.htm?raceId=231522

2.需求内容

训练数据包含了抽样出来的一定量用户在一个月时间(11.18~12.18)之内的移动端行为数据(D),评分数据是这些用户在这个一个月之后的一天(12.19)

对商品子集(P)的购买数据。参赛者要使用训练数据建立推荐模型,并输出用户在接下来一天对商品子集购买行为的预测结果。

评分数据格式

具体计算公式如下:参赛者完成用户对商品子集的购买预测之后,需要将结果放入指定格式的数据表(非分区表)中,要求结果表名为:tianchi_mobile_recommendation_predict.csv,且以utf-8格式编码;包含user_id 和item_id两列(均为string类型),要求去除重复。例如:

评估指标

比赛采用经典的精确度(precision)、召回率(recall)和F1值作为评估指标。具体计算公式如下:

其中PredictionSet为算法预测的购买数据集合,ReferenceSet为真实的答案购买数据集合。我们以F1值作为最终的唯一评测标准。

二、协同过滤推荐算法原理及实现流程

1.基于用户的协同过滤推荐算法

基于用户的协同过滤推荐算法通过寻找与目标用户具有相似评分的邻居用户,通过查找邻居用户喜欢的项目,推测目标用户也具有相同的喜好。基于用户的协同过滤推荐算法基本思想是:根据用户-项目评分矩阵查找当前用户的最近邻居,利用最近邻居的评分来预测当前用户对项目的预测值,将评分最高的N 个项目推荐给用户,其中的项目可理解为系统处理的商品。其算法流程图如下图1所示。

基于用户的协同过滤推荐算法流程为:

●构建用户项目评分矩阵

R={r1,r2……r m},T:m×n的用户评分矩阵,其中r={r i,1,r i,2,……,r i,n}为用户U i的评分向量,R i,j代表用户U i对项目I j的评分。

●计算用户相似度

基于用户的协同过滤推荐算法,需查找与目标用户相似的用户。衡量用户之间的相似性需要计算每个用户的评分与其他用户评分的相似度,即评分矩阵中的用户评分记录。每个用户对项目的评分可以看作是一个n维的评分向量。使用评分向量计算目标用户U i与其他用户U j之间的相似度sim(i,j),通常计算用户相似度的方法有三种:余弦相似度、修正的余弦相似度和皮尔森相关系数。

●构建最近邻居集

最近邻居集Neighor(u)中包含的是与目标用户具有相同爱好的其他用户。为选取邻居用户,我们首先计算目标用户u 与其他用户v的相似度sim(u,v),再选择相似度最大的k个用户。用户相似度可理解为用户之间的信任值或推荐权重。通常,sim(u,v)∈[1,1]。用户相似度为1表示两个用户互相的推荐权重很大。如果为-1,表示两个用户的由于兴趣相

差很大,因此互相的推荐权重很小。 ● 预测评分计算

用户a 对项目i 的预测评分 p(a,i)为邻居用户对该项目评分的加权评分值。显然,不同用户对于目标用户的影响程度不同,所以在计算预测评分时,不同用户有不同的权重。计算时,我们选择用户相似度作为用户的权重因子,计算公式如下:

p(a,i)=⎺R i +

(R b ,i −⎺R b )×sim (a,b)

b∈Neighor (u ) |sim (a,b)|

b∈Neighor (1)

基于用户的协同过滤推荐算法实现步骤为: ● 实时统计user 对item 的打分,从而生成user-item

表(即构建用户-项目评分矩阵);

● 计算各个user 之间的相似度,从而生成user-user

的得分表,并进行排序; ● 对每一user 的item 集合排序;

● 针对预推荐的user ,在user-user 的得分表中选择

与该用户最相似的N 个用户,并在user-item 表中选择这N 个用户中已排序好的item 集合中的topM ; ● 此时的N*M 个商品即为该用户推荐的商品集。

2. 基于项目的协同过滤推荐算法

基于项目的协同过滤推荐算法依据用户-项目评分矩阵通过计算项目之间的评分相似性来衡量项目评分相似性,找到与目标项目最相似的n 个项目作为最近邻居集。然后通过对目标项目的相似邻居赋予一定的权重来预测当前项目的评分,再将得到的最终预测评分按序排列,将评分最高的N 个项目推荐给当前用户,其中的项目可理解为系统处理的商品。其算法流程如下图2所示。

基于项目的协同过滤推荐算法流程为:

首先,读取目标用户的评分记录集合I u ;然后计算项目i 与I u 中其他项目的相似度,选取k 个最近邻居;根据评分相似度计算公式计算候选集中所有项目的预测评分;最后选取预测评分最高的N 个项目推荐给用户。

基于项目的协同过滤推荐算法预测评分与其他用户评分的加权评分值相关,不同的历史评分项目与当前项目i 的相关度有差异,所以在进行计算时,不同的项目有不同的权重。评分预测函数p(u,i),以项目相似度作为项目的权重因子,得到的评分公式如下:

p(u,i)=⎺R u +

(R u ,j −⎺R u )×sim (i,j)

j ∈I u |sim (i,j)|

j ∈I u (2)

基于项目的协同过滤推荐算法实现步骤为: ● 实时统计user 对item 的打分,从而生成user-item

表(即构建用户-项目评分矩阵);

● 计算各个item 之间的相似度,从而生成item-item

的得分表,并进行排序; ● 对每一user 的item 集合排序;

● 针对预推荐的user ,在该用户已选择的item 集合

相关文档
最新文档