常用推荐算法

  • 基于内容过滤
    • 从信息检索,和文本检索发展而来
    • 基于商品描述及用户喜好描述,为用户推荐商品
  • 协同过滤
    • 基于用户行为为用户推荐感兴趣的商品
    • 行为可以是过往的交易行为和商品评分,这种方式不需要显性的属性信息
  • 混合推荐
基于内容过滤存在的问题
  • 需了解商品内容
    • 需要人工或自动标注信息
    • 商品内容不能反映所有特点
  • 冷启动问题
    • 需要花时间学习哪些内容或feature 对用户而言是重要的
  • 如果用户兴趣点改变了呢
  • Lack of serendipity(缺少意外新发现 EE问题)
  • 基于内容的推荐(Content-based) V.S. 协同过滤(Collaborative Filtering)
推荐方法 优点 缺点
基于内容推荐 推荐结果直观,容易解释 不需要领域知识 新用户问题; 复杂属性不好处理; 要有足够数据构造分类器;
协同过滤推荐 新异兴趣发现、不需要领域知识; 随着时间推移性能提高; 推荐个性化、自动化程度高; 能处理复杂的非结构化对象; 稀疏问题; 可扩展性问题; 新用户问题; 依赖历史数据集; 系统开始时推荐质量差;
基于协同过滤的推荐算法
  • 协同过滤算法
    • 基于用户行为的推荐
    • 行为可以是过往的交易行为和商品评分,这种方式不需要显性的属性信息
  • 协同过滤分类
    • K近邻(neighborhood )方法
      • 借助商品的关系或者用户的关系
  • 基于模型的方法
    • 用隐含变量刻画商品
协同过滤算法之K邻近方法
  • K邻近方法 基于假设 : “跟你喜好相似的人喜欢的东西你也很有可能喜欢” 或“跟你喜欢的物品类似的物品你也很有可能喜欢 ”

  • 分类

    • User-based 方法
      • 基于user的协同过滤,通过不同用户对item的评分来评测用户之间的相似性,基于用户之间的相似性做出推荐
    • Item-based方法
      • 基于item的协同过滤,通过用户对不同item的评分来评测item之间的相似性,基于item之间的相似性做出推荐
  • 基于用户(User-based)

    • 查找用户相似度 如何预测用户1对于商品4的喜好程度?
      • 找到和用户1相似的用户且购买过商品4(基于购买记录)即为用户n
      • 根据用户n对商品4的评价,以相似度为权重回填结果
      • 针对所有用户组合,重复上述步骤,直到所有空格都被填满
  • 找到相似的Item (Item-based)

    • 用户1对于商品4的喜好程度?
    • 从用户1历史记录中,计算商品n和商品4的相似度(以其他用户的历史记录)
    • 将用户1对于商品n的评价,以商品相似度为权重回填
    • 针对所有商品组合,重复上述步骤直到所有空格都被填满
相似度计算(Similarity Calculation)
基于模型的方法
  • 思想

    • 通过机器学习算法,在数据中找出模式,并将用户与物品间的互动方式模式化
    • 基于模型的协同过滤方式是构建协同过滤更高级的算法
  • 近邻模型的问题

    • 物品之间存在相关性, 信息量并不随着向量维度增加而线性增加
    • 矩阵元素稀疏, 计算结果不稳定,增减一个向量维度, 导致近邻结果差异很大的情况存在
  • 算法分类

    • 基于图的模型
    • 基于矩阵分解的方法
  • 基于图的模型

    • 基于邻域的模型看做基于图的模型的简单形式
    • 原理
      • 将用户的行为数据表示为二分图
      • 基于二分图为用户进行推荐
      • 根据两个顶点之间的路径数、路径长度和经过的顶点数来评价两个顶点的相关性
  • 基于矩阵分解的模型

    • 原理

      • 根据用户与物品的潜在表现,我们就可以预测用户对未评分的物品的喜爱程度

      • 把原来的大矩阵, 近似分解成两个小矩阵的乘积, 在实际推荐计算时不再使用大矩阵, 而是使用分解得到的两个小矩阵

      • 用户-物品评分矩阵A是M X N维, 即一共有M个用户, n个物品 我们选一个很小的数 K (K<< M, K<

      • 通过计算得到两个矩阵U V U是M K矩阵 , 矩阵V是 N K

        类似这样的计算过程就是矩阵分解

    • 基于矩阵分解的方法

      • ALS交替最小二乘
        • ALS-WR(加权正则化交替最小二乘法): alternating-least-squares with weighted-λ –regularization
        • 将用户(user)对商品(item)的评分矩阵分解为两个矩阵:一个是用户对商品隐含特征的偏好矩阵,另一个是商品所包含的隐含特征的矩阵。在这个矩阵分解的过程中,评分缺失项得到了填充,也就是说我们可以基于这个填充的评分来给用户最商品推荐了。
      • SVD奇异值分解矩阵
  • ALS方法

    • ALS的矩阵分解算法常应用于推荐系统中,将用户(user)对商品(item)的评分矩阵,分解为用户对商品隐含特征的偏好矩阵,和商品在隐含特征上的映射矩阵。
    • 与传统的矩阵分解SVD方法来分解矩阵R(R∈ℝm×n)不同的是,ALS(alternating least squares)希望找到两个低维矩阵,以 R̃ =XY 来逼近矩阵R,其中 ,X∈ℝm×d,Y∈ℝd×n,这样,将问题的复杂度由O(mn)转换为O((m+n)d)。
    • 计算X和Y过程:首先用一个小于1的随机数初始化Y,并根据公式求X,此时就可以得到初始的XY矩阵了,根据平方差和得到的X,重新计算并覆盖Y,计算差平方和,反复进行以上两步的计算,直到差平方和小于一个预设的数,或者迭代次数满足要求则停止
    基于用户的协同过滤实现 (User CF)
  • 基于用户的协同过滤实现

    • 第一步: 找出和目标用户兴趣类似的用户集合
    • 第二步: 找到集合中用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
  • 基于用户协同过滤 第一步:

    • 设N(u)是用户u有过正反馈的物品集合,则Jaccard公式:
  • 如果用户数目很多,如何优化? 答:首先计算出N(u)^ N(v) != 0 的用户对(u,v),然后再对这种情况除以分母sqrt(N(u)*N(v))

  • 基于用户协同过滤 第二步

    • 得到用户之间的兴趣相似度后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。

    • S(u, K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,Wuv是用户u和用户v的兴趣相似度,rvi代表用户v对物品i的兴趣,因为使用的是单一行为的隐反馈数据,所以所有的rvi=1

    • 选取K=3,用户A对物品c、e没有过行为,因此可以把这两个物品推荐给用户A。根据UserCF算法,用户A对物品c、e的兴趣是:

      p(A,c) = = 0.7416

      p(A,e) = = 0.7416

基于物品的协同过滤实现
  • 基于物品的协同过滤实现步骤

    • Step 1:计算物品之间的相似度
    • Step 2:根据物品的相似度和用户的历史行为,为用户生成推荐列表

你可能感兴趣的:(常用推荐算法)