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

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

论文概况

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

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

论文亮点

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

下面进行详细介绍

Abstract

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

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

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

Recommendation and Evaluation

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

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

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

作者举例如下表1 所示:
table1.png

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

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所示:
list1.png
这里对应第一步——数据分割,可以看到配置文件中指定了数据集文件,分隔符形式,数据分割方式,分割后的数据集命名方式(前后缀),以及其他细节(如peruser、seed等)。

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

list2.png

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

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

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

fig1.png

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

Demenstration

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值