Pyspark 平台的协同过滤推荐算法应用与实现

摘 要: 为解决传统的基于矩阵分解协同过滤推荐算法,在大量数据的情况下,单节点计算速度慢以及特征矩阵稀疏 问题,充分对大数据时代下的 Pyspark 大数据处理平台原理及架构进行研究,并对 ALS 协同过滤算法原理研究与其在 Pyspark 平台上的实现推荐系统应用. 实验结果表明,基于 Pyspark 平台的 ALS 算法,通过调节正则化参数为 0. 01、增加 并行化分块计算的块数、减少隐含语义因子的个数,能使推荐算法的 RMSE 最小,并能更快速精准有效推荐给用户他 们感兴趣的商品.

Spark 是用面向函数式变成语言( Scala) 编写的, 并提供了几个交互式的 API. Pyspark 即是 Spark 开发 者为 python 语言开发者提供的 pythonAPI,与 Spark 相 似,PySpark 的中心数据抽象是一个“弹性分布式数据 集”( RDD) ,它只是一个 Python 对象的集合,图 1 给 出了 Pyspark 与 Spark 的关系示意图. 选择 Pyspark 的 原因是对于熟练 Python 的程序员,Python 自身的轻量 级、简单的优势,结合 Spark 的特点,得到很多程序员 的青睐.

Pyspark 平台的协同过滤推荐算法应用与实现_第1张图片

 Pyspark 平台的协同过滤推荐算法应用与实现_第2张图片

a) 在 Python 引擎中,SparkContext 通过 Py4J 连接 Java 的解释器 JVM,并且创建一个 JavaSparkContext.

b) Py4J 通过引擎,把本地的 Python 与 JavaSparkContext 的对象进行互相通信.

c) Pyspark 的 RDD 在 Python 下的转化被映射成 Java 环境下的 PythonRDD. d) 在远程的 worker 机器上 PythonRDD 对象启动 子进程,并且使用 Pipes 与启动的这些子进程进行通 信,通过这样的关系为用户传递代码和数据.

2 协同过滤推荐算法 协同过滤模算法摸型: 假设有一个用户数据集: U = { u1,u2,u3,…,uk } ,收 集 用 户 买 过 商 品: ,用评分矩阵 Mn×k 表示用户对商 品的评价[13]、打分、点赞等方式,Mu,i 表示第 u 个用 户对第 i 个商品的综合评分,评分相近的表示用户喜 欢的商品相似.

Mn×k = UT n×iIi×k .

( 1) 2. 1 基于隐含的 ALS 协同过滤算法 基于改进的协同过滤算法摸型: ALS( alternatingleast-squares) 继承协同过滤算法模型的思想,用户与 用户对商品的打分构成隐含的评分矩阵,其中隐含因 子就是用户对一些物品的偏好. 基于隐含的 ALS 协同过滤算法原理: 由于一个用 户不能给所有物品打分,因此决定了评分矩阵高度稀 疏,因此假设一定存在两个低秩矩阵 U 、I 尽可能逼 近 M ,即 Mn×k ≈ UT n×iIi×k . ( 2) 

 

你可能感兴趣的:(推荐系统,推荐算法,spark,big,data)