协同过滤算法案例

Posted 漠小浅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了协同过滤算法案例相关的知识,希望对你有一定的参考价值。

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。其每一条记录对应每个数据点上相应的预测值与实际值。

                

                

以上是关于协同过滤算法案例的主要内容,如果未能解决你的问题,请参考以下文章

协同过滤算法案例

推荐系统案例基于协同过滤的电影推荐

案例分享 | 深度学习在花椒直播中的应用 — 神经网络与协同过滤篇

ML之CF:基于MovieLens电影评分数据集利用基于用户协同过滤算法(余弦相似度)实现对用户进行Top5电影推荐案例

推荐算法之模型协同过滤(1)-关联规则

机器学习--CF协同过滤推荐算法原理