推荐系统研究专区

在线推荐算法研究(2) - Online Collaborati

2020-01-02  本文已影响0人  阿瑟_TJRS

引言

问题

针对利用隐式反馈数据进行在线推荐
具体而言,三个问题:
(i) 当正向反馈依次到达时,如果我们将给定用户的所有其他缺失项视为负向反馈,则错误分类的项将产生较大的偏差,因为某些物品可能在后续交互中是正向反馈;
(ii)错判一个正向物品的成本要比拥有一个假正向反馈的成本高得多;
(iii)现有工作通常假设在学习任务之前,通过人工选择或通过交叉验证来给出固定模型。 如果所选模型在新环境中不合适,则可能会导致性能不佳,这在现实环境中通常会发生,因为用户偏好和物品属性会随着时间动态变化。

原文以矩阵分解模型为例(LFM),对于交互矩阵R \in \mathbb{R}^{m \times n},R_{ij}=1/0,对于分解得到的矩阵U,V,r_{ij}^t=(\mathbf{u}_i^t)^T\mathbf{v}_i^t,目前的在线推荐方法中使用交替更新的思想,交替更新\mathbf{v}_i^t,\mathbf{u}_i^t,最小化误差(r_{ij}^t,\hat{r_{ij}}^t)

方法

文章提出了OCFIF框架,如下图所示


  1. 基于后悔厌恶的原理,提出了一种损失函数:Diverstiture Loss 来弥补对负例错分引起的偏差。
    后悔厌恶指当人们做出错误的决策时,会对自己的行为感到痛苦,后悔。而且这个决策越是那种不平常或者非传统(Unconventional)的决策的时候,人们的后悔感就越强。
    假设有一个人,他一直以来上下班都走同一条路。有一天他决定换条新的路线,结果不幸遇到了交通事故,尽管事实上两条路线遇到交通事故的概率是一样的,但是他仍然会后悔:“早知道如此,我就走原来的路线了。”很显然后悔厌恶会影响人们的决策。后悔厌恶会使人们墨守成规,以使后悔达到最小化
    ,此处就是错误分类带来的不良影响。
  2. 提出了一种代价敏感的学习方法 cost-sentive learning, 可以有效地优化隐式MF模型,并没有对缺少项增加权重限制(其他对隐式反馈进行处理的MF中,WALS/Fast-eALS等都加了权重
  3. 使用元学习 Meta-Learning,对多个模型进行赋权操作,以弥补现有方法中使用单一固定模型的缺点。

在这样的框架下,最佳模型的选择是自适应的,并且根据数据流而不断更新。

Diverstiture Loss

在原文中,作者提出重要假设:模型会给曾被误分类的正例更高的权重,比起其他样本。
将前t轮中为负样本(缺失项)历史用户-物品对的集合定义为:N_t,则Diverstiture Loss为:

其中 表示实际损失,是标识函数,取值为1或0, 表示样本对(i,j)是否被错分。

超参数\lambda用来引入额外的损失,大于0时,表示对分错的样例增加惩罚;等于0,则就是普通的损失函数。简言之,就是增大对负样本分类的惩罚。 实话讲,原文该部分理论前后完全可以整合。。。

定义B_t为t轮迭代前尚未输入模型的用户-物品对的集合,从B_t采样Z个负样本用于模型参数更新讯息。传统的采样策略是从中等概率采样,每个缺少项被抽到的概率相同。原文作者采用了基于流行度的采样策略,流行度比较高的物品被采样的概率比较高(这种做法在何向南的文章中最早提及,思想简单而且有效)

image.png

代价敏感的学习

尽管ξ可以处理错误分类的负样本的问题,没有对正例错分的情况进行特殊处理。但在隐式反馈中,错分正例的代价要比错分负例高得多。
原文中引入了以下处理:

  1. \color{red}{\hat{r}_{ij}}=\mathbb{I}[\hat{r_{ij}} \geq q], q \in [0,1], q 是分类的阈值,原文中,写的是\color{red}{r_{ij}}=\mathbb{I}[\hat{r_{ij}} \geq q],读下来感觉不是这个意思,应该是对模型的预测值进行二值化处理,而非训练数据
  2. 采用更合适的指标,采用加权平均的方法:

元学习 Meta-Learning

为了决定超参数\rho等参数值,一般通过手动选择或者交叉验证的方法进行超参数设置,但是在线推荐系统中,用户偏好和物品属性都在动态变化,原文作者提出采用元学习的方法来探究多模型的影响。

具体来说,以超参数ρ为例,通过将(0,1)离散分为S个均匀分布的值来构造参数ρ的多个值的池\frac{1}{S+1},...,\frac{s}{S+1},...,\frac{S}{S+1},设\rho_s=(1-\frac{s}{S+1})/(\frac{s}{S+1}).
之后是从模型候选集(S个)选出一个MF模型用来预测和更新,使用Hedge算法,根据采样概率分布选取一个模型:\mathbf{p}_t=(p_t^1,...,p_t^S)

是对历史数据的在线评价,原文选取了AUC和F值。这两个 指标,作者设计了具体的更新方法,以支撑优化过程,在此略过。
对于矩阵分解模型,最后的更新策略为: 是学习率,完整的算法流程如下:

实验

实验部分作者采用了三个数据集,Yelp,MoviesLens, Pinterest.
评价方法部分,将每个数据集随机划分为两部分,80%用于训练,20%用于测试,随机划分10次,对应运行算法10次,计算结果的平均值(AUC和F值)


让人非常疑惑的是,既然是在线推荐算法,为什么没有在线平均的测试设置?上面的实验仅仅能看出其静态表现,无法体现其在线更新的效果和速度?

总结

总体而言,该文工作具有一定的创新性,包括提出的loss和元学习的引入,框架挺新;但是并没有对算法的效率进行展示。在其框架中,单次更新的计算量看起来不低,其次也没有展示在线更新的效果,哪怕是展示几个迭代过程也可以啊?

上一篇下一篇

猜你喜欢

热点阅读