赞
踩
论文连接:Learning Tree-based Deep Model for Recommender Systems
基于用户历史行为或者其他有着相似偏好的用户行为来推断用户兴趣的个性化推荐已经被广泛应用于各个领域。
挑战:
小贴士:新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。在一个网站中实现新颖性的最简单办法是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。比如在一个视频网站中,新颖的推荐不应该给用户推荐那些他们已经看过、打过分或者浏览过的视频。但是,有些视频可能是用户在别的网站看过,或者是在电视上看过,因此仅仅过滤掉本网站中用户有过行为的物品还不能完全实现新颖性。
O’scar Celma在博士论文“Music Recommendation and Discovery in the Long Tail”中研究了新颖度的评测。评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性。
但是,用推荐结果的平均流行度度量新颖性比较粗略,因为不同用户不知道的东西是不同的。因此,要准确地统计新颖性需要做用户调查。
最近几年关于多样性和新颖性的研究越来越受到推荐系统研究人员的关注。ACM的推荐系统会议在2011年有一个专门的研讨会讨论推荐的多样性和新颖性。该研讨会的组织者认为,通过牺牲精度来提高多样性和新颖性是很容易的,而困难的是如何在不牺牲精度的情况下提高多样性和新颖性。关心这两个指标的读者可以关注一下这个研讨会最终发表的论文。
以往的解决办法:
页面在收到一个用户的请求后,在matching server上系统会使用用户的特征、情境特征和物品特征从百万级别的语料库中生成一个相对较小的(通常为几百个)候选物品集。这个阶段也是tree-based recommendation model所应用的地方。
依据这几百个候选物品集,real time prediction server会使用更具有表达能力但同时也会更费时的模型去预测比如点击率(click through rate)或者转化率(conversion rate)。
从一个完整的语料库中构建一个较小的候选物品集是至关重要的,在这一阶段需要权衡效率和有效性。
在hierarchical softmax中,树中的每个叶子节点都有唯一一个编码,依据从根节点到该节点的路径。比如,我们以1表示选择左分支,0表示选择右分支,在上图中 n 9 n_9 n9的编码为 110 110 110, n 15 n_{15} n15的编码为 000 000 000。
对于每个用户
u
u
u,每个在
j
j
j层的非叶子节点
n
n
n满足下式:
P
(
j
)
(
n
∣
u
)
=
max
n
c
∈
n’s children nodes in level j+1
P
(
j
+
1
)
(
n
c
∣
u
)
α
(
j
)
P^{(j)}(n|u)=\frac{\max_{n_c\in{\text{n's children nodes in level j+1}}}P^{(j+1)}(n_c|u)}{\alpha^{(j)}}
P(j)(n∣u)=α(j)maxnc∈n’s children nodes in level j+1P(j+1)(nc∣u)
∏ u ( ∏ n ∈ Y u + P ( y ^ u ( n ) = 1 ∣ n , u ) ∏ n ∈ Y u − P ( y ^ u ( n ) = 0 ∣ n , u ) ) \prod_{u}(\prod_{n\in \mathcal{Y^{+}_{u}}}P(\hat{y}_{u}(n)=1|n,u)\prod_{n\in \mathcal{Y^{-}_{u}}}P(\hat{y}_{u}(n)=0|n,u)) u∏(n∈Yu+∏P(y^u(n)=1∣n,u)n∈Yu−∏P(y^u(n)=0∣n,u))
− ∑ u ∑ n ∈ Y u + ∪ Y u − y u ( n ) l o g P ( y ^ u ( n ) = 1 ∣ n , u ) + ( 1 − y u ( n ) ) l o g P ( y ^ u ( n ) = 0 ∣ n , u ) -\sum_{u}\sum_{n\in \mathcal{Y^{+}_{u}}\cup\mathcal{Y^-_{u}}}y_{u}(n)logP(\hat{y}_u(n)=1|n,u)+(1-y_u(n))logP(\hat{y}_{u}(n)=0|n,u) −u∑n∈Yu+∪Yu−∑yu(n)logP(y^u(n)=1∣n,u)+(1−yu(n))logP(y^u(n)=0∣n,u)
输入:用户状态
u
u
u,推荐树,
k
k
k,学好的模型
输出:
k
k
k个叶子节点
结果集 A = ∅ A=\varnothing A=∅,候选集 Q = { n 1 } Q=\{n_1\} Q={n1}
重复:
直到
∣
Q
∣
=
=
0
|Q|==0
∣Q∣==0
返回
A
A
A中的top
k
k
k(依据
P
(
y
^
u
(
n
)
=
1
∣
u
,
n
)
P(\hat{y}_u(n)=1|u,n)
P(y^u(n)=1∣u,n))
我们用深度模型来计算
P
(
j
)
(
y
^
n
(
u
)
=
1
∣
u
,
n
)
P^{(j)}(\hat{y}_n(u)=1|u,n)
P(j)(y^n(u)=1∣u,n)
在Hierarchical softmax中,基于专家知识的词的层次构建词的层次结构。但是对于推荐树,这样的专家知识并不是可以普遍获得的,一个直觉上的替代是我们可以基于物品的共线性和相似性采用层次聚类的方法,但是聚类树可能是极度不平衡的,这对于之后的训练和检索都是不利的。
基于物品对的相似性,文献Label embedding trees for largemulti-class tasks给出了一个利用谱聚类递归地将物品分为子集的方法,但是该算法的时间复杂度为 ∣ C ∣ 3 |C|^3 ∣C∣3,在大规模corpus上的可延展性比较差。
很自然地,我们希望相似的物品在较近的位置。
考虑到在许多领域物品的category信息都是可获得的,我们首先想到的是利用物品种类信息来初始化推荐树。
以二叉树为例:
对于一个用户
u
u
u,模型召回的物品集记作
P
u
(
∣
P
u
∣
=
M
)
\mathcal{P}_u(|\mathcal{P}_u|=M)
Pu(∣Pu∣=M),真实的物品集记作
G
u
\mathcal{G}_u
Gu。
P
r
e
c
i
s
i
o
n
@
M
(
u
)
=
∣
P
u
∩
G
u
∣
M
Precision@M(u)=\frac{|\mathcal{P}_u\cap\mathcal{G}_u|}{M}
Precision@M(u)=M∣Pu∩Gu∣
R
e
c
a
l
l
@
M
(
u
)
=
∣
P
u
∩
G
u
∣
∣
G
u
∣
Recall@M(u)=\frac{|\mathcal{P}_u\cap\mathcal{G}_u|}{|\mathcal{G}_u|}
Recall@M(u)=∣Gu∣∣Pu∩Gu∣
F
−
M
e
a
s
u
r
e
@
M
(
u
)
=
2
⋅
P
r
e
c
i
s
i
o
n
@
M
(
u
)
⋅
R
e
c
a
l
l
@
M
(
u
)
P
r
e
c
i
s
i
o
n
@
M
(
u
)
+
R
e
c
a
l
l
@
M
(
u
)
F-Measure@M(u)=\frac{2\cdot Precision@M(u)\cdot Recall@M(u)}{Precision@M(u)+Recall@M(u)}
F−Measure@M(u)=Precision@M(u)+Recall@M(u)2⋅Precision@M(u)⋅Recall@M(u)
N
o
v
e
l
t
y
@
M
(
u
)
=
∣
P
u
∖
S
u
∣
M
Novelty@M(u)=\frac{|\mathcal{P}_u\setminus \mathcal{S_u}|}{M}
Novelty@M(u)=M∣Pu∖Su∣
其中
S
u
\mathcal{S}_u
Su为推荐前与用户有交互行为的物品集。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。