主要分为时间上下文和地点上下文,其中时间上下文主要是保证系统的实时性。下面介绍几种算法。
时间上下文推荐算法
- 最近最热门
计算公式:
n
i
(
T
)
=
∑
(
u
,
i
,
t
)
∈
Train,
t
<
T
1
1
+
α
(
T
−
t
)
n_{i}(T)=\sum_{(u, i, t) \in \text { Train, } t<T} \frac{1}{1+\alpha(T-t)}
ni(T)=(u,i,t)∈ Train, t<T∑1+α(T−t)1
- 时间上下文相关的ItemCF算法
对物品相似度和在线推荐两步进行时间相关改进:
回顾:
sim
(
i
,
j
)
=
∑
u
∈
N
(
i
)
∩
N
(
i
)
1
/
l
o
g
(
1
+
∣
N
(
u
)
∣
)
∣
N
(
i
)
∣
∣
N
(
j
)
∣
\operatorname{sim}(i, j)=\frac{\sum_{u \in N(i) \cap N(i)} 1/log(1+|N(u)|)}{\sqrt{|N(i)||N(j)|}}
sim(i,j)=∣N(i)∣∣N(j)∣∑u∈N(i)∩N(i)1/log(1+∣N(u)∣)
p
(
u
,
i
)
=
∑
j
∈
N
(
w
)
sim
(
i
,
j
)
p(u, i)=\sum_{j \in N(w)} \operatorname{sim}(i, j)
p(u,i)=j∈N(w)∑sim(i,j)
改进:
sim
(
i
,
j
)
=
∑
u
∈
N
(
i
)
∩
N
(
i
)
f
(
∣
t
u
i
−
t
u
j
∣
)
∣
N
(
i
)
∣
∣
N
(
j
)
∣
\operatorname{sim}(i, j)=\frac{\sum_{u \in N(i) \cap N(i)} f\left(\left|t_{u i}-t_{u j}\right|\right)}{\sqrt{|N(i)||N(j)|}}
sim(i,j)=∣N(i)∣∣N(j)∣∑u∈N(i)∩N(i)f(∣tui−tuj∣)
p
(
u
,
i
)
=
∑
j
∈
N
(
u
)
∩
S
(
i
,
K
)
sim
(
i
,
j
)
1
1
+
β
∣
t
0
−
t
i
j
∣
p(u, i)=\sum_{j \in N(u) \cap S(i, K)} \operatorname{sim}(i, j) \frac{1}{1+\beta\left|t_{0}-t_{i j}\right|}
p(u,i)=j∈N(u)∩S(i,K)∑sim(i,j)1+β∣t0−tij∣1
衰减函数:
f ( ∣ t w − t w ∣ ) = 1 1 + α ∣ t w i − t w ∣ f\left(\left|t_{w}-t_{w}\right|\right)=\frac{1}{1+\alpha\left|t_{w i}-t_{w}\right|} f(∣tw−tw∣)=1+α∣twi−tw∣1
- 时间上下文相关的UserCF算法
类似ItemCF算法,此法对用户兴趣相似度和预测公式进行改造。
用户之间相似度改造:
w
u
v
=
∣
N
(
u
)
∩
N
(
v
)
∣
∣
N
(
u
)
∣
∪
∣
N
(
v
)
∣
w
u
v
=
∑
i
∈
N
(
u
)
∩
N
(
v
)
1
1
+
α
∣
t
u
i
−
t
v
i
∣
∣
N
(
u
)
∣
U
∣
N
(
v
)
∣
\begin{aligned} &w_{u v}=\frac{|N(u) \cap N(v)|}{\sqrt{|N(u)| \cup|N(v)|}}\\ \\ &w_{u v}=\frac{\sum_{i \in N(u) \cap N(v)} \frac{1}{1+\alpha\left|t_{u i}-t_{v i}\right|}}{\sqrt{|N(u)| U|N(v)|}} \end{aligned}
wuv=∣N(u)∣∪∣N(v)∣∣N(u)∩N(v)∣wuv=∣N(u)∣U∣N(v)∣∑i∈N(u)∩N(v)1+α∣tui−tvi∣1
预测用户对物品兴趣改造:
p
(
u
,
i
)
=
∑
v
∈
S
(
u
,
K
)
w
u
v
r
v
i
p(u, i)=\sum_{v \in S(u, K)} w_{u v} r_{v i}
p(u,i)=v∈S(u,K)∑wuvrvi
p
(
u
,
i
)
=
∑
v
∈
S
(
u
,
K
)
w
u
v
r
v
i
1
1
+
α
(
t
0
−
t
v
i
)
p(u, i)=\sum_{v \in S(u, K)} w_{u v} r_{v i} \frac{1}{1+\alpha\left(t_{0}-t_{v i}\right)}
p(u,i)=v∈S(u,K)∑wuvrvi1+α(t0−tvi)1
时间段图模型
首先构建一个时间段图模型。
使用PersonalRank,时间复杂度较高,作者提出了一种路径融合算法来度量图上两个顶点的相关性。
还记得图顶点相关性的三个特征么?为了满足后两条,构建了下面的路径权重计算公式:
Γ
(
P
)
=
σ
(
v
n
)
∏
i
=
1
n
−
1
σ
(
v
i
)
⋅
w
(
v
i
,
v
i
+
1
)
∣
out
(
v
i
)
∣
ρ
\Gamma(P)=\sigma\left(v_{n}\right) \prod_{i=1}^{n-1} \frac{\sigma\left(v_{i}\right) \cdot w\left(v_{i}, v_{i+1}\right)}{\left|\operatorname{out}\left(v_{i}\right)\right|^{\rho}}
Γ(P)=σ(vn)i=1∏n−1∣out(vi)∣ρσ(vi)⋅w(vi,vi+1)
通过路径权重定义顶点相关度公式:
d
(
v
,
v
′
)
=
∑
P
∈
P
(
v
,
v
;
K
)
Γ
(
P
)
d\left(v, v^{\prime}\right)=\sum_{P \in P(v, v ; K)} \Gamma(P)
d(v,v′)=P∈P(v,v;K)∑Γ(P)
顶点的权重:
σ
(
v
)
=
{
1
−
α
(
v
∈
U
)
α
(
v
∈
S
U
)
1
−
β
(
v
∈
I
)
β
(
v
∈
S
I
)
\sigma(v)=\left\{\begin{array}{c} {1-\alpha(v \in U)} \\ {\alpha\left(v \in S_{U}\right)} \\ {1-\beta(v \in I)} \\ {\beta\left(v \in S_{I}\right)} \end{array}\right.
σ(v)=⎩⎪⎪⎨⎪⎪⎧1−α(v∈U)α(v∈SU)1−β(v∈I)β(v∈SI)
最后,路径融合算法使用的是BFS算法。
基于位置的推荐算法(LARS)
特点:兴趣本地化和活动本地化。
数据集1(用户,用户位置,物品,评分)将地理位置信息按照郭嘉、省、市、县的结构构造一个树,将用户分配到树的叶子结点上去,每个叶子结点就是同一个位置的用户的行为数据集。
作者提出了一个金字塔模型,按照一定的权重将路径上每个结点学习的多个推荐模型进行线性组合。
数据集2(用户,物品,物品位置,评分)
RecScore
(
u
,
i
)
=
P
(
u
,
i
)
−
TravelPenalty
(
u
,
i
)
\operatorname{RecScore}(u, i)=P(u, i)-\text { TravelPenalty }(u, i)
RecScore(u,i)=P(u,i)− TravelPenalty (u,i)
其中TravelPenalty方法表示物品i对用户u的代价,即物品i与用户u之前评分所有物品的位置距离的平均值。
数据集3(用户,用户位置,物品,物品位置,评分)
无深入讨论。