0


[推荐系统] 1. 深度学习与推荐系统

文章目录

1 推荐系统

1.1 推荐系统的作用和意义

用户角度

推荐系统用于在“信息过载”的情况下,使用户高效获取感兴趣的信息。用户需求层面讲,推荐系统使在用户需求模糊的情况下进行信息的过滤。

公司角度

推荐系统解决产品能够最大限度地吸引用户、留存用户、增加用户黏性、提高用户转化率地问题,从而使公司商业目标连续增长。对于公司而言,需要达到商业目标、增加公司收益。

1.2 推荐系统架构

推荐系统解决的用户痛点:

用户如何在“信息过载”的情况下高效的获取有用的信息

  • 物品信息:商品信息、视频信息、新闻信息
  • 用户信息:与“人”相关的信息,历史行为、人口属性、关系网络等
  • 场景信息(上下文信息):具体推荐场景中,用户的最终的选择受时间、地点、用户的状态等一系列环境影响

1.2.1 推荐系统的逻辑架构

形式化定义推荐系统解决的问题:

对于用户

    U
   
  
  
   U
  
 
U,在特定场景

 
  
   
    C
   
  
  
   C
  
 
C下,针对海量信息,构建函数

 
  
   
    f
   
   
    (
   
   
    U
   
   
    ,
   
   
    I
   
   
    ,
   
   
    C
   
   
    )
   
  
  
   f(U,I,C)
  
 
f(U,I,C),来预测用户对特定候选物品

 
  
   
    I
   
  
  
   I
  
 
I的喜好程度,再根据喜好程度对所有候选物品进行排序,生成推荐列表的问题

在这里插入图片描述

1.2.2 推荐系统的技术架构

实际工程中着重解决的问题

  • 数据和信息相关的问题 “用户信息”、“物品信息”、“场景信息”是什么?如何存储、更新、处理?
  • 推荐系统算法和模型相关的问题 推荐模型如何训练、如何预测、如何达到更优的推荐效果?

”数据和信息“部分发展为推荐系统中融合了数据离线批处理、实时流处理的数据流框架;“算法和模型”细化为推荐系统中集训练、评估、部署、线上推断为一体的模型框架。

推荐系统的数据部分

主要负责“用户信息”、“物品信息”、“场景信息”的信息收集与处理。将负责数据收集与处理的三种平台按照实时性的强弱排序,依次为客户端及服务端实时数据处理、流处理平台准实时数据处理、大数据平台离线数据处理。在实时性由强到弱递减时,三种平台的海量数据处理能力由弱到强。

在得到原始的数据信息后,推荐系统的数据处理系统会将原始数据加工,加工后的数据出口有三个:

  1. 生成推荐模型所需的样本数据,用于训练和评估
  2. 生成推荐模型服务所需的特征,用于推荐系统的线上推断
  3. 生成系统监控、商业智能系统所需的统计型数据

推荐系统的模型部分

模型部分是推荐系统的主体,一般由“召回层”、“排序层”、“补充策略与算法层”构成

  1. 召回层:一般利用高效的召回规则、算法或简单的模型,快速从海量的候选集中召回用户可能感兴趣的物品
  2. 排序层:利用排序模型对初筛的候选集进行精排
  3. 补充策略与算法层:在将推荐列表返回用户之前,为兼顾结果的”多样性“、”流行度“、”新鲜度“等指标,结合一些补充的策略和算法对推荐列表进行调整,最终形成用户可见的推荐列表

模型服务:从推荐模型接收到所有候选物品集,到最后产生推荐列表的过程

在线环境进行模型服务之前,需要模型训练确定模型结构、结构中不同参数权重的具体值,以及模型相关算法和策略中的参数取值。

模型的训练方式根据模型训练环境不同:分为”离线训练“和”在线更新“两部分。

  1. 离线训练:利用全量样本和特征,使模型逼近全局最优点
  2. 在线更新:准实时”消化“新的数据样本,更快反映新的数据变化趋势,满足模型实时性的需求

在这里插入图片描述

2 前置知识

2.1 传统推荐模型的演化

  1. 协同过滤算法族 从物品相似度和用户相似度角度出发,协同过滤衍生出物品协同过滤ItemCF和用户协同过滤UserCF,为使协同过滤更好处理稀疏共现矩阵问题、增强模型的泛化能力,从协同过滤衍生除矩阵分解模型MF,并发展除矩阵分解的各分支模型
  2. 逻辑回归模型族 利用和融合更多用户、物品及上下文特征。从LR模型衍生出增强非线性能力的大规模分片线性模型LS-PLM,由LR发展出来的FM 模型,以及与多种不同模型配合使用后的组合模型等
  3. 因子分解机模型族 因子分解机在传统逻辑回归模型的基础上,加入二阶部分,使模型具备进行特征组合的能力。在因子分解机基础上发展的域感知因子分解机FFM通过加入特征域的概念,进一步加强因子分解机特征交叉的能力。
  4. 组合模型 将不同模型组合使用是构建推荐模型的常用方法,组合模型体现出的特征工程模型化思想成为深度学习推荐模型的因子和核心思想之一。

在这里插入图片描述

2.2 协同过滤

2.2.1 概述

协同过滤

协调大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出目标用户可能感兴趣的信息的推荐的过程。

在这里插入图片描述

2.2.2 用户相似度计算

将带有标识的有向图转换成共现矩阵,该矩阵中的行向量代表相应用户的用户向量,用户

    i
   
  
  
   i
  
 
i和用户

 
  
   
    j
   
  
  
   j
  
 
j的相似度转换为处理用户向量

 
  
   
    i
   
  
  
   i
  
 
i和用户向量

 
  
   
    j
   
  
  
   j
  
 
j之间的相似度。

余弦相似度

余弦相似度衡量向量

    i
   
  
  
   i
  
 
i和

 
  
   
    j
   
  
  
   j
  
 
