推荐系统基础01:概述

本篇为Datawhale组队学习笔记,datawhale推荐系统基础

1.什么是推荐系统?

推荐系统是一种信息过滤系统,用于预测用户对物品的评分或偏好。

随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载的时代。消费者想从大量信息(物品)中找到自己感兴趣的信息,信息生产者想让自己生产的信息脱颖而出从而得到关注。

长尾理论(人们只关注曝光率高的项目,而忽略曝光率低的项目)可以很好的解释推荐系统的存在,试验表明位于长尾位置的曝光率低的项目产生的利润不低于只销售曝光率高的项目的利润。

推荐系统的任务就是连接用户和信息(物品)。同时推荐系统要解决的另一个问题是需要发掘用户的行为,找到用户的个性化需求,从而将长尾商品准确的推荐给需要它的用户,同时帮助用户发现那些他们感兴趣但是很难发现的商品。

2.常用评测指标

  1. 用户满意度

    用户调查、在线实验(购买率、点击率、用户停留时间、转化率等)

  2. 预测准确度

    用来度量实际行为与推荐系统预测结果的准确度。

    i. 评分预测

    评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算.

    对于测试集 T {T} T中的一个用户 u u u和物品 i i i,令 r u i r_{ui} rui是用户 u u u对物品 i i i的实际评分,而 r u i ^ \hat{r_{ui}} rui^是推荐模型预测出的评分。那么RMSE可以定义为:
    R M S E = ∑ u , i ∈ T ( r u i − r ^ u i ) 2 ∣ T ∣ RMSE = \sqrt{\frac{\sum_{u,i \in T}(r_{ui} - \hat{r}_{ui})^2}{|T|}} RMSE=Tu,iT(ruir^ui)2
    MAE定义为:
    M A E = ∑ u , i ∈ T ∣ r u i − r ^ u i ∣ ∣ T ∣ MAE = \frac{\sum_{u,i \in T}|r_{ui} - \hat{r}_{ui}|}{|T|} MAE=Tu,iTruir^ui
    RMSE由于存在平方项,使得使得用户真实评分与推荐系统预测评分相差较大的用户加大了惩罚,即该评测指标对系统要求更加的苛刻。

    ii. TopN推荐

    推荐系统在给用户推荐物品的时候,往往会给用户一个列表的推荐物品,这种场景下的推荐成为是TopN推荐,该推荐方式最常用的预测准确率指标一般是精确率(precision)召回率(recall),令 R ( u ) R(u) R(u)为通过推荐模型得到的推荐列表, T ( u ) T(u) T(u)为用户在实际场景中(测试集)的行为列表.

    精确率(precision): 分类正确的正样本个数占分类器判定为正样本的样本个数比例(这里 R ( u ) R(u) R(u)相当于是模型判定的正样本)
    P r e c i s i o n = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U ∣ R ( u ) ∣ Precision= \frac{\sum_{u \in U}|R(u) \cap T(u)|}{\sum_{u \in U}|R(u)|} Precision=uUR(u)uUR(u)T(u)

    召回率(recall): 分类正确的正样本个数占真正的正样本个数的比例(这里的 T ( u ) T(u) T(u)相当于真正的正样本集合)

