协同过滤算法

本文介绍协同过滤算法的不同实现方式,包括User-based、Item-based及Model-based,并详细解析了基于Spark MLlib的协同过滤推荐系统实现过程,特别是ALS算法及其在电影推荐场景的应用。
摘要由CSDN通过智能技术生成

1,,实现User-based协同过滤算法:

       数据格式:【用户id】,【项目id】,【评分】

       

2,实现Item-based协同过滤算法

      

3,基于奇异值分解实现Model-based协同过滤算法

     

4,基于Spark的MLlib实现协同过滤算法

4.1 MLlib的推荐算法工具

      org.spache.Spark.mllib.recommendation中提供了3个用于协同过滤推荐的数据类型,即Rating、ALS和MatrixFactorizationModel

             Rating:Rating对象是一个用户、项目和评分的三元组。

             ALS:ALS提供了求解带偏置矩阵分解的交替最小二乘算法

             MatrixFactorizationModel:ALS求解矩阵分解返回的结果类型

             作为训练结果的MatrixFactorizationModel中提供了许多推荐操作。

                   val productFeatures:RDD[(Int,Array[Double])]:返回矩阵分解的项目特征

                   val userFeatures:RDD[(Int,Array[Double])]:返回矩阵分解的用户特征

                   def predict(userProducts:RDD[(Int,Int)]):RDD[Rating]:根据参数中需要预测的用户-项目,返回预测的评分结果

                   def predict(user:int,product:int):预测用户user对项目product的评分

                   def recommendProducts(user:Int,num:Int):Array[Rating]:为用户user推荐个数为num的商品

                   def recommendUsers(product:Int,num:Int):Array[Rating]:为项目product推荐可能对其感兴趣的num个用户

4.1.2 协同过滤推荐实例

         

5,案例:使用Mllib协同过滤实现电影推荐

                MovieLens数据集可以在官网https://movielens.org下载到

                movies.csv 格式

                                             movieID,Title,Generes

                rating.csv格式

                                            userID,MovieID,Rating,Timestamp


                

                

                


                

               也可以使用Spark MLlib内置的求解RMSE和MSE

               首先,我们使用RegressionMetrics来求解MSE和RMSE得分。实例化一个RegressionMetrics对象需要一个键值对类型的RDD。其每一条记录对应每个数据点上相应的预测值与实际值。

                

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值