推荐系统-task1

推荐系统概论

本次课程是由Datawhale推荐系统小组内部成员共同完成,针对推荐系统小白的一入门课程。时间从10月19日到10月30日,共五个打卡。本次打卡是第一次打卡,主要高屋建瓴谈推荐系统的一些概念。

1.概念

1.1 什么是推荐系统

  • 定义:推荐系统是指,在用户需求并不十分明确的情况下进行信息的过滤,推荐其可能喜欢的内容的一种系统。比如大家都知道的淘宝的推荐,基于你之前的购物信息,推荐一些你可能会购买的商品的内容,还有短视频推荐,音乐每日推荐等类似系统。
  • 作用:平台能够最大限度地吸引用户,留存用户,增长用户黏性,提高用户转化率。对于用户,方便快速找到自己感兴趣的内容,对于企业,当然是留住用户,增加盈利。

1.2 什么才是一个好的推荐系统

推荐系统的好坏可以从以下几点来看

  • 用户满意度:用户是推荐系统中非常重要的参与者,他们的满意度也直接决定了推荐系统的好坏.但是用户满意度这个指标无法离线计算,只能通过用户调查或者在线实验获得.这里在线实验一般是通过用户的线上行为统计得到的,比如电商场景中,用户如果购买了推荐的商品说明一定程度上他们是满意的,因此可以通过购买率度量用户的满意度,与购买率类似的点击率,用户停留时间和转化率等指标都可以用来度量用户的满意度.(满意度中包含很多可以量化的指标,点击率,购买率,停留时间等,应该是最重要的指标,满意度和预测准确度有些指标重合)

  • 预测准确度:度量用户的实际行为与推荐系统预测结果的准确度,该指标是最重要的离线评价指标,因为可以通过离线计算得到.常用的均方误差和平均绝对误差是常用的指标。

  • 覆盖率:推荐系统所有推荐出来的商品集合数占总物品集合数的比例.但是对于相同的覆盖率,不同物品的数量分布,或者说是物品的流行度分布是可以不一样的.为了更好的描述推荐系统挖掘长尾的能力,需要统计不同物品出现次数的分布.如果所有的物品都出现在推荐列表中,并且出现的次数都差不多,那么推荐系统发掘长尾的能力就很好.所以可以通过研究物品在推荐列表中出现的次数分布来描述推荐系统挖掘长尾的能力,如果这个分布比较平缓说明推荐系统的覆盖率比较高,而如果分布比较陡说明推荐系统的覆盖率比较低.(能否"物尽其用")

  • 多样性和新颖性:推荐系统给出的推荐列表内物品,应该具有较大的差异性。并且能推荐一些冷门物品给用户。(个人认为,多样性和新颖性,对于好的推荐系统是相当重要的,不至于把用户困于自己喜好的孤岛上)

2.推荐系统常用指标

  • AUC曲线

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

在讲AUC前需要理解混淆矩阵,召回率,精确率,ROC曲线等概念
在这里插入图片描述
TP:真的真了(真实值是真的,预测也是真)

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

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

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

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

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

3.常用技术思路

3.1 召回层与排序层

推荐系统架构中召回层与排序层是推荐系统的核心算法层,而将推荐过程分成召回层与排序层主要是基于工程上的考虑,其中召回阶段负责将海量的候选集快速缩小为几万到几千的规模;而排序层则负责对缩小后的候选集进行精准排序。所以在召回阶段往往会利用少量的特征和简单的模型对大规模的数据集进行快速的筛选,而在排序层一般会使用更多的特征和更加复杂的模型进行精准的排序。

下面是召回层与排序层的特点

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

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

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

3.2 多路召回策略

所谓的“多路召回”策略,就是指采用不同的策略、特征或简单模型,分别召回一部分候选集,然后把候选集混合在一起供后续排序模型使用,可以明显的看出,“多路召回策略”是在“计算速度”和“召回率”之间进行权衡的结果。其中,各种简单策略保证候选集的快速召回,从不同角度设计的策略保证召回率接近理想的状态,不至于损伤排序效果。

如下图是多路召回的一个示意图,在多路召回中,每个策略之间毫不相关,所以一般可以写并发多线程同时进行,这样可以更加高效。

在这里插入图片描述

上图只是一个多路召回的例子,也就是说可以使用多种不同的策略来获取用户排序的候选商品集合,而具体使用哪些召回策略其实是与业务强相关的,针对不同的任务就会有对于该业务真实场景下需要考虑的召回规则。例如视频推荐,召回规则可以是“热门视频”、“导演召回”、“演员召回”、“最近上映“、”流行趋势“、”类型召回“等等。

多路召回存在的问题

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

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

3.3 Embedding召回

在当前的主流推荐系统中,Embedding的身影已经无处不在,从一定意义上可以说,把Embedding做好了,整个推荐系统的一个难题就攻克了,下面会从什么是Embedding,常见的Embedding技术有哪些,以及如何用Embedding做召回进行一个简单的总结。

Embedding是什么?

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

preview

常见的Embedding技术有哪些?

目前主流的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模型。

猜你喜欢

转载自blog.csdn.net/hu_hao/article/details/109171349