R e c a l l = ∑ u ∈ U ∣ R ( u ) ∩ T ( u ) ∣ ∑ u ∈ U ∣ T ( u ) ∣ Recall= \frac{\sum_{u \in U}|R(u) \cap T(u)|}{\sum_{u \in U}|T(u)|} Recall=uUT(u)uUR(u)T(u)

  1. 覆盖率

    覆盖率是用来描述一个推荐系统对物品长尾的发掘能力, 可以通过研究物品在推荐列表中出现的次数分布来描述。如果这个分布比较平缓说明推荐系统的覆盖率比较高,而如果分布比较陡说明推荐系统的覆盖率比较低.下面分别使用信息熵基尼系数来定义覆盖率.

    信息熵定义覆盖率: 其中 p ( i ) p(i) p(i)是物品 i i i的流行度除以所有物品流行度之和
    H = − ∑ i = 1 n p ( i ) l o g p ( i ) H = -\sum_{i=1}^n p(i) logp(i) H=i=1np(i)logp(i)
    分布越均匀信息熵越大

    基尼系数定义覆盖率:其中 i j i_j ij是按照物品流行度p从小到大排序的物品列表中第 j j j个物品,一共n个物品
    G = 1 n − 1 ∑ j = 1 n ( 2 j − n − 1 ) p ( i j ) G=\frac{1}{n-1} \sum_{j=1}^{n}(2j-n-1)p(i_{j}) G=n11j=1n(2jn1)p(ij)

    p ( i j ) p(i_{j}) p(ij)代表第j个物品流行度在总流行度的比重

  2. 多样性

    度量推荐列表中物品的多样性换句话说就是度量推荐列表中所有物品之间的不相似性,可以通过不同的相似性函数来度量推荐列表中商品的相似性,比如商品基于内容的相似,基于协同过滤的相似,这样就可以得到不同角度的多样性。

    令函数 s ( i , j ) s(i,j) s(i,j)为物品 i i i和物品 j j j的相似性,那么用户推荐列表的多样性可以定义为:
    D i v e r s i t y ( R ( u ) ) = 1 − ∑ i , j ∈ R ( u ) s ( i , j ) 1 2 ∣ R ( u ) ∣ ( ∣ R ( u ) ∣ − 1 ) Diversity(R(u))=1-\frac{\sum_{i,j \in R(u)}s(i,j)}{\frac{1}{2}|R(u)|(|R(u)|-1)} Diversity(R(u))=121R(u)(R(u)1)i,jR(u)s(i,j)

    计算推荐列表 R ( u ) R(u) R(u)中不同物品 i i i j j j之间的相似性,求和,再除以( i i i j j j)组合总数(分母)(i!=j)

    推荐系统整体的多样性可以定义为所有用户推荐列表多样性的平均值:
    D i v e r s i t y = 1 U ∑ u ∈ U D i v e r s i t y ( R ( u ) ) Diversity = \frac{1}{U} \sum_{u\in U}Diversity(R(u)) Diversity=U1uUDiversity(R(u))

  3. 新颖性

    满足推荐的新颖性最简单的方法就是给用户推荐他们之前没有看过的物品,但是每个用户没见过的物品数量是非常庞大的,所以一般会计算推荐物品的平均流行度,流行度越低的物品越有可能让用户觉得新颖,因此,如果推荐结果中的物品平均热门程度比较低说明推荐的结果就可能比较新颖.

  4. AUC曲线

    AUC(Area Under Curve),ROC曲线下与坐标轴围成的面积

    在讲AUC前需要理解混淆矩阵,召回率,精确率,ROC曲线等概念

    在这里插入图片描述 TP:真的真了(真实值是真的,预测也是真)

    FN:真的假了(真实值是真的,预测为假了)

    FP:假的真了(真实值是假的,预测为真了)

    TN:假的假了(真实值是假的,预测也是假)

    召回率与准确率(上述已经进行了说明),下面是另一种形势的定义,本质上都是一样的: R e c a l l = T P T P + F N   P r e c i s e = T P T P + F P Recall = \frac{TP}{TP+FN}\ Precise=\frac{TP}{TP+FP} Recall=TP+FNTP Precise=TP+FPTP ROC(Receiver Operating Characteristic Curve)曲线:
    在这里插入图片描述 ROC曲线的横坐标为假阳性率(False Positive Rate, FPR),N是真实负样本的个数, FP是N个负样本中被分类器预测为正样本的个数。

    纵坐标为真阳性率(True Positive Rate, TPR),P是真实正样本的个数,TP是P个正样本中被分类器预测为正样本的个数。

    AUC为ROC曲线与横坐标面积,越接近0.5说明模型越不可靠,越接近1说明真实性越高。

3.召回

