推荐|LibRec:一个覆盖70多种算法的推荐系统开源库!

2017 年 7 月 11 日 全球人工智能

欢迎加入全球最大AI社群>>

推荐系统开源算法库——LibRec(http://www.librec.net)覆盖了70余个各类型的推荐算法,有效地解决了评分预测和物品推荐两大关键的推荐问题。项目结构清晰、代码风格良好、测试充分、注释与手册完善,基于GPL3.0协议代码开源。


最近,推荐系统获得快速发展,数以百计的新算法、新模型不断涌现。却让刚刚接触推荐算法的新人造成无所适从,也给那些有经验的人士带来不少困扰。不同的人对算法的理解可能大相径庭,更不用说是具体的实现。因此,为了解决算法实现和共享的问题,LibRec团队设计实现了基于Java的跨平台推荐框架,并以GPL-3.0协议在GitHub上开源共享。


通过多年的发展,项目团队经过上千次的代码提交,最新版本已经到2.0。目前为止,LibRec包含了矩阵分解、概率图模型等多种类型的70余个推荐算法,10个相似度度量方法,4个rating评估指标与10个ranking评估指标,5大类数据的分割方式以及2种不同格式的数据读取,满足绝大部分推荐系统的需求。因此,LibRec具有算法丰富、易于扩展、简单易用等突出特点。

项目系统结构

Data Structure包括常用的数据结构,如SparseMatrix、SparseVector等;Data Model主要负责数据的读取、分割、导入其他数据如社交关系等;Recommender主要负责模型的训练(Inference),预测(Prediction),相似度衡量(Similarity),以及模型的持久化(Persistence);最终结果可以进行评估,或者过滤之后输出到文件。总体来说,LibRec项目拥有良好的结构,不同模块之间耦合度非常低,针对某个模块的开发通常无需关心其他模块的实现。以实现新的分割方式为例,用户只需继承Splitter接口抽象类,根据相应的逻辑重写splitData()方法即可。


基于LibRec来运行推荐算法就如同搭积木一样简单,其工作流程如上图所示。首先设置好相关参数配置,然后实例化数据并测试分割,调用推荐算法训练学习,最后对推荐结果进行过滤和评估。示例程序:

publicstatic void main(String[] args) throws Exception{
    
// build data model
    
Configuration conf = new Configuration();
    conf.set(
"dfs.data.dir""path/to/data/folder/");
    Randoms.seed(
1);
    TextDataModel dataModel = 
new TextDataModel(conf);
    dataModel.buildDataModel();

    
// build recommendercontext
    
RecommenderContextcontext = new RecommenderContext(conf, dataModel);

    
// build similarity
    
conf.set("rec.recommender.similarity.key","item");
    RecommenderSimilarity similarity = 
new PCCSimilarity();
    similarity.buildSimilarityMatrix(dataModel);
    context.setSimilarity(similarity);

    
// build recommender
    
conf.set("rec.neighbors.knn.number""5");
    Recommender recommender = 
new ItemKNNRecommender();
    recommender.setContext(context);

    
// run recommenderalgorithm
    
recommender.recommend(context);

    
// evaluate therecommended result
    
RecommenderEvaluatorevaluator = new RMSEEvaluator();
    System.out.println(
"RMSE:"+ recommender.evaluate(evaluator));
}


调用了ItemKNN算法,采用RMSE对结果进行评估。用户可以根据实际应用,采用其他算法与评估器来进行推荐计算。LibRec的参数配置是在配置文件中设定的,主要分为两部分。一部分是流程控制参数(默认加载),与推荐算法无关;另一部分是与推荐算法相关的参数。


GitHub:https://github.com/guoguibing/librec

热门文章推荐

推荐|40张动态图详解全部传感器关注原理!

警惕!中国人工智能有一只推荐算法叫:莆田系算法!

百度Apollo:无人驾驶技术发展成熟仅需3年左右!

阿里出了个Take Go无人便利店,比亚马逊还厉害!

大数据:99%的数据是无用的僵尸数据!

突发!长征五号遥二卫星发射任务失败

重磅!微软宣布业务重点调整将专注ai云!

最新,吴恩达正式加入Drive.ai董事会!

老司机:用gan去除(爱情)动画片中的马赛克和衣服!

海康威视3月市值涨1000亿,全球市场占有率第一!

登录查看更多
5

相关内容

推荐系统,是指根据用户的习惯、偏好或兴趣,从不断到来的大规模信息中识别满足用户兴趣的信息的过程。推荐推荐任务中的信息往往称为物品(Item)。根据具体应用背景的不同,这些物品可以是新闻、电影、音乐、广告、商品等各种对象。推荐系统利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。这种浏览大量无关的信息和产品过程无疑会使淹没在信息过载问题中的消费者不断流失。为了解决这些问题,个性化推荐系统应运而生。个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
【天津大学】知识图谱划分算法研究综述
专知会员服务
109+阅读 · 2020年4月27日
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
200+阅读 · 2020年2月11日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
119+阅读 · 2019年12月31日
可解释推荐:综述与新视角
专知会员服务
111+阅读 · 2019年10月13日
推荐系统之矩阵分解家族
图与推荐
13+阅读 · 2020年3月28日
详解 | 推荐系统的工程实现
AI100
42+阅读 · 2019年3月15日
Github项目推荐 | RecQ - Python推荐系统框架
AI研习社
8+阅读 · 2019年1月23日
Python推荐系统框架:RecQ
专知
12+阅读 · 2019年1月21日
各厂推荐算法!
程序猿
17+阅读 · 2018年1月13日
【推荐系统】详解基于内容的推荐算法
产业智能官
23+阅读 · 2018年1月11日
【机器学习】推荐13个机器学习框架
产业智能官
8+阅读 · 2017年9月10日
Spark机器学习:矩阵及推荐算法
LibRec智能推荐
16+阅读 · 2017年8月3日
Arxiv
10+阅读 · 2019年2月19日
Arxiv
7+阅读 · 2018年6月1日
Arxiv
6+阅读 · 2018年3月28日
Arxiv
26+阅读 · 2018年2月27日
Arxiv
5+阅读 · 2017年7月23日
VIP会员
相关资讯
推荐系统之矩阵分解家族
图与推荐
13+阅读 · 2020年3月28日
详解 | 推荐系统的工程实现
AI100
42+阅读 · 2019年3月15日
Github项目推荐 | RecQ - Python推荐系统框架
AI研习社
8+阅读 · 2019年1月23日
Python推荐系统框架:RecQ
专知
12+阅读 · 2019年1月21日
各厂推荐算法!
程序猿
17+阅读 · 2018年1月13日
【推荐系统】详解基于内容的推荐算法
产业智能官
23+阅读 · 2018年1月11日
【机器学习】推荐13个机器学习框架
产业智能官
8+阅读 · 2017年9月10日
Spark机器学习:矩阵及推荐算法
LibRec智能推荐
16+阅读 · 2017年8月3日
Top
微信扫码咨询专知VIP会员