• 关于协同过滤推荐系统札记


    看到一篇好文(【推荐系统中基于深度学习的混合协同过滤模型】——携程技术中心)。想整理一下要点,也方便自己复习。

    1、推荐系统:

    推荐系统的功能:是帮助用户主动找到满足其偏好的个性化物品并推荐给用户。

    推荐系统的输入数据:可以多种多样,归纳起来分为用户(User)、物品(Item)和评分(Ratings)三个层面,它们分别对应于一个矩阵中的行、列、值。

    对于一个特定用户,推荐系统的输出:为一个推荐列表,该列表按照偏好得分顺序给出了该用户可能感兴趣的物品。

    2、基于协同过滤(CF)的推荐系统:

    基于协同过滤的推荐通过收集用户过去的行为以获得其对物品的显示或隐式信息,根据用户对物品的偏好,发现物品或者用户的相关性,然后基于这些关联性进行推荐。

    其主要可以分为两类:分别是memory-based推荐(最近邻搜索)与model-based推荐。

    其中memory-based推荐主要分为Item-based方法与User-based方法。协同过滤分类见图2。

    Memory-based推荐方法通过执行最近邻搜索,把每一个Item或者User看成一个向量,计算其他所有Item或者User与它的相似度。有了Item或者User之间的两两相似度之后,就可以进行预测与推荐了。

    Model-based推荐最常见的方法为Matrix factorization,其示意图见图3左边。矩阵分解通过把原始的评分矩阵R分解为两个矩阵相乘,并且只考虑有评分的值,训练时不考虑missing项的值(置为 0?)

    3、深度学习在推荐系统中的应用

    Model-based方法的目的就是学习到User的隐向量矩阵U与Item的隐向量矩阵V。我们可以通过深度学习来学习这些抽象表示的隐向量。

    Autoencoder(AE)是一个无监督学习模型,它利用反向传播算法,让模型的输出等于输入。文献[2]利用AE来预测用户对物品missing的评分值,该模型的输入为评分矩阵R中的一行(User-based)或者一列(Item-based),其目标函数通过计算输入与输出的损失来优化模型,而R中missing的评分值通过模型的输出来预测,进而为用户做推荐,其模型如图5所示。

    另外还简要介绍了:

    1)Stacked Denoising Autoencoder(SDAE)  :是一个多层的AE组成的神经网络,其前一层自编码器的输出作为其后一层自编码器的输入。

    2)Bayesian SDAE for Recommendation Sysytem:在SDAE的基础之上,提出了Bayesian SDAE模型,并利用该模型来学习Item的隐向量,其输入为Item的Side information。

    3)Additional Stacked Denoising Autoencoder(aSDAE) :(携程团队的方法:混合协同过滤模型)

    在已有工作的基础之上,携程基础BI算法团队通过改进现有的深度模型,提出了一种新的混合协同过滤模型,并将其成果投稿与国际人工智能顶级会议AAAI 2017并被接受。该成果通过利用User和Item的评分矩阵R以及对应的Side information来学习User和Item的隐向量矩阵U与V,进而预测出评分矩阵R中missing的值,并为用户做物品推荐。

    结合aSDAE与矩阵分解模型,我们提出了一种混合协同过滤模型,见图9所示。该模型通过两个aSDAE学习User与Item的隐向量,通过两个学习到隐向量的内积去拟合原始评分矩阵R中存在的值,其目标函数由矩阵分解以及两个aSDAE的损失函数组成,可通过stochastic gradient descent(SGD)学习出U与V,详情大家可以阅读他们的paper《A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems》[4]。

    4)Google利用DNN来做YouTube的视频推荐:“Deep Neural Networks for YouTube Recommendations”, RecSys 2016 

    5)文献[6]通过卷积神经网络(CNN)提出了一种卷积矩阵分解,来做文档的推荐,该模型结合了概率矩阵分解(PMF)与CNN模型。“Convolutional Matrix Factorization for Document Context-Aware Recommendation”, RecSys 2016

  • 相关阅读:
    十六进制内存赋值
    opcode修改
    C/C++ strtok函数
    pat1033. To Fill or Not to Fill (25)
    pat1008. Elevator (20)
    pat1089. Insert or Merge (25)
    pat1091. Acute Stroke (30)
    pat1002. A+B for Polynomials (25)
    pat1090. Highest Price in Supply Chain (25)
    pat1088. Rational Arithmetic (20)
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/11197589.html
Copyright © 2020-2023  润新知