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