第7章 使用Spark实现大规模的推荐引擎
在这一章,将讨论以下内容:
- 使用Spark 2.0生成可扩展推荐引擎所需的数据;
- 使用Spark 2.0研究推荐系统的电影数据;
- 使用Spark 2.0研究推荐系统的评分数据;
- 使用Spark 2.0和协同过滤构建可扩展的推荐引擎。
7.1 引言
在前面的章节中,我们已经使用简短攻略和非常简化的代码来演示Spark机器学习库中的基本构建块和概念。本章将介绍一个更加成熟高级的应用程序,使用Spark API和工具来处理特定的机器学习领域的问题。尽管本章的攻略数目较少,但是会学习到更多的机器学习应用程序。
本章将使用一种基于隐因子模型(可选最小二乘(ALS)的矩阵分解技术探究推荐系统及其实现。简而言之,当尝试将一个很大的“用户—项目评分矩阵”分解为2个更低秩、更瘦扁的矩阵时,经常遇到难以处理的非线性或非凸优化问题。碰巧,我们非常善于解决凸优化问题:先固定问题的某一部分,再从局部去解决问题的其他部分,继而来回重复多次(因此称为“交替”)。可以使用已有的并行优化技术更好地解决因子分解(可以发现一组隐因子)问题。
本章将使用一个流行的数据集(MovieLens数据集)来实现推荐引擎,和其他章节不同的是:这里使用2个攻略来探索数据并展示如何将JFreeChart等图形单元添加进Spark机器学习工具库中。
图7-1展示了本章所涉及的概念和攻略流程,该流程演示一个ALS(可选最小二乘)推荐应用。
图7-1
推荐引擎已经存在很长时间,并且在20世纪90年代的早期电子商务系统中广泛使用,技术范围从硬编码产品关联延伸到由概要分析驱动的基于内容的推荐。现代推荐系统使用协作过滤(CF)来解决早期系统的问题,并解决现代商务系统(例如,亚马逊、奈飞、易贝、News等)竞争中所面对的规模和延迟(例如最大100毫秒或更短)问题。 ...
Get Spark机器学习实战 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.