基于Spark实现推荐算法-4:基于物品的协同过滤(实现篇)

本文介绍了基于Spark的Item-Based协同过滤算法实现,包括相似度计算、预测值求解及详细步骤,通过Scala编程实现从Hive数据仓库读取数据,最终进行用户评分预测和推荐。
摘要由CSDN通过智能技术生成

算法设计与实现

基于物品的协同过滤又称Item-Based CF.
基于Spark的Item-Based CF算法其实现原理和步骤与经典方法基本一致,不同的地方主要在于具体步骤内的并行化计算。

相似度算法

在Spark MLlib中提供了余弦相似度的分布式实现,org.apache.spark.mllib.linalg.distributed包中的IndexedRowMatrix是一个分布式矩阵类,其中提供了一个columnSimilarities方法用于计算该矩阵各列之间的余弦相似度。

预测值计算

采用加权求和的方法计算预测值.

实现步骤:

步骤分解

Step 1:读取用户评分数据,设用户数为U,物品数目为I,将数据转换为以用户为行,物品为列的二维矩阵R,R维度为(U×I)。矩阵的每一个数据表示某个用户对特定物品的评分。

Step 2:计算R每列之间的相似度,可以得到维度(I×I)的矩阵S。S(i,j)表示物品i和物品j之间的相似度。

Step 3:使用预测值计算公式计算用户对未评分物品的预测评分。得到预测评分矩阵P,P维度为(U×I),P(i,j) 表示用户i对物品j的预测评分。

Step 4:对用户i进行推荐。找出P的第i行中评分最高的前K个物品推荐给用户。K是需要推荐的物品数量。

基于Spark的实现

鉴于从Spark 2.0.0开始基于Dataset的API成为了主要编程API,本文采用Dataset的API进行实现,使用的语言为Scala。基于Spark平台Item

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值