本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

【j2开奖】介绍一个推荐系统开源库:LibRec

时间:2017-03-31 01:00来源:118论坛 作者:开奖直播现场 点击:
LibRec ()是一个领先的推荐系统开源算法库,它覆盖了70余个各类型的推荐算法,有效地解决了评分预测和物品推荐两大关键的推荐问题。该项目结构清晰、代码风格良好、测试充分

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

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

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

  

【j2开奖】介绍一个推荐系统开源库:LibRec

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

  

【j2开奖】介绍一个推荐系统开源库:LibRec

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

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容