美文网首页推荐系统研究专区
在线推荐算法研究(2) - Online Collaborati

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

作者: 阿瑟_TJRS | 来源:发表于2020-01-02 15:40 被阅读0次

    引言

    • 本文论文阅读过程所留笔记,如有错误请指正
    • 如引用请注明链接及作者信息,谢谢
    • 论文为2019年 DASFAA会议长文(CCF B类会议,数据库领域顶会)
    • Online Collaborative Filtering with Implicit Feedback

    问题

    针对利用隐式反馈数据进行在线推荐
    具体而言,三个问题:
    (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. 采用更合适的指标,采用加权平均的方法:
    • sum= \mu_p \times recall +\mu_n \times specificity,值越大,效果越好;
    • cost = c_p \times M_p + c_n \times M_n, M_p,M_n分别表示错误的负例和正例,cost值越小,效果越好;
      以上指标等同于最小化以下目标函数:
      由于指标函数不是凸的(contex function),为了解决这个问题,用凸替代代替该目标函数,并得出以下两个成本敏感的损失函数:

    元学习 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和元学习的引入,框架挺新;但是并没有对算法的效率进行展示。在其框架中,单次更新的计算量看起来不低,其次也没有展示在线更新的效果,哪怕是展示几个迭代过程也可以啊?

    相关文章

      网友评论

        本文标题:在线推荐算法研究(2) - Online Collaborati

        本文链接:https://www.haomeiwen.com/subject/mycooctx.html