(一)好的推荐系统

1. 推荐系统的定义及应用

推荐算法的本质是通过一定的方式将用户和物品联系起来,而不同的推荐系统利用了不同的方式。

联系用户和物品的常用方式,如下图所示:

推荐系统在电子商务中最主要的应用为:个性化商品推荐列表和相关商品的推荐列表。



2. 推荐系统评测

2.1 实验方法

在推荐系统中, 主要有3种评测推荐效果的实验方法:
离线实验(offline experiment) 、用户调查(user study)、在线实验(online experiment) 。

离线实验

离线实验的方法一般由以下几个步骤构成:
(1) 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;
(2) 将数据集按照一定的规则分成训练集和测试集;
(3) 在训练集上训练用户兴趣模型,在测试集上进行预测;
(4) 通过事先定义的离线指标评测算法在测试集上的预测结果。

优点:
不需要对实际系统的控制权;
不需要用户参与实验;
速度快,可以测试大量算法。

缺点:
无法计算商业上关心的指标;
离线实验的指标和商业指标存在差距。


2.2 评测指标

对于离线实验,其优化目标为:
最 大 化 预 测 准 确 度 使 得 覆 盖 率 > A 多 样 性 > B 新 颖 性 > C 最大化预测准确度 \\ 使得 \quad 覆盖率>A \\ \qquad \quad 多样性>B \\ \qquad \quad 新颖性>C 使>A>B>C

其中, A A A B B B C C C的取值应该视不同的应用而定。


预测准确度

预测准确度度量一个推荐系统或推荐算法预测用户行为的能力,是最重要的推荐系统离线评测指标。

  • TopN推荐
    网站在提供推荐服务时,一般是给用户一个个性化的推荐列表,这种推荐称作TopN推荐。

TopN推荐的预测准确率一般通过精确率(precision) /召回率(recall) 度量。

R ( u ) R(u) R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而 T ( u ) T(u) T(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)

推荐结果的召回率定义为:
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)

注意:
若推荐的目的是找到用户最有可能感兴趣的物品,而非预测用户给所推荐的物品什么样的评分。那么,
TopN推荐更符合实际的应用需求。


覆盖率

覆盖率(coverage) 描述一个推荐系统对物品长尾的发掘能力。

最简单的定义为:推荐系统能够推荐出来的物品占总物品集合的比例。

假设系统的用户集合为 U U U,推荐系统给每个用户推荐一个长度为 N N N的物品列表 R ( u ) R(u) R(u),则有计算公式:

C o v e r a g e = ∣ ∪ u ∈ U R ( u ) ∣ ∣ I ∣ Coverage=\frac{|\cup_{u \in U}R(u)|}{|I|} Coverage=IuUR(u)

由此可得,
覆盖率是一个内容提供商会关心的指标;
覆盖率为100%的推荐系统,可以将每个物品都推荐给至少一个用户;
热门排行榜的推荐覆盖率很低,会推荐那些热门的物品,这些物品在总物品中占的比例很小;
一个好的推荐系统需要有较高的覆盖率。


以上的定义过于粗略,因为覆盖率为100%的系统可以有无数的物品流行度分布。
注:物品流行度指对物品产生过行为(浏览/购买/评分)的用户总数。

可以通过研究物品在推荐列表中出现次数的分布,描述推荐系统挖掘长尾的能力:
若所有的物品都出现在推荐列表中,且出现的次数差不多,那么推荐系统发掘长尾的能力很好。
若分布比较平,则推荐系统的覆盖率较高;若分布较陡峭,则推荐系统的覆盖率较低。


可以利用两种指标来定义覆盖率:

(1) 信息熵

H = − ∑ i = 1 n p ( i ) l o g   p ( i ) H=-\sum_{i=1}^{n}p(i)log \, p(i) H=i=1np(i)logp(i)

其中, p ( i ) p(i) p(i)是物品 i i i的流行度除以所有物品流行度之和。

(2) 基尼系数(Gini Index)

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)

其中, i j i_j ij是按照物品流行度 p p p从小到大排序的物品列表中第 j j j个物品。


推荐系统的初衷是希望消除马太效应,使得各种物品都能被展示给对它们感兴趣的某一类人群。
但是,很多研究表明,现在主流的推荐算法(如协同过滤算法)是具有马太效应的。

评测推荐系统是否具有马太效应的简单办法是使用基尼系数。
假设 G 1 G1 G1是从初始用户行为中计算出的物品流行度的基尼系数, G 2 G2 G2是从推荐列表中计算出的物品流
行度的基尼系数,若 G 2 > G 1 G2>G1 G2>G1,则认为推荐算法具有马太效应。


多样性

多样性描述了推荐列表中物品两两之间的不相似性。因此,多样性和相似性是对应的。

假设 s ( i , j ) ∈ [ 0 , 1 ] s(i, j) \in [0,1] s(i,j)[01]定义了物品 i i i j j j之间的相似度,

那么,用户 u u u的推荐列表 R ( u ) R(u) R(u)的多样性定义为:

D i v e r s i t y = 1 − ∑ i , j ∈ R ( u ) , i ≠ j s ( i , j ) 1 2 ∣ R ( u ) ∣ ( ∣ R ( u ) ∣ − 1 ) Diversity=1-\frac {\sum_{i,j \in R(u),i \neq j}s(i, j)}{\frac {1}{2}|R(u)|(|R(u)|-1)} Diversity=121R(u)(R(u)1)i,jR(u),i=js(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))

其中,不同的物品相似度度量函数 s ( i , j ) s(i, j) s(i,j)可以定义不同的多样性:
若用内容相似度描述物品间的相似度,可以得到内容的多样性函数;
若用协同过滤的相似度函数描述物品间的相似度,可以得到协同过滤的多样性函数。

关于推荐系统多样性最好达到什么程度,
假设用户喜欢动作片和动画片,且用户80%的时间在看动作片,20%的时间在看动画片,可以提供4种不同的推荐列表:
A列表中有10部动作片,没有动画片;
B列表中有10部动画片,没有动作片;
C列表中有8部动作片和2部动画片;
D列表有5部动作片和5部动画片。
一般认为,C列表是最好的。因为它既具有一定的多样性,又考虑到了用户的主要兴趣。


新颖性

新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。

在一个网站中实现新颖性的最简单办法是,把用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。



参考

《推荐系统实践》—— 第1章 好的推荐系统

猜你喜欢

转载自blog.csdn.net/m0_38111466/article/details/108294101