LibRec70余个各类型推荐算法
LibRec 简介
LibRec是一个基于Java 1.7以GPL-3.0协议发布的开源推荐系统. LibRec内包含大量推荐算法并可以通过这些算法快速解决rating和ranking问题. 目前LibRec已被RecSys wiki收录. 与1.4相比, 2.0版本重新程序的整体结构, 接口更加合理, 可扩展性更强. 对于Librec内已经实现的推荐算法, 可以使用命令行和参数或者配置文件来执行. 也可以通过导入jar包用于其他项目中. Librec 的运行需要JDK的版本 >= 1.7 丰富的算法集 截止到目前,LibRec已经集成了70余个各类型推荐算法。具体来说,分为基准算法、协同过滤算法、基于内容的算法、情景感知算法、混合算法和其它扩展算法等。在新的版本里,增加了40余个新算法,包括概率图模型、张量分解模型、因子分解机、基于评论的模型、深度学习模块(RBM)等新颖的算法。团队的每个核心开发人员往往负责某一类型算法的开发和测试工作。 良好的模块化 相对于LibRec
1.x,新版本在底层结构上做了非常深入的优化,尤其是模块化方面。新版本的推荐库可分为以下三部分:数据预处理、推荐算法和训练后处理。在数据预处理模块,主要是数据的转换与分割。支持两种格式数据的输入和转换,一个是常见的
User-Item-Rating
格式,另一个是更通用的ARFF格式,用户还可以扩展新类型的数据以增强现有的ARFF格式。在数据分割方面,支持按Ratio,Given-N,k-fold
Cross validation,
Leave-one-out等方式。在推荐模型模块,包括情景感知和算法集成。情景感知指的是算法依赖的情景信息,如用户相似度;算法集成则是算法的逻辑实现。在模型训练之后,LibRec支持两种操作:一是对测试集进行评估,得到如MAE、RMSE、AUC、MAP、NDCG等测试结果;二是对给定的用户(或情景)进行评分预测或物品推荐等查询操作,用户可以通过实现filter接口自定义更多的过滤操作。 灵活的框架配置 LibRec新版本承袭了基于配置的特点,但是有所更新和发展。新的配置实现参考了其它知名数据挖掘工具库的实现特点,在灵活性上得到了有效的提高。具体来说,我们抽取出很多公共的配置项,也为独立的算法保留了特定的配置参数。为了提高算法的易配置性,我们为大多数算法保留了可用的供参考配置设置。 高效的执行性能 LibRec一直非常注重算法执行的高效性,并尽可能地优化框架结构和算法实现。与其它的推荐算法库相比,LibRec能够在得到相当的推荐性能的前提下,在更短的时间内执行完成。 简单的框架用法 简单的框架用法。LibRec早期版本只能独立运行,难以集成在其它工程中使用。由于良好的模块结构,新版本既可以单独运行,也能够作为依赖库应用于其它工程中 良好的可扩展性 良好的易扩展性。LibRec提供了很好的公共接口以便用户进行个性化扩展。包括数据类型、推荐算法、输出类型、评估因子、过滤器等的扩展接口。使用LibRec开发新算法,用户通常只需要关注新算法的逻辑实现,而不需要担心其它部分的实现。1. Overview
2. Features
3. Getting started
git clone https://github.com/guoguibing/librec.git --recursive && cd librec