SVDFeature

  SVDFeature 是由上海交大Apex Data & Knowledge Management Lab(APEX)开发的一个推荐系统工具包。他们提出了一种基于feature 的矩阵分解的框架。SVDFeature使设计推荐算法变得非常简单,只需在此框架内增加一些新的feature(如neighborhood特征、时间特征等)。SVDFeature 曾在KDDCup’11 track 1中取得单模型的最好成绩。

SVDFeature 模型如下

SVDFeature_第1张图片

SVDFeature_第2张图片

公式1

其中α表示用户特征,β表示商品特征,γ表示全局特征

Active function and Loss function有以下几种选择:
SVDFeature_第3张图片

模型训练

SVDFeature 采用随机梯度下降进行训练。对于L2 loss其参数更新规则如下:
SVDFeature_第4张图片

许多矩阵分解模型都可以包含在此框架内:

(1)矩阵分解模型
矩阵分解
对应的特征表示为:
SVDFeature_第5张图片

(2)Pairwise rank 模型
这里写图片描述
对应的特征表示为:
SVDFeature_第6张图片

(3)SVD++ 模型
SVDFeature_第7张图片
相当于SVDFeature的特例:
SVDFeature_第8张图片

处理大规模数据

  推荐系统中的数据集通常很大,而单机内存容量有限,很难将所有数据一次性加载到内存中。SVDFeature采用的方案是将数据先存储在硬盘(buffer file)上,当训练过程中用到该数据时再从硬盘中读取。另外,因为是采用随机梯度下降进行训练,需要先将数据进行shuffle后再存到buffer file上。采用这种方案,无论要处理的数据集有多大,只要模型参数能够加载到内存中就可以运行。
  为了降低频繁读取硬盘的开销,SVDFeature采用了pre-fetch 策略。一个专门的线程负责读取数据,一个线程负责模型训练。这样只要I/O的速度和模型训练的速度相近,I/O的开销就可以被隐藏。
  SVDFeature_第9张图片

软件使用

  1. SVDFeature-1.2.2 下载地址:
    http://apex.sjtu.edu.cn/projects/33

  2. 下载完成后进行编译
    ubuntu 系统:分别在主目录和tools目录下执行make命令

  3. 运行demo文件夹下的例子
    采用movielens ml-100k 数据集
    basicMF:
    SVDFeature_第10张图片
    迭代40次 rmse:
    SVDFeature_第11张图片

    implicitFeedback
    SVDFeature_第12张图片
    每次迭代RMSE为:
    SVDFeature_第13张图片

    pairwiseRank
    SVDFeature_第14张图片

参考文献

《Feature-Based Matrix Factorization》
《SVDFeature: A Toolkit for Feature-based Collaborative Filtering》
《Svdfeature-manual》

你可能感兴趣的:(推荐系统)