论文《RiVal - A Toolkit to Foster Reproducibility in Recommender System Evaluation》阅读

论文《RiVal - A Toolkit to Foster Reproducibility in Recommender System Evaluation》阅读

  • 论文概况
  • 论文亮点
  • Abstract
  • Recommendation and Evaluation
  • RiVal - A Toolkit for Evaluation
  • Demenstration

论文概况

这篇文章发表在推荐系统顶会RecSys 2014上,是一篇短论文,介绍了作者开发的一个叫做 RiVal 的推荐系统开源评估框架。

论文地址:RiVal论文
代码地址:RiVal代码

论文亮点

  • 针对主流开源推荐框架Evaluation实现差异较大而设计了一套可以集中进行横向评估的开源框架

下面进行详细介绍

Abstract

主流的开源框架,即使给定同一个数据集、同一个评估指标、同一个数据划分方法,最终给出的评估结果可能也天差地别(主要是由模型的实现方法以及参数的优化和修改造成的)。作者开发出RiVal框架,使用Java开发,是一款开源的推荐系统评估工具包。

RiVal 使得 Evaluation 的各个部分可以完全由用户掌握:

  • 数据划分(Data Splitting)
  • 评估策略的定义(Definition of evaluation strategies)
  • 评估指标的计算(Computation of evaluation metrics)

Recommendation and Evaluation

主流的开源推荐系统框架包括以下几个:

  • Apache Mahout
  • LensKit
  • MyMediaLite

然而不同的框架之间,即使实现同一个算法也可能带来不同的准确率。作者认为有以下原因:

  • 算法实现
  • 数据组织
  • 评估方法

作者举例如下表1 所示:
论文《RiVal - A Toolkit to Foster Reproducibility in Recommender System Evaluation》阅读_第1张图片

可以看到,即使是同一个算法,同一个评估指标,针对不同的框架得到的结果也是不同的,而且相差很大。

RiVal - A Toolkit for Evaluation

作者将推荐的Evaluation过程分为以下四个阶段:

  • 数据分割(Data Splitting)
  • 推荐(Item Recommendation)
  • 生成候选(Candidate Item Generation)
  • 性能测量(Performance Measurement)

Rival作为一款开源的Java推荐系统性能评估工具包并不具备推荐功能,因此功能(ii)推荐(Item Recommendation)的功能需要其他开源框架完成,由RiVal负责性能评估。

RiVal可以通过Maven方式运行,也可以直接Java程序文件。具体使用方法是通过配置文件指定,在.prop文件中写明各个属性值即可。作者举例如下框Listing 1所示:
论文《RiVal - A Toolkit to Foster Reproducibility in Recommender System Evaluation》阅读_第2张图片
这里对应第一步——数据分割,可以看到配置文件中指定了数据集文件,分隔符形式,数据分割方式,分割后的数据集命名方式(前后缀),以及其他细节(如peruser、seed等)。

类似地,第二步(推荐)的细节如下框list2所示:

论文《RiVal - A Toolkit to Foster Reproducibility in Recommender System Evaluation》阅读_第3张图片

可以看到在list2中指明了推荐算法模型(使用lenskit完成)、相似度计算方式、KNN中K的大小(neighborhood=50),以及前后缀名称等其他细节。

对于剩余两步(候选和评估)作者没有进一步展示,大体类似于前两步,可以上 github 进行查看。

作者展示了一个使用RiVal的运行结果如下图1所示:

论文《RiVal - A Toolkit to Foster Reproducibility in Recommender System Evaluation》阅读_第4张图片

作者针对RMSE(均方根误差)这一指标,对不同的算法(包含user-based CF,item-based CF及 SVD),不同的分割方式(交叉验证,per-user,global random),不同框架(Mahout,LensKit,MyMediaLite)的运算结果的可视化进行了展示。

Demenstration

这部分在前面已经详细介绍,具体可以参照github上的指示进行操作。

你可能感兴趣的:(论文阅读,算法,java,深度学习,数据挖掘)