j之间的向量夹角大小,夹角越小,余弦相似度越大,两个用户越相似。

 
  
   
    
     s
    
    
     i
    
    
     m
    
    
     (
    
    
     i
    
    
     ,
    
    
     j
    
    
     )
    
    
     =
    
    
     c
    
    
     o
    
    
     s
    
    
     (
    
    
     i
    
    
     ,
    
    
     j
    
    
     )
    
    
     =
    
    
     
      
       i
      
      
       ⋅
      
      
       j
      
     
     
      
       ∣
      
      
       ∣
      
      
       i
      
      
       ∣
      
      
       ∣
      
      
       ⋅
      
      
       
        ∣
       
       
        ∣
       
       
        j
       
       
        ∣
       
       
        ∣
       
      
     
    
   
   
     sim(i,j)=cos(i,j)=\frac{i \cdot{j}}{||i||\cdot{||j||}} 
   
  
 sim(i,j)=cos(i,j)=∣∣i∣∣⋅∣∣j∣∣i⋅j​

皮尔逊相关系数

皮尔逊系数通过使用用户平均分对各独立评分进行修正,减少用户评分偏置的影响

     s
    
    
     i
    
    
     m
    
    
     (
    
    
     i
    
    
     ,
    
    
     j
    
    
     )
    
    
     =
    
    
     
      
       
        ∑
       
       
        
         p
        
        
         ∈
        
        
         P
        
       
      
      
       
        (
       
       
        
         R
        
        
         
          i
         
         
          ,
         
         
          p
         
        
       
       
        −
       
       
        
         
          R
         
         
          ‾
         
        
        
         i
        
       
       
        )
       
       
        (
       
       
        
         R
        
        
         
          j
         
         
          ,
         
         
          p
         
        
       
       
        −
       
       
        
         
          R
         
         
          ‾
         
        
        
         j
        
       
       
        )
       
      
     
     
      
       
        
         
          ∑
         
         
          
           p
          
          
           ∈
          
          
           P
          
         
        
        
         
          (
         
         
          
           R
          
          
           
            i
           
           
            ,
           
           
            p
           
          
         
         
          −
         
         
          
           
            R
           
           
            ‾
           
          
          
           i
          
         
         
          
           )
          
          
           2
          
         
        
       
      
      
       
        
         
          ∑
         
         
          
           p
          
          
           ∈
          
          
           P
          
         
        
        
         
          (
         
         
          
           R
          
          
           
            j
           
           
            .
           
           
            p
           
          
         
         
          −
         
         
          
           
            R
           
           
            ‾
           
          
          
           j
          
         
         
          
           )
          
          
           2
          
         
        
       
      
     
    
   
   
     sim(i,j)=\frac{\sum_{p\in P}{(R_{i,p}-\overline{R}_i)(R_{j,p}-\overline{R}_j)}}{\sqrt{\sum_{p\in P}{(R_{i,p}-\overline{R}_i)^2}}\sqrt{\sum_{p\in P}{(R_{j.p}-\overline{R}_j)^2}}} 
   
  
 sim(i,j)=∑p∈P​(Ri,p​−Ri​)2​∑p∈P​(Rj.p​−Rj​)2​∑p∈P​(Ri,p​−Ri​)(Rj,p​−Rj​)​

其中,

     R
    
    
     
      i
     
     
      ,
     
     
      p
     
    
   
  
  
   R_{i,p}
  
 
Ri,p​代表用户

 
  
   
    i
   
  
  
   i
  
 
i对物品

 
  
   
    p
   
  
  
   p
  
 
p的**评分**。

 
  
   
    
     
      R
     
     
      ‾
     
    
    
     i
    
   
  
  
   \overline{R}_i
  
 
Ri​代表用户

 
  
   
    i
   
  
  
   i
  
 
i对所有物品的**平均评分**,

 
  
   
    P
   
  
  
   P
  
 
P代表所有物品的集合。

2.2.3 最终结果排序

在获得Top n相似用户后,生成的最终推荐结果过程如下。假设”目标用户与其相似用户的喜好相似的“,可以根据相似用户的已有评价对目标用户的偏好进行预测。

常见方式是利用用户相似度和相似用户的评价的加权平均获得目标用户的评价预测。

      R
     
     
      
       u
      
      
       ,
      
      
       p
      
     
    
    
     =
    
    
     
      
       
        ∑
       
       
        
         s
        
        
         ∈
        
        
         S
        
       
      
      
       
        (
       
       
        
         w
        
        
         
          u
         
         
          ,
         
         
          s
         
        
       
       
        ⋅
       
       
        
         R
        
        
         
          s
         
         
          ,
         
         
          p
         
        
       
       
        )
       
      
     
     
      
       
        ∑
       
       
        
         s
        
        
         ∈
        
        
         S
        
       
      
      
       
        w
       
       
        
         u
        
        
         ,
        
        
         s
        
       
      
     
    
   
   
     R_{u,p}=\frac{\sum_{s\in S}{(w_{u,s}\cdot{R_{s,p}})}}{\sum_{s\in S}{w_{u,s}}} 
   
  
 Ru,p​=∑s∈S​wu,s​∑s∈S​(wu,s​⋅Rs,p​)​

其中,权重

     w
    
    
     
      u
     
     
      ,
     
     
      s
     
    
   
  
  
   w_{u,s}
  
 
wu,s​是用户

 
  
   
    u
   
  
  
   u
  
 
u和用户

 
  
   
    s
   
  
  
   s
  
 
s的相似度,

 
  
   
    
     R
    
    
     
      s
     
     
      ,
     
     
      p
     
    
   
  
  
   R_{s,p}
  
 
Rs,p​是用户

 
  
   
    s
   
  
  
   s
  
 
s对物品

 
  
   
    p
   
  
  
   p
  
 
p的评分。

在获得用户

    u
   
  
  
   u
  
 
u对不同物品的评价预测后,最终的推荐列表根据预测得分进行排序得到。至此,完成协同过滤的全部过程。

