将时间信息和地点信息建模到推荐算法中,从而让推荐系统能够准确的预测用户在某个特定时刻以及特定地点的兴趣。本文中主要考虑时间因素:
在给定时间信息后,推荐系统从一个静态系统变成了一个时变的系统,用户的行为数据也变成了一个时间序列。此时用户的数据集变为 (u,i,t) :用户u在时刻t对物品i产生过行为。
时间建模信息的方法有如下几种:
最近最热门:
在没有时间信息的数据集中,我们可以给用户推荐历史上最热门的物品,那么在获得用户行为的时间信息后,最简单的非个性化推荐算法就是给用户推荐最近最热门的物品。给定时间T,物品i最近的流行度 nTi 定义为:
nTi=∑(u,i,t),t<T11+α(T−t)(1)
其中
α 是时间衰减参数。
时间上下文相关的Itemcf算法
在
itemcf中我们提到过计算物品相似度的公式为:
wij=|N(i)∩N(j)||N(i)||N(j)|−−−−−−−−−−√(2)
为用户推荐计算rank值的公式为:
puj=∑i∈N(u)∩S(j,k)wji(3)
当引入时间衰减项的时候,计算公式变为:
wij=|N(i)∩N(j)|f(|tui−tuj|)|N(i)||N(j)|−−−−−−−−−−√(4)
其中
|f(|tui−tuj| 是时间衰减项,
tui 是用户u对物品i产生行为的时间。我们利用公式(1)计算衰减度。
同时预测公式变为
puj=∑i∈N(u)∩S(j,k)wji|f(|t0−tuj|
其中
t0 是当前时间,表示时间越靠近当前时间的在推荐列表中会获得越高的排名。
时间上下文相关的usercf算法
与Itemcf相同,在计算相似度以及预测的时候加入时间衰变。
- 当用户没有行为的时候,如何保证多样性?
- 生成推荐的时候加入一定的随机性。
- 记录用户每天看到的推荐结果,在每天给用户推荐的时候,对前几天看到的很多的结果适当的降低权重。
- 每天给用户使用不同的推荐算法