1. 推荐系统的定义及应用
推荐算法的本质是通过一定的方式将用户和物品联系起来,而不同的推荐系统利用了不同的方式。
联系用户和物品的常用方式,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/78a3bdcdb23c9ae8540e6ab659d1aefa.png)
推荐系统在电子商务中最主要的应用为:个性化商品推荐列表和相关商品的推荐列表。
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=∑u∈U∣R(u)∣∑u∈U∣R(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=∑u∈U∣T(u)∣∑u∈U∣R(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=∣I∣∣∪u∈UR(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=1∑np(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=n−11j=1∑n(2j−n−1)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)∈[0,1]定义了物品 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=1−21∣R(u)∣(∣R(u)∣−1)∑i,j∈R(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=∣U∣1u∈U∑Diversity(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章 好的推荐系统