librec.java_介绍一个推荐系统开源库:LibRec

原标题:介绍一个推荐系统开源库:LibRec

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

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

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

0e6d2630c909785c0bb1cd8f5bb0decc.png

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

7472244a6a4c065855d58c89f1f5191b.png

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

publicstatic voidmain(String[] args)throwsException{

// build data model

Configuration conf =newConfiguration();

conf.set("dfs.data.dir","path/to/data/folder/");

Randoms.seed(1);

TextDataModel dataModel = newTextDataModel(conf);

dataModel.buildDataModel();

// build recommendercontext

RecommenderContextcontext =newRecommenderContext(conf, dataModel);

// build similarity

conf.set("rec.recommender.similarity.key","item");

RecommenderSimilarity similarity = newPCCSimilarity();

similarity.buildSimilarityMatrix(dataModel);

context.setSimilarity(similarity);

// build recommender

conf.set("rec.neighbors.knn.number","5");

Recommender recommender = newItemKNNRecommender();

recommender.setContext(context);

// run recommenderalgorithm

recommender.recommend(context);

// evaluate therecommended result

RecommenderEvaluatorevaluator =newRMSEEvaluator();

System.out.println("RMSE:"+ recommender.evaluate(evaluator));

}

这段示例程序调用了ItemKNN算法,采用RMSE对结果进行评估。用户也可以根据实际应用,采用其他算法与评估器来进行推荐计算。LibRec的参数配置是在配置文件中设定的,主要分为两部分。一部分是流程控制参数(默认加载),与推荐算法无关;另一部分是与推荐算法相关的参数。LibRec项目仍在快速开发中,未来会继续增强核心模块的功能,添加与深度学习相关的算法实现,并扩展至Spark等平台。

欢迎关注公众号【LibRec】,获取LibRec和推荐系统相关的研究进展。公众号会定期推送最新的开发进展,近期还推出了“每周算法”栏目,解读推荐领域比较重要的研究工作和技术发展,广受读者朋友们的喜爱。也欢迎大家多多贡献代码算法,提交pullRequest。LibRec的发展离不开大家的关注和支持,也希望聚合众人的力量在推荐系统领域创建合作共享、协同创新的开源氛围,推动推荐算法的进一步实际应用和推广。

相关链接:

Librec 通识篇:https://mp.weixin.qq.com/s/AB39ihVWXYHRbeODbGO-2g

LibRec工程导入:https://mp.weixin.qq.com/s/OyYn5_4GYAbF0L0SFgsHVQ

LibRec命令行操作:https://mp.weixin.qq.com/s/xnkg6BGyUUKmbs009p8XCw

Librec 团队一周年纪:https://mp.weixin.qq.com/s/vDnca1FMW9vVrFDgti_1IA

了解更多,请关注Librec微信公众号:

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值