最近在研究推荐引擎,在网上找了几个对比一下。
1.Librec
LibRec 是一个基于java 1.7以GPL-3.0协议发布的开源推荐系统。LibRec内包含大量推荐算法并可以通过这些算法快速解决rating和ranking问题。对于Librec内已经实现的推荐算法, 可以使用命令行和参数或者配置文件来执行,也可以通过导入jar包用于其他项目中。
2.EasyRec
EasyRec是一个易集成、易扩展、功能强大且具有可视化管理的推荐系统。EasyRec可以同时给多个不同的网站提供推荐服务,通过tenant来区分不同的网站。架设EasyRec服务器,为网站申请tenant,通过tenant就可以很方便的集成到网站中。通过各种不同的数据收集(view,buy.rating)API收集到网站的用户行为,EasyRec通过离线分析,就可以产生推荐信息,您的网站就可以通过Recommendations和Community Rankings来进行推荐业务的实现。
3.Mahout
Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现、分类、聚类等。Mahout最大的优点就是基于hadoop实现,把很多以前运行于单机上的算法,转化为了MapReduce模式,这样大大提升了算法可处理的数据量和处理性能。
Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算.
Hadoop框架中最核心设计就是:HDFS和MapReduce.HDFS提供了海量数据的存储,MapReduce提供了对数据的计算.
通俗说MapReduce是一套从海量·源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是MapReduce做的事了。
实现方法:
1.Librec经过良好的封装, 可以直接通过命令行加载配置项来运行相应的代码,也可以在其他工程中分别实例Java相应的类来进行计算。
2.easyrec提供了rest和javascript两种访问方式。
3.1、启动Hadoop
3.2、下载测试数据
http://archive.ics.uci.edu/ml/databases/synthetic_control/
链接中的synthetic_control.data
3.3、上传测试数据
hadoop fs -put synthetic_control.data /user/root/testdata
3.4 使用Mahout中的kmeans聚类算法,执行命令:
mahout -core org.apache.mahout.clustering.syntheticcontrol.kmeans.Job
花费9分钟左右完成聚类 。
3.5 查看聚类结果
执行hadoop fs -ls /user/root/output,查看聚类结果。