以上算法是基于用户近似度进行推荐,称为基于用户的协同过滤(UserCF

UserCF存在的缺点

  • 互联网应用场景下,用户数远大于产品数,UserCF需要维护用户相似度矩阵来找出Top n 用户。用户数的增长导致用户相似度矩阵的存储空间以 n 2 n^2 n2的速度增长,存储开销较大
  • 用户的历史数据量往往较为稀疏,购买次数较少的用户,其相似用户的准确度极低

2.2.4 ItemCF

基于物品平均分方式,减少物品评分偏置对结果的影响

     s
    
    
     i
    
    
     m
    
    
     (
    
    
     i
    
    
     ,
    
    
     j
    
    
     )
    
    
     =
    
    
     
      
       
        ∑
       
       
        
         p
        
        
         ∈
        
        
         P
        
       
      
      
       
        (
       
       
        
         R
        
        
         
          i
         
         
          ,
         
         
          p
         
        
       
       
        −
       
       
        
         
          R
         
         
          ‾
         
        
        
         p
        
       
       
        )
       
       
        (
       
       
        
         R
        
        
         
          j
         
         
          ,
         
         
          p
         
        
       
       
        −
       
       
        
         
          R
         
         
          ‾
         
        
        
         p
        
       
       
        )
       
      
     
     
      
       
        
         
          ∑
         
         
          
           p
          
          
           ∈
          
          
           P
          
         
        
        
         
          (
         
         
          
           R
          
          
           
            i
           
           
            ,
           
           
            p
           
          
         
         
          −
         
         
          
           
            R
           
           
            ‾
           
          
          
           p
          
         
         
          
           )
          
          
           2
          
         
        
       
      
      
       
        
         
          ∑
         
         
          
           p
          
          
           ∈
          
          
           P
          
         
        
        
         
          (
         
         
          
           R
          
          
           
            j
           
           
            .
           
           
            p
           
          
         
         
          −
         
         
          
           
            R
           
           
            ‾
           
          
          
           p
          
         
         
          
           )
          
          
           2
          
         
        
       
      
     
    
   
   
     sim(i,j)=\frac{\sum_{p\in P}{(R_{i,p}-\overline{R}_p)(R_{j,p}-\overline{R}_p)}}{\sqrt{\sum_{p\in P}{(R_{i,p}-\overline{R}_p)^2}}\sqrt{\sum_{p\in P}{(R_{j.p}-\overline{R}_p)^2}}} 
   
  
 sim(i,j)=∑p∈P​(Ri,p​−Rp​)2​∑p∈P​(Rj.p​−Rp​)2​∑p∈P​(Ri,p​−Rp​)(Rj,p​−Rp​)​

其中,

     R
    
    
     
      i
     
     
      ,
     
     
      p
     
    
   
  
  
   R_{i,p}
  
 
Ri,p​代表用户

 
  
   
    i
   
  
  
   i
  
 
i对物品

 
  
   
    p
   
  
  
   p
  
 
p的**评分**。

 
  
   
    
     
      R
     
     
      ‾
     
    
    
     p
    
   
  
  
   \overline{R}_p
  
 
Rp​代表物品

 
  
   
    p
   
  
  
   p
  
 
p得到所有评分的**平均评分**,

 
  
   
    P
   
  
  
   P
  
 
P代表所有物品的集合。

ItemCF是基于物品相似度进行推荐的协同过滤算法。通过计算共现矩阵中物品列向量的相似度得到物品之间的相似矩阵,再找到用户的历史正反馈物品的相似物品进一步排序和推荐

ItemCF算法流程

  1. 基于历史数据,构建以用户(假设用户总数为 m m m)为行坐标,物品(物品总数为 n n n)为列坐标的 m × n m×n m×n维的共现矩阵
  2. 计算共现矩阵两两列向量间的相似性,构建 n × n n×n n×n维的物品相似度矩阵
  3. 获得用户历史行为数据中的正反馈物品列表
  4. 利用物品相似度矩阵,针对目标历史行为中的正反馈物品,找出相似的Topk个物品,组成物品相似集合
  5. 对相似物品集合中的物品,利用相似度分值进行排序,生成最终的推荐列表(如果物品与多个用户行为历史中的正反馈物品相似,那么该物品最终的相似度应该是多个相似度的累加,如 R u , p = ∑ h ∈ H ( w p , h ⋅ R u , h ) R_{u,p}=\sum_{h\in H}{(w_{p,h}\cdot{R_{u,h}})} Ru,p​=∑h∈H​(wp,h​⋅Ru,h​),其中 H H H是目标用户的正反馈物品集合, w p , h w_{p,h} wp,h​是物品 p p p与物品 h h h的物品相似度, R u , h R_{u,h} Ru,h​是用户 u u u对物品 h h h的已有评分)

2.2.5 UserCF和ItemCF的应用场景

  • UserCF基于用户相似度推荐,使其具备更强的社交特性,非常适合用于新闻推荐场景
  • ItemCF基于物品相似度推荐,使其适用于兴趣变化较为稳定的应用

2.2.6 协同过滤的下一步发展

协同过滤不具备较强的泛化能力,无法将两个物品相似这一信息推广到其他物品的相似性计算上

协同过滤缺陷

  • 推荐结果的头部效应较为明显,容易跟大量物品产生相似性,处理稀疏向量能力弱,尾部的物品由于特征向量稀疏,很少与其他物品产生相似性,导致很少被推荐。
  • 另外,协同过滤仅利用用户和物品的交互信息,无法有效引入用户年龄、性别、商品描述、商品分类、当前时间等一系列用户特征、物品特征和上下文特征,造成有效信息的遗漏。

矩阵分解技术

为了解决上述问题,同时增加模型的泛化能力,提出矩阵分解技术,即在协同过滤共现矩阵的基础上,使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征,一定程度上弥补了协同过滤你想处理稀疏矩阵能力不足的问题。

2.3 矩阵分解算法

2.3.1 矩阵分解算法原理

在这里插入图片描述

对于图

a

,协同过滤算法基于用户观看历史,找到与目标用户看过同样视频的相似用户,然后找到这些相似用户喜欢看的其他视频,推荐给目标用户

对于图

b

,矩阵分解算法期望为每一个用户和视频生成一个隐向量,将用户和视频定位到隐向量的表示空间上,距离相近的用户和视频表明兴趣特点相近,在推荐过程中,就把距离相近的视频推给目标用户

用隐向量表示用户和物品并保证相似的用户及用户可能喜欢的物品距离相近,找出该隐向量

在”矩阵分解“的算法框架下,用户和物品的隐向量是通过分解协同过滤生成的共现矩阵得到的

在这里插入图片描述

矩阵分解算法将

    m
   
   
    ×
   
   
    n
   
  
  
   m×n
  
 
m×n维的共现矩阵

 
  
   
    R
   
  
  
   R
  
 
R分解为 

 
  
   
    m
   
   
    ×
   
   
    k
   
  
  
   m×k
  
 
m×k 维的用户矩阵

 
  
   
    U
   
  
  
   U
  
 
U和 

 
  
   
    k
   
   
    ×
   
   
    n
   
  
  
   k×n
  
 
k×n维的物品矩阵

 
  
   
    V
   
  
  
   V
  
 
V乘积形式。其中

 
  
   
    m
   
  
  
   m
  
 
m是用户数量,

 
  
   
    n
   
  
  
   n
  
 
n是物品数量,

 
  
   
    k
   
  
  
   k
  
 
k是隐向量的维度。

 
  
   
    k
   
  
  
   k
  
 
k的取值越小,隐向量包含的信息越少,模型的泛化程度越高;

 
  
   
    k
   
  
  
   k
  
 
k的取值越大,隐向量包含信息越多,模型的泛化程度降低。

基于用户矩阵

    U
   
  
  
   U
  
 
U和物品矩阵

 
  
   
    V
   
  
  
   V
  
 
V,用户

 
  
   
    u
   
  
  
   u
  
 
u对物品

 
  
   
    i
   
  
  
   i
  
 
i的预估评分表示为

 
  
   
    
     
      r
     
     
      ^
     
    
    
     
      u
     
     
      i
     
    
   
   
    =
   
   
    
     q
    
    
     i
    
    
     T
    
   
   
    
     p
    
    
     u
    
   
  
  
   \hat{r}_{ui}=q_i^Tp_u
  
 
r^ui​=qiT​pu​,其中

 
  
   
    
     p
    
    
     u
    
   
  
  
   p_u
  
 
pu​是用户

 
  
   
    u
   
  
  
   u
  
 
u在用户矩阵

 
  
   
    U
   
  
  
   U
  
 
U中的对应行向量,

 
  
   
    
     q
    
    
     i
    
   
  
  
   q_i
  
 
qi​是物品

 
  
   
    i
   
  
  
   i
  
 
i在物品矩阵

 
  
   
    V
   
  
  
   V
  
 
V中对应列向量

2.3.2 矩阵分解求解过程

矩阵分解方式主要有 特征值分解、奇异值分解、梯度下降

[奇异值分解介绍在机器学习系列,自行食用即可]

奇异值分解的描述

假设矩阵

    M
   
  
  
   M
  
 
M是一个

 
  
   
    m
   
   
    ×
   
   
    n
   
  
  
   m×n
  
 
m×n的矩阵,则一定存在一个分解

 
  
   
    M
   
   
    =
   
   
    U
   
   
    Σ
   
   
    
     V
    
    
     T
    
   
  
  
   M=U\Sigma V^T
  
 
M=UΣVT,其中

 
  
   
    U
   
  
  
   U
  
 
U是

 
  
   
    m
   
   
    ×
   
   
    m
   
  
  
   m×m
  
 
m×m的正交矩阵,

 
  
   
    V
   
  
  
   V
  
 
V是

 
  
   
    n
   
   
    ×
   
   
    n
   
  
  
   n×n
  
 
n×n的正交矩阵,

 
  
   
    Σ
   
  
  
   \Sigma
  
 
Σ是

 
  
   
    m
   
   
    ×
   
   
    n
   
  
  
   m×n
  
 
m×n的对角阵。

取对角阵

    Σ
   
  
  
   \Sigma
  
 
Σ中较大的

 
  
   
    k
   
  
  
   k
  
 
k个元素作为隐含特征,删除

 
  
   
    Σ
   
  
  
   \Sigma
  
 
Σ的其他维度及

 
  
   
    U
   
  
  
   U
  
 
U和

 
  
   
    V
   
  
  
   V
  
 
V中对应的维度,矩阵

 
  
   
    M
   
  
  
   M
  
 
M被分解为

 
  
   
    M
   
   
    ≈
   
   
    
     U
    
    
     
      x
     
     
      ×
     
     
      k
     
    
   
   
    
     Σ
    
    
     
      k
     
     
      ×
     
     
      k
     
    
   
   
    
     V
    
    
     
      k
     
     
      ×
     
     
      n
     
    
    
     T
    
   
  
  
   M≈U_{x×k}\Sigma_{k×k}V_{k×n}^T
  
 
M≈Ux×k​Σk×k​Vk×nT​,至此完成隐向量维度维

 
  
   
    k
   
  
  
   k
  
 
k的矩阵分解

奇异值分解存在的缺陷(互联网场景难以使用奇异值分解解决矩阵分解问题)

  • 奇异值分解要求原始的共现矩阵是稠密的(互联网场景下的大部分用户的历史非常少,用户-物品的共现矩阵非常稀疏,如果应用奇异值分解,就必须对缺失的元素值进行填充)
  • 传统奇异值分解的计算复杂度达到 O ( m n 2 ) O(mn^2) O(mn2)的级别(互联网场景下,用户数量和商品数量海量级别)

选择梯度下降法解决矩阵分解问题

  • 特征值分解仅作用于方阵
  • 奇异值分解不适合互联网应用场景

求解矩阵分解的目标函数目的是让原始评分

     r
    
    
     
      u
     
     
      i
     
    
   
  
  
   r_{ui}
  
 
rui​与**用户向量和物品向量**之积

 
  
   
    
     q
    
    
     i
    
    
     T
    
   
   
    
     p
    
    
     u
    
   
  
  
   q_i^Tp_u
  
 
qiT​pu​差尽量小,这样才能最大限度保存共现矩阵的原始信息。

 
  
   
    
     O
    
    
     b
    
    
     j
    
    
     e
    
    
     c
    
    
     t
    
    
    
     F
    
    
     u
    
    
     n
    
    
     c
    
    
     t
    
    
     i
    
    
     o
    
    
     n
    
    
    
     
      
       min
      
      
       ⁡
      
     
     
      
       
        q
       
       
        ∗
       
      
      
       ,
      
      
       
        p
       
       
        ∗
       
      
     
    
    
     
      ∑
     
     
      
       (
      
      
       u
      
      
       ,
      
      
       i
      
      
       )
      
      
       ∈
      
      
       K
      
     
    
    
     
      (
     
     
      
       r
      
      
       
        u
       
       
        i
       
      
     
     
      −
     
     
      
       q
      
      
       i
      
      
       T
      
     
     
      
       p
      
      
       u
      
     
     
      
       )
      
      
       2
      
     
    
   
   
     Object\quad Function\quad\min_{q^*,p^*}\sum_{(u,i)\in K}{(r_{ui}-q_i^Tp_u)^2} 
   
  
 ObjectFunctionq∗,p∗min​(u,i)∈K∑​(rui​−qiT​pu​)2

其中

    K
   
  
  
   K
  
 
K是所有用户评分样本的集合。为了减少过拟合现象,对其进行正则化。

 
  
   
    
     O
    
    
     b
    
    
     j
    
    
     e
    
    
     c
    
    
     t
    
    
    
     F
    
    
     u
    
    
     n
    
    
     c
    
    
     t
    
    
     i
    
    
     o
    
    
     n
    
    
    
     
      
       min
      
      
       ⁡
      
     
     
      
       
        q
       
       
        ∗
       
      
      
       ,
      
      
       
        p
       
       
        ∗
       
      
     
    
    
     
      ∑
     
     
      
       (
      
      
       u
      
      
       ,
      
      
       i
      
      
       )
      
      
       ∈
      
      
       K
      
     
    
    
     
      (
     
     
      
       r
      
      
       
        u
       
       
        i
       
      
     
     
      −
     
     
      
       q
      
      
       i
      
      
       T
      
     
     
      
       p
      
      
       u
      
     
     
      
       )
      
      
       2
      
     
    
    
     +
    
    
     λ
    
    
     (
    
    
     ∣
    
    
     ∣
    
    
     
      q
     
     
      i
     
    
    
     ∣
    
    
     
      ∣
     
     
      2
     
    
    
     +
    
    
     ∣
    
    
     ∣
    
    
     
      p
     
     
      u
     
    
    
     ∣
    
    
     
      ∣
     
     
      2
     
    
    
     )
    
   
   
     Object\quad Function\quad\min_{q^*,p^*}\sum_{(u,i)\in K}{(r_{ui}-q_i^Tp_u)^2}+\lambda(||q_i||^2+||p_u||^2) 
   
  
 ObjectFunctionq∗,p∗min​(u,i)∈K∑​(rui​−qiT​pu​)2+λ(∣∣qi​∣∣2+∣∣pu​∣∣2)

梯度下降求解目标函数

1.确定目标函数

       min
      
      
       ⁡
      
     
     
      
       
        q
       
       
        ∗
       
      
      
       ,
      
      
       
        p
       
       
        ∗
       
      
     
    
    
     
      ∑
     
     
      
       (
      
      
       u
      
      
       ,
      
      
       i
      
      
       )
      
      
       ∈
      
      
       K
      
     
    
    
     
      (
     
     
      
       r
      
      
       
        u
       
       
        i
       
      
     
     
      −
     
     
      
       q
      
      
       i
      
      
       T
      
     
     
      
       p
      
      
       u
      
     
     
      
       )
      
      
       2
      
     
    
    
     +
    
    
     λ
    
    
     (
    
    
     ∣
    
    
     ∣
    
    
     
      q
     
     
      i
     
    
    
     ∣
    
    
     
      ∣
     
     
      2
     
    
    
     +
    
    
     ∣
    
    
     ∣
    
    
     
      p
     
     
      u
     
    
    
     ∣
    
    
     
      ∣
     
     
      2
     
    
    
     )
    
   
   
     \min_{q^*,p^*}\sum_{(u,i)\in K}{(r_{ui}-q_i^Tp_u)^2}+\lambda(||q_i||^2+||p_u||^2) 
   
  
 q∗,p∗min​(u,i)∈K∑​(rui​−qiT​pu​)2+λ(∣∣qi​∣∣2+∣∣pu​∣∣2)

2.对目标函数求偏导,求取梯度下降的方向和幅度

     对
    
    
     
      q
     
     
      i
     
    
    
     求偏导,得
    
    
    
     2
    
    
     (
    
    
     
      r
     
     
      
       u
      
      
       i
      
     
    
    
     −
    
    
     
      q
     
     
      i
     
     
      T
     
    
    
     
      p
     
     
      u
     
    
    
     )
    
    
     
      p
     
     
      u
     
    
    
     −
    
    
     2
    
    
     λ
    
    
     
      p
     
     
      i
     
    
    
    
     对
    
    
     
      q
     
     
      u
     
    
    
     求偏导,得
    
    
    
     2
    
    
     (
    
    
     
      r
     
     
      
       u
      
      
       i
      
     
    
    
     −
    
    
     
      q
     
     
      i
     
     
      T
     
    
    
     
      p
     
     
      u
     
    
    
     )
    
    
     
      q
     
     
      i
     
    
    
     −
    
    
     2
    
    
     λ
    
    
     
      p
     
     
      u
     
    
   
   
     对q_i求偏导,得\quad2(r_{ui}-q_i^Tp_u)p_u-2\lambda p_i\\ 对q_u求偏导,得\quad2(r_{ui}-q_i^Tp_u)q_i-2\lambda p_u 
   
  
 对qi​求偏导,得2(rui​−qiT​pu​)pu​−2λpi​对qu​求偏导,得2(rui​−qiT​pu​)qi​−2λpu​

3.利用求导结果,沿梯度的反方向更新参数

      q
     
     
      i
     
    
    
     ←
    
    
     
      q
     
     
      i
     
    
    
     −
    
    
     γ
    
    
     (
    
    
     (
    
    
     
      r
     
     
      
       u
      
      
       i
      
     
    
    
     −
    
    
     
      q
     
     
      i
     
     
      T
     
    
    
     
      p
     
     
      u
     
    
    
     )
    
    
     
      p
     
     
      u
     
    
    
     −
    
    
     λ
    
    
     
      q
     
     
      i
     
    
    
     )
    
    
    
     
      p
     
     
      u
     
    
    
     ←
    
    
     
      p
     
     
      u
     
    
    
     −
    
    
     γ
    
    
     (
    
    
     (
    
    
     
      r
     
     
      
       u
      
      
       i
      
     
    
    
     −
    
    
     
      q
     
     
      i
     
     
      T
     
    
    
     
      p
     
     
      u
     
    
    
     )
    
    
     
      q
     
     
      i
     
    
    
     −
    
    
     λ
    
    
     
      p
     
     
      u
     
    
    
     )
    
    
    
     其中,
    
    
     γ
    
    
     为学习率
    
   
   
     q_i\leftarrow q_i-γ((r_{ui}-q_i^Tp_u)p_u-\lambda q_i)\\ p_u\leftarrow p_u-γ((r_{ui}-q_i^Tp_u)q_i-\lambda p_u)\\ 其中,γ为学习率 
   
  
 qi​←qi​−γ((rui​−qiT​pu​)pu​−λqi​)pu​←pu​−γ((rui​−qiT​pu​)qi​−λpu​)其中,γ为学习率

4.当迭代次数超过上限

    n
   
  
  
   n
  
 
n或损失低于阈值

 
  
   
    θ
   
  
  
   \theta
  
 
θ时,结束训练,否则循环第3步

在完成矩阵分解过程后,即可得到所有用户与物品的隐向量。在对某用户进行推荐时,可利用该用户的隐向量与所有物品的隐向量进行逐一的内积运算,得出该用户对所有物品的评分预测,再依次进行排序,得到最终的推荐列表。

矩阵分解具有更强的泛化能力的解释

在矩阵分解算法中,由于隐向量的存在,使任意的用户和物品之间都可以得到预测分值。隐向量的生成过程其实是对共现矩阵进行全局拟合的过程,因此隐向量是利用全局信息生成的,具有更强的泛化能力,而协同过滤只能利用用户和物品自己的信息进行相似度计算,因此不具备利用全局信息的能力

2.3.3 消除用户和物品打分的偏差

由于不同用户的打分体系不同,不同物品的衡量标准也有所区别,为了消除用户和物品打分的偏差,常用做法是矩阵分解时加入用户和物品的偏差变量

      r
     
     
      
       u
      
      
       i
      
     
    
    
     =
    
    
     μ
    
    
     +
    
    
     
      b
     
     
      i
     
    
    
     +
    
    
     
      b
     
     
      u
     
    
    
     +
    
    
     
      q
     
     
      i
     
     
      T
     
    
    
     
      p
     
     
      u
     
    
   
   
     r_{ui}=μ+b_i+b_u+q_i^Tp_u 
   
  
 rui​=μ+bi​+bu​+qiT​pu​

其中

    μ
   
  
  
   μ
  
 
μ是全局偏差常数,

 
  
   
    
     b
    
    
     i
    
   
  
  
   b_i
  
 
bi​是物品偏差系数,可使用物品 

 
  
   
    i
   
  
  
   i
  
 
i 收到的所有评分的均值,

 
  
   
    
     b
    
    
     u
    
   
  
  
   b_u
  
 
bu​是用户偏差系数,可使用用户

 
  
   
    μ
   
  
  
   μ
  
 
μ给出的所有评分的均值

矩阵分解的目标函数优化如下:

       min
      
      
       ⁡
      
     
     
      
       
        q
       
       
        ∗
       
      
      
       ,
      
      
       
        p
       
       
        ∗
       
      
      
       ,
      
      
       
        b
       
       
        ∗
       
      
     
    
    
     
      ∑
     
     
      
       (
      
      
       u
      
      
       ,
      
      
       i
      
      
       )
      
      
       ∈
      
      
       K
      
     
    
    
     
      (
     
     
      
       r
      
      
       
        u
       
       
        i
       
      
     
     
      −
     
     
      μ
     
     
      −
     
     
      
       b
      
      
       u
      
     
     
      −
     
     
      
       b
      
      
       i
      
     
     
      −
     
     
      
       q
      
      
       i
      
      
       T
      
     
     
      
       p
      
      
       u
      
     
     
      
       )
      
      
       2
      
     
    
    
     +
    
    
     λ
    
    
     (
    
    
     ∣
    
    
     ∣
    
    
     
      q
     
     
      i
     
    
    
     ∣
    
    
     
      ∣
     
     
      2
     
    
    
     +
    
    
     ∣
    
    
     ∣
    
    
     
      p
     
     
      u
     
    
    
     ∣
    
    
     
      ∣
     
     
      2
     
    
    
     +
    
    
     
      b
     
     
      u
     
     
      2
     
    
    
     +
    
    
     
      b
     
     
      i
     
     
      2
     
    
    
     )
    
   
   
     \min_{q^*,p^*,b^*}\sum_{(u,i)\in K}{(r_{ui}-μ-b_u-b_i-q_i^Tp_u)^2}+\lambda(||q_i||^2+||p_u||^2+b_u^2+b_i^2) 
   
  
 q∗,p∗,b∗min​(u,i)∈K∑​(rui​−μ−bu​−bi​−qiT​pu​)2+λ(∣∣qi​∣∣2+∣∣pu​∣∣2+bu2​+bi2​)

加入用户和物品的打分偏差项后,矩阵分解得到的隐向量更能反映不同用户对不同物品的”真实“态度差异,即容易捕捉评价数据中有价值的信息,进而避免推荐结果有偏

2.3.4 矩阵分解的优点和局限性

优点

  • 泛化能力强 一定程度解决数据稀疏的问题
  • 空间复杂度低 只需要存储用户和物品隐向量,无需存储协同过滤模型服务阶段所需的用户/物品相似性矩阵
  • 更好的扩展性和灵活性 矩阵分解最终产物是用户和物品隐向量,其分解结果便于与其他特征进行组合和拼接,便于与深度学习网络结合

局限性

  • 不方便加入用户、物品和上下文相关的特征
  • 在缺乏用户历史行为时,无法进行有效推荐

解决

逻辑回归模型和因子分解机模型可以融合多特征,弥补其不足

2.4 逻辑回归

相较协同过滤模型仅利用用户与物品的相互行为信息进行推荐而言,逻辑回归模型综合利用用户、物品、上下文多特征进行“全面”推荐,相较协同过滤和矩阵分解利用用户和物品的相似度矩阵进行推荐而言,逻辑回归将推荐系统归类为分类问题,通过预测正样本的概率对物品进行排序(这里正样本表示用户对物品的正反馈行为),因此逻辑回归模型将推荐问题转换为点击率CTR预估问题。

2.4.1 基于逻辑回归的推荐

  1. 将用户“年龄、性别、物品属性、物品描述、当前时间、当前地点”等多特征转换成数值型特征向量
  2. 确定逻辑回归模型的优化目标(如CTR),利用已有的样本数据训练逻辑回归模型,确定模型参数
  3. 在模型服务阶段,将特征向量输入逻辑回归模型,得到用户“点击”物品的概率
  4. 利用CTR对所有候选物品进行排序,生成推荐列表

重点

基于逻辑回归模型的推荐流程的重点在于样本特征向量和在线推断

2.4.2 逻辑回归的数学表达

  1. 将特征向量 x = ( x 1 , x 2 , . . . , x n ) T x=(x_1,x_2,...,x_n)^T x=(x1​,x2​,...,xn​)T作为模型的输入
  2. 通过为各特征向量赋予相应的权重 ( w 1 , w 2 , . . . , w n + 1 ) (w_1,w_2,...,w_n+1) (w1​,w2​,...,wn​+1),来表示各特征的重要性差异,将各特征进行加权求和,得到 x T w x^Tw xTw
  3. 将 x T w x^Tw xTw输入 s i g m o i d sigmoid sigmoid函数,映射到 [ 0 , 1 ] [0,1] [0,1]区间,得到点击率

在这里插入图片描述

整个训练过程的逻辑回归模型函数表示

     f
    
    
     (
    
    
     x
    
    
     )
    
    
     =
    
    
     
      1
     
     
      
       1
      
      
       +
      
      
       
        e
       
       
        
         −
        
        
         (
        
        
         w
        
        
         ⋅
        
        
         x
        
        
         +
        
        
         b
        
        
         )
        
       
      
     
    
   
   
     f(x)=\frac{1}{1+e^{-(w\cdot{x}+b)}} 
   
  
 f(x)=1+e−(w⋅x+b)1​

2.4.3 逻辑回归的模型训练

1.确定目标函数

假设逻辑回归数学表达为

     f
    
    
     w
    
   
   
    (
   
   
    x
   
   
    )
   
  
  
   f_w(x)
  
 
fw​(x),对于输入样本

 
  
   
    x
   
  
  
   x
  
 
x,预测结果为正样本(类别1)和负样本(类别0)的概率如下:

 
  
   
    
     {
    
    
     
      
       
        
         
          P
         
         
          (
         
         
          y
         
         
          =
         
         
          1
         
         
          ∣
         
         
          x
         
         
          ;
         
         
          w
         
         
          )
         
         
          =
         
         
          
           f
          
          
           w
          
         
         
          (
         
         
          x
         
         
          )
         
         
          ,
         
        
       
      
     
     
      
       
        
         
          P
         
         
          (
         
         
          y
         
         
          =
         
         
          0
         
         
          ∣
         
         
          x
         
         
          ;
         
         
          w
         
         
          )
         
         
          =
         
         
          1
         
         
          −
         
         
          
           f
          
          
           w
          
         
         
          (
         
         
          x
         
         
          )
         
         
         
         
          (
         
         
          式
         
         
          2
         
         
          −
         
         
          1
         
         
          )
         
        
       
      
     
    
   
   
     \begin{cases} P(y=1|x;w)=f_w(x),\\ P(y=0|x;w)=1-f_w(x) \quad\quad(式2-1) \end{cases} 
   
  
 {P(y=1∣x;w)=fw​(x),P(y=0∣x;w)=1−fw​(x)(式2−1)​

式2-1

优化成

式2-2

形式:

     P
    
    
     (
    
    
     y
    
    
     ∣
    
    
     x
    
    
     ;
    
    
     w
    
    
     )
    
    
     =
    
    
     (
    
    
     
      f
     
     
      w
     
    
    
     (
    
    
     x
    
    
     )
    
    
     
      )
     
     
      y
     
    
    
     (
    
    
     1
    
    
     −
    
    
     
      f
     
     
      w
     
    
    
     (
    
    
     x
    
    
     )
    
    
     
      )
     
     
      
       (
      
      
       1
      
      
       −
      
      
       y
      
      
       )
      
     
    
    
    
    
     (
    
    
     式
    
    
     2
    
    
     −
    
    
     2
    
    
     )
    
   
   
     P(y|x;w)=(f_w(x))^y(1-f_w(x))^{(1-y)}\quad\quad(式2-2) 
   
  
 P(y∣x;w)=(fw​(x))y(1−fw​(x))(1−y)(式2−2)

根据极大似然估计法写出逻辑回归目标函数,如

式2-3

     L
    
    
     (
    
    
     w
    
    
     )
    
    
     =
    
    
     
      ∏
     
     
      
       i
      
      
       =
      
      
       1
      
     
     
      m
     
    
    
     P
    
    
     (
    
    
     y
    
    
     ∣
    
    
     x
    
    
     ;
    
    
     w
    
    
     )
    
    
    
    
     (
    
    
     式
    
    
     2
    
    
     −
    
    
     3
    
    
     )
    
   
   
     L(w)=\prod^m_{i=1}P(y|x;w) \quad\quad(式2-3) 
   
  
 L(w)=i=1∏m​P(y∣x;w)(式2−3)

继续优化,将求极大值问题转换成求极小值问题,最终目标函数见式

2-4

     J
    
    
     (
    
    
     w
    
    
     )
    
    
     =
    
    
     −
    
    
     
      1
     
     
      m
     
    
    
     l
    
    
     (
    
    
     w
    
    
     )
    
    
     =
    
    
     −
    
    
     
      1
     
     
      m
     
    
    
     l
    
    
     o
    
    
     g
    
    
     L
    
    
     (
    
    
     w
    
    
     )
    
    
     =
    
    
     −
    
    
     
      1
     
     
      m
     
    
    
     (
    
    
     
      ∑
     
     
      
       i
      
      
       =
      
      
       1
      
     
     
      m
     
    
    
     (
    
    
     
      y
     
     
      i
     
    
    
     l
    
    
     o
    
    
     g
    
    
     
      f
     
     
      w
     
    
    
     (
    
    
     
      x
     
     
      i
     
    
    
     )
    
    
     +
    
    
     (
    
    
     1
    
    
     −
    
    
     
      y
     
     
      i
     
    
    
     )
    
    
     l
    
    
     o
    
    
     g
    
    
     (
    
    
     1
    
    
     −
    
    
     
      f
     
     
      w
     
    
    
     (
    
    
     
      x
     
     
      i
     
    
    
     )
    
    
     )
    
    
     )
    
    
     )
    
    
    
    
     (
    
    
     式
    
    
     2
    
    
     −
    
    
     4
    
    
     )
    
   
   
     J(w)=-\frac{1}{m}l(w)=-\frac{1}{m}logL(w)=-\frac{1}{m}(\sum_{i=1}^{m}(y^ilogf_w(x^i)+(1-y^i)log(1-f_w(x^i))))\quad\quad (式2-4) 
   
  
 J(w)=−m1​l(w)=−m1​logL(w)=−m1​(i=1∑m​(yilogfw​(xi)+(1−yi)log(1−fw​(xi))))(式2−4)

得到目标函数后,对每个参数求偏导,获取梯度方向,对参数

     w
    
    
     j
    
   
  
  
   w_j
  
 
wj​求偏导:

 
  
   
    
     
      
       ∂
      
      
     
     
      
       ∂
      
      
       
        w
       
       
        j
       
      
     
    
    
     J
    
    
     (
    
    
     w
    
    
     )
    
    
     =
    
    
     
      1
     
     
      m
     
    
    
     
      ∑
     
     
      
       i
      
      
       =
      
      
       1
      
     
     
      m
     
    
    
     
      (
     
     
      
       f
      
      
       w
      
     
     
      (
     
     
      
       x
      
      
       i
      
     
     
      )
     
     
      −
     
     
      
       y
      
      
       i
      
     
     
      )
     
    
    
     
      x
     
     
      j
     
     
      i
     
    
   
   
     \frac{\partial{}}{\partial{w_j}}J(w)=\frac{1}{m}\sum_{i=1}^{m}{(f_w(x^i)-y^i)}x_j^i 
   
  
 ∂wj​∂​J(w)=m1​i=1∑m​(fw​(xi)−yi)xji​

给出模型参数更新公式:

      w
     
     
      j
     
    
    
     ←
    
    
     
      w
     
     
      j
     
    
    
     −
    
    
     γ
    
    
     
      1
     
     
      m
     
    
    
     (
    
    
     
      f
     
     
      w
     
    
    
     (
    
    
     
      x
     
     
      i
     
    
    
     )
    
    
     −
    
    
     
      y
     
     
      i
     
    
    
     )
    
    
     
      x
     
     
      j
     
     
      i
     
    
   
   
     w_j\leftarrow w_j-γ\frac{1}{m}(f_w(x^i)-y^i)x_j^i 
   
  
 wj​←wj​−γm1​(fw​(xi)−yi)xji​

2.4.4 逻辑回归模型的评价

优点

  1. 数学含义:CTR模型的因变量服从伯努利分布,用户点击广告是经典的掷偏心硬币问题
  2. 可解释性:逻辑回归模型中对各种特征加权求和,综合不同特征对CTR影响
  3. 工程化:易于并行化、模型简单、训练开销小

缺点

表达能力弱,无法进行特征交叉、特征筛选等操作,会造成信息损失

解决

逻辑回归模型的不足促使因子分解机等高维复杂模型诞生,如今的深度学习背景,多层感知机完全取代逻辑回归模型


本文转载自: https://blog.csdn.net/ChiYoun/article/details/127271339
版权归原作者 Cyanzzy 所有, 如有侵权,请联系我们删除。

“[推荐系统] 1. 深度学习与推荐系统”的评论:

还没有评论