推荐系统通过分析海量信息来挖掘、 学习用户的兴趣或喜好,结合推荐技术及系统支撑框架,为每个用户推荐其感兴趣的产品或内容。 目前解决“信息过载”的两种重要的手段即是利用推荐系统与搜索引擎[1],两者均能协助用户获取感兴趣的内容, 不同于搜索引擎, 推荐系统在进行深度挖掘、分析用户数据,推测用户兴趣和喜好时是通过选用合适的推荐算法来进行处理, 把用户主动搜索的方式转化为系统主动推送其感兴趣的内容或产品,为用户提供智能化、个性化的推荐服务。
1 Spark 框架
推荐系统目前已经广泛应用于电影、 音乐、电子商务等网站中,并取得较好的推荐效果,推荐系统以往是基于Hadoop 框架下的MapReduce 的分布式计算平台的,能解决海量数据的高效存储和分布式计算问题, 但是随着网络和大数据技术的发展,对推荐系统的计算速度、实时性要求更高,而传统的基于Hadoop 计算平台不能满足需要,Spark 框架以其计算速度快、 实时性强等特点, 逐渐取代MapReduce 成为目前热门的推荐系统框架。
Apache Spark 是用于针对大规模数据处理的一种统一分析引擎[2]。 Spark 由Scala 语言实现,支持Python、Java、Scala 等语言开发, 可以和其他大数据工具如Hadoop、Kafka 等很好地整合。 Spark是基于内存计算的,且具有易操作的特点,能够快速、 简洁、 高效的进行并行化应用的开发[3]。 与Hadoop 相比,Spark 因其数据结构RDD 强大的计算能力, 对于处理数据挖掘与机器学习算法更加适合[4],能够更高效地实现MapReduce 的操作。
2 算法模型
2.1 协同过滤算法
基于协同过滤、内容的推荐、混合推荐的这类的算法是传统的推荐方法[5],在这三种算法中,当前使用最为广泛, 最为经典的方法则是协同过滤算法, 如矩阵因子分解借助于用户与项目或产品之间的交互信息,向用户提供推荐内容。 协同过滤算法目前有很多,主流的算法有两种,分别是基于模型的协同过滤与基于邻域的协同过滤。
基于邻域的协同过滤算法在进行推荐的过程中,通过对邻域进行搜索来计算相似度,主要相似度的计算为用户之间的相似度与项目之间的相似度,它的实现相对简单,但也存在过分依赖用户的评分的缺点,特别是数据很稀疏时,推荐系统的预测精度将会急剧下降, 这将导致无法为新用户进行推荐的问题出现[6],基于模型的协同过滤算法在这种情况下, 它的预测速度将会更快且算法的可扩展性更强, 有一种典型的代表就是使用最小二乘法(ALS)进行矩阵分解算法。
2.2 交替最小二乘(ALS)算法
ALS 同时考虑了用户和物品两个方面, 将用户和物品的关系抽象为一个三元组<用户, 物品,用户对物品的评分>,并表示为一个评分矩阵,由于用户不可能对所有物品进行评分, 所以R 矩阵注定是一个稀疏矩阵,缺失不少评分。 为填充空值,ALS 算法采用“隐语义模型”,通过降维的方法来补全“用户-物品”矩阵,并对没有出现的值进行估计[7],这使得稀疏矩阵的问题能得到有效地解决。在ALS 算法中, 首先假设有m 个用户,n 个物品,用矩阵Rm×n来表示用户对物品的评分, 即矩阵元素Rij代表评分值为第i 个用户对第j 个物品的评分[8]。 Rm×n矩阵的规模通常很大,而且数据稀疏,为填充缺失值,ALS 算法假设评分矩阵是近似低秩的,将Rm×n分解为两个子矩阵Xm×k(用户对隐含特征的偏好矩阵),Yk×n(物品包含隐含特征的矩阵),使两个矩阵相乘近似得到Rm×n,其中k<<min(m,n)即k 值远小于m 和n,这样达到降维的目的,公式如下:
为了使得矩阵X 与矩阵Y 的乘积与原始矩阵R 值尽可能接近,ALS 采用最小化平方误差损失函数方法,同时对损失函数加上正则化项后表示如下:
其中λ 是正则化项系数。 xu作为用户u 的隐含特征向量,yi是物品i 隐含的特征向量。 而rui则表示用户u 对物品i 的评分。
具体求解步骤如下:
(1)将矩阵Y 进行固定,再对xu求导[8],公式如下:
(2)再固定矩阵X,然后对yi 求导[8],公式如下:
在迭代过程中,随机对X,Y 进行初始化,交替对X、Y 进行迭代优化, 不断更新X 和Y 的值,直至收敛。
3 基于Spark 框架的电影推荐系统设计和实现
3.1 系统总体设计
本文基于Spark 生态框架及Mysql、IDEA、Node.js 等软件平台构建电影推荐系统。 由HDFS分布式存储结构来对海量的历史评分数据进行保存,为充分测试系统性能,使用的评分数据源于网络,在使用之前在Pycharm 平台进行预处理后,在IDEA 平台上进一步清洗数据,用户在浏览网站时的行为及轨迹产生的实时数据由Spark Streaming处理,系统将用户注册信息、最新评分数据、浏览历史记录等信息存储到Mysql 数据库中。 通过MLlib 平台实现ALS 算法, 训练数据获得最佳的推荐模型,产生推荐结果,向用户推荐电影,同时对电影进行点击率、评分排名处理,设计基于电影排名推荐功能, 与ALS 算法一起形成组合推荐模式,向用户推荐电影。 系统工作流程图如图1:
文章来源:《大数据》 网址: http://www.dsjzz.cn/qikandaodu/2021/0617/2492.html