3.1 召回层在推荐系统架构中的位置及作用

基于工程上的考虑将推荐过程分成召回层排序层

召回层负责将海量的候选集快速缩小为几万到几千的规模;而排序层则负责对缩小后的候选集进行精准排序。在召回阶段往往会利用少量的特征和简单的模型对大规模的数据集进行快速的筛选(粗筛),而在排序层一般会使用更多的特征和更加复杂的模型进行精准的排序(精筛)。

召回层:待计算的候选集合大、计算速度快、模型简单、特征较少,尽量让用户感兴趣的物品在这个阶段能够被快速召回,即保证相关物品的召回率

排序层:首要目标是得到精准的排序结果。需要处理的物品数量少,可以利用较多的特征,使用比较复杂的模型。

在设计召回层时,“计算速度”和“召回率”其实是矛盾的两个指标,为提高“计算速度”,需要使召回策略尽量简单一些;而为了提高“召回率”,要求召回策略尽量选出排序模型所需要的候选集,这也就要求召回策略不能过于简单。在权衡计算速度和召回率后,目前工业界主流的召回方法是采用多个简单策略叠加的“多路召回策略”

3.2 多路召回策略

如下图是多路召回的一个示意图,在多路召回中,每个策略之间毫不相关,所以一般可以写并发多线程同时进行,这样可以更加高效。
在这里插入图片描述具体使用哪些召回策略其实是与业务强相关的,针对不同的任务就会有对于该业务真实场景下需要考虑的召回规则。例如视频推荐,召回规则可以是“热门视频”、“导演召回”、“演员召回”、“最近上映“、”流行趋势“、”类型召回“等等。

多路召回存在的问题

虽然多路召回权衡了计算速度和召回率的问题,可以使得用于排序的候选商品更加的丰富,但是实际的多路召回仍然存在一些问题。如上图所示,对于每一路召回都会从商品集合中拉回K个商品,这里的K是一个超参数,对于K的选择一般需要通过离线评估加线上的A/B测试来确定合理的K值。除此之外,对于不同的任务具体策略的选择也是人工基于经验的选择,选择的策略之间的信息是割裂的,无法总和考虑不同策略对一个物品的影响

基于上述问题,Embedding召回是一个综合性强且计算速度也能满足需求的召回方法。

3.3 Embedding召回

Embedding其实是一种思想,主要目的是将稀疏的向量(如one-hot编码)表示转换成稠密的向量,下图直观的显示了one-hot编码和Embedding表示的区别于联系,即Embedding相当于是对one-hot做了平滑,而onehot相当于是对Embedding做了max pooling。

在这里插入图片描述目前主流的Embedding技术主要可以分为三大类。

  • text embedding
  • image embedding
  • graph embedding

在推荐系统领域,text embedding技术是目前使用最多的embedding技术,对于文本特征可以直接使用该技术,对于非文本的id类特征,可以先将其转化成id序列再使用text embedding的技术获取id的embedding再做召回。

常见的text Embedding的技术有:

  • 静态向量:word2vec, fasttext, glove
  • 动态向量:ELMO, GPT, BERT

对于image embedding其实主要是对于有图或者视频的特征,目前计算机视觉模型已经发展的比较成熟了,对于图像与视频的识别都有效果比较好的模型,大部分都是卷积模块通过各种连接技巧搭建的高效模型,可以使用现有的预训练模型提取图像或者视频的向量特征,然后用于召回。

对于社交网络相关的推荐,进行推荐的用户与用于之间或者商品之间天然的存在某种复杂的图结构的关系,如何利用图中节点与节点之间的关系对其进行向量化是非常关键的,在这种场景下基于序列的text embedding和基于卷积模型的image embedding都显得力不从心,在这样的背景下Graph Embedding逐渐在推荐系统中流行起来。经典的Graph Embedding模型有, Deep Walk, Node2Vec,LINE以及比较新的阿里巴巴2018年公布的EGES graph Embedding模型。

参考资料

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值