我正在以一种简单的方式在 Hadoop 上构建一个推荐系统,你能给我一个关于使用什么来构建这个推荐系统的意见吗?
我想使用 Apache pig 或 Apache mahout。
在我的数据集中我有
book_id,name,publisher
user_id,username
book_id,user_id,rating
我有 csv 格式的数据
那么您能否建议我使用哪种技术来生成基于项目和基于用户的推荐系统。
我正在以一种简单的方式在 Hadoop 上构建一个推荐系统,你能给我一个关于使用什么来构建这个推荐系统的意见吗?
我想使用 Apache pig 或 Apache mahout。
在我的数据集中我有
book_id,name,publisher
user_id,username
book_id,user_id,rating
我有 csv 格式的数据
那么您能否建议我使用哪种技术来生成基于项目和基于用户的推荐系统。
Apache Mahout 将为您提供基于协同过滤算法的现成推荐引擎。
使用 Pig,您必须自己实现这些算法 - 在 Pig Latin 中,这可能是一项相当复杂的任务。
我知道这不是您首选的方法之一,但您可以在 Hadoop 上使用的另一种产品来创建推荐引擎是Oryx。
Oryx 由Sean Owen ( Mahout in Action一书的合著者,Mahout 代码库的主要贡献者)创建。目前它只有 3 种算法(交替最小二乘法、K-Means 聚类和随机决策森林),但 ALS 算法提供了一个相当易于使用的协作过滤引擎,位于 Hadoop 基础架构之上。
从您的数据集的简要描述来看,这听起来会很完美。它有一个模型生成引擎(计算层),它可以根据以下三个标准之一生成一个新模型:
1) 年龄(模型生成之间的时间)
2) 添加的记录数
3) 添加的数据量
一旦构建了一代数据,就会运行另一个 java 守护程序(服务层),它将通过 RESTful API 提供推荐(用户到商品、商品到商品、盲推荐等)。当创建了新一代模型时,它会自动拾取该代并提供给它。
模型生成中也有一些不错的功能,例如老化的历史数据,这可以帮助解决季节性问题(不过,如果你在谈论书籍,可能没什么大不了的)。
计算层(模型生成)使用 HDFS 存储/查找数据,并使用 MapReduce 或 YARN 进行作业控制。服务层是一个可以在每个数据节点上运行的守护进程,它访问 HDFS 文件系统,以便计算模型数据通过 API 呈现出来。