1 推荐网络的发展历史

1.1 传统推荐系统的发展

图片源自《深度学习与推荐系统》

1.2 深度学习推荐系统的发展

2 常用评测指标

2.1 准确度

准确度用来衡量用户的实际行为与模型的预测结果的差异,可以离线计算得到。常用的有两种方法:

  • 评分预测
  • TopN推荐

2.1.1 评分预测

模型对用户的对商品评分记录历史进行建模,算出用户的兴趣模型。该模型用来预测用户对新商品的评分。评分预测的衡量metric通常使用是RMSE(均方根误差)和MAE(平均绝对误差)。

对于用户$u$和商品$i$,令$r_{ui}$是用户$u$对商品$i$的真实评分,$\hat{r_{ui}}$是模型预测的评分,则两个指标为:

$$ \begin{aligned} &RMSE =& \sqrt{\frac{\sum_{u,i \in T}(r_{ui} - \hat{r}_{ui})^2}{|T|}}\\ \\ &MAE =& \frac{\sum_{u,i \in T}|r_{ui} - \hat{r}_{ui}|}{|T|} \end{aligned} $$

其中,RMSE通过平方项放大了差异较大的惩罚,因此比MAE更严格。

2.1.2 TopN推荐

推荐系统通常不是推荐一个商品,而是推荐一个列表,这个场景被称为TopN推荐。衡量TopN推荐的metric通常是precision(精确率)与recall(召回率)。

二者的数学定义如下:

$$ \begin{aligned} &Recall = &\frac{TP}{TP+FN}\\ &Precise=&\frac{TP}{TP+FP} \end{aligned} $$

令$R(u)$为推荐模型提供的推荐列表,$T(u)$为用户在实际环境中(测试集)的行为列表,那么两个指标分别为:

$$ \begin{aligned} &Precision=& \frac{\sum_{u \in U}|R(u) \cap T(u)|}{\sum_{u \in U}|R(u)|} \\ &Recall=& \frac{\sum_{u \in U}|R(u) \cap T(u)|}{\sum_{u \in U}|T(u)|} \end{aligned} $$

为了评估的全面性,通常会使用不同的推荐列表长度来计算多组precision与recall,并分别画出precisoon曲线和recall曲线(不是PR曲线)

2.2 覆盖率(Coverage)

覆盖率用来计算推荐系统对商品长尾的发掘能力。

其定义为:模型推荐的商品集合数占总商品集合数的比例。而对于相同的覆盖率,不同商品的数量分布(流行度分布)可以有区别。为了更好的描述推荐系统挖掘长尾的能力,需要统计不同商品出现次数的分布。

如果每个商品都曾出现在推荐列表中,而且出现的次数差不多,那么模型发掘长尾的能力就更强。因此可以通过商品在推荐列表中出现的次数分布来描述模型挖掘长尾的能力。

如果这个分布比较平缓,则说明模型的覆盖率比较高,如果分布陡峭,则说明模型的覆盖率比较低。通常使用信息熵和基尼系数来定义覆盖率。

  • 信息熵:其中$p(i)$是商品$i$的流行度除以全部商品流行度之和

$$ H = -\sum_{i=1}^n p(i) logp(i) $$

  • 基尼系数: 其中$i_j$是按照商品流行度从低到高排序的第$j$个商品,$p_{ij}$是给定商品流行度分布后的基尼系数

$$ G=\frac{1}{n-1} \sum_{j=1}^{n}(2j-n-1)p(i_{j}) $$

赫希曼根据洛伦茨曲线提出的判断分配平等程度的指标。设实际流行度曲线和流行分配绝对平均曲线之间的面积为 A,实际流行度曲线右下方的面积为 B。并以 $A/(A+B)$表示不平等程度。

如果系统的流行度越平均,那么A的面积就会越小,从而基尼系数会越低。

基尼系数最大为1,最小为0。

基尼系数越接近0,表明越趋于平等。国际惯例把$0.2$以下视为绝对平均,$0.2-0.3$视为比较平均;$0.3-0.4$视为相对合理;$0.4-0.5$视为差距较大,当基尼系数达到$0.5$以上时,则表示差距悬殊。

2.3 多样性

人通常会对很多品类兴趣,因此一个好的推荐系统模型的推荐列表,应该包含更多的类别,这样才能用户找到感兴趣商品的概率才会更高。

推荐列表中商品的多样性,等同于推荐列表中所有商品间的不相似性。因此,可以通过多重相似性函数来衡量。例如,基于内容的相似,或者基于协同过滤的相似,这样就可以得到不同角度的多样性。令函数$s(i,j)$为商品$i$和商品$j$的相似性,那么推荐列表的多样性可以定义为:

$$ Diversity(R(u))=1-\frac{\sum_{i,j \in R(u)}s(i,j)}{\frac{1}{2}|R(u)|(|R(u)|-1)} $$

整体模型的多样性,可以使用所有用户推荐列表的多样性的均值:

$$ Diversity = \frac{1}{U} \sum_{u\in U}Diversity(R(u)) $$

2.4 新颖性

简单来说,新颖性就是给用户推荐他之前没有看过的商品,其数量非常多,因此通常会计算推荐商品的平均流行度,流行度越低的商品,则越可能让用户觉得新颖。因此,推荐列表的平均热门程度越低,则推荐结果新颖的可能性越大。

3 召回

3.1 召回(match)与排序(rank)是什么?

推荐系统中有两大问题:召回和排序。

想在全部的商品集合中精确找出推荐商品,会花费很多时间。因此,可以通过下面两步:

  1. 用简单的模型缩小候选商品的范围
  2. 用复杂的模型更精确的找出商品

召回就是第一步,从全部商品集合中,找出一个更小的集合,并将集合返回给排序。

第二步,排序对所有召回的商品进行打分并排序,选出得分最高的几个结果推荐给用户。

在召回阶段,通常会利用较少的特征和简单的模型,在全量数据集上做快速筛选,而在排序通常会用更多的特征,以及更复杂的模型做更准确的排序。

3.2 多路召回

3.2.1 什么是多路召回?

由于召回通常不够精准,因此也可以采用不同的召回(不同特征或模型)分别召回候选集,接着把候选集并集给排序模型使用。这样就可以在计算速度和召回率之间做出平衡。

利用多路召回策略,可以从不同的视角选择候选集。而且每个策略间无关,因此可以并行计算出不同的候选集。

召回模型的例子:

除此之外,对于不同的任务具体策略的选择也是人工基于经验的选择,选择的策略之间的信息是割裂的,无法总和考虑不同策略对一个商品的影响。

3.2.3 Embedding召回

在多路召回中,每路召回会选择K个商品,这个K是一个超参数。因此,通常需要离线+线上AB Test来确定合理的K值。此外,不同策略间考虑的信息不互通。因此,引出了Embedding召回。

目前的推荐系统算法中,Embedding可以说是最重要的部分,也是整个模型的关键瓶颈。

Embedding的思想,是将稀疏(parse)的向量(例如one-hot)转换成稠密(dense)的向量。

推荐系统中,通常先使用text embedding提取id或文本特征的embedding再进行召回。

此外,在社交网络场景中,用户与商品间存在复杂的图结构关系,通常可以使用Graph Embedding(例如Deep Walk,Node2Vec,LINE)来做。

最后修改:2021 年 11 月 22 日 06 : 06 PM
如果觉得我的文章对你有用,请随意赞赏