Rank-GeoFM背景
现阶段,兴趣点(Point of Interest,POI)推荐成为一个重要的研究问题。兴趣点推荐是通过检入数据来预测的,然而在研究过程中我们常会碰到检入数据匮乏的问题。
这篇文章主要解决了以下两个问题:
- 使用隐式反馈数据,解决检入数据匮乏的问题
- 利用POI的不同类型的上下文信息(影响因子)完成预测
前言
POI推荐是目的在于学习用户的偏好,然后给用户推荐他可能会感兴趣的但未浏览过的东西。这不仅能帮助居民或游客勘探一个城市中有趣的位置地,同时也为POI物主通过寻找和寻找潜在游客来增加收入的机会。
为了便于理解下面用图示来说明
(a):一定时间内,三个人去四个场景下的次数矩阵
(c):加上时间影响后,图(a)的状态
从a),b)中可以看出矩阵中数据是很稀疏的,如果再加上时间因素影响得到c),d)那么矩阵将变的更加的稀疏。
与传统的矩阵因式分解方法不同,我们对用户(user)偏好排序进行拟合,了解用户和POI的潜在因素,而不是像传统的矩阵分解方法那样对检入(check-in)频率进行拟合。在本文中,未访问的POI(?处)也有助于学习,这将有助于缓解稀疏性问题。
Rank-GeoFM模型
使用方法
- 使用Rank-GeoFM,解决数据缺乏问题,包含一种重要的上下文信息–地理影响
- 为了计算Rank-GeoFM,我们使用随机梯度下降法
GeoFM为基于权重矩阵的因式分解方法(WMF),并且地理影响也包含在WMF内。
以下是符号列表:
UUU | 用户集合{u1,u2,...,uUu_1,u_2,...,u_Uu1,u2,...,uU} |
---|---|
LLL | POI集合{l1,l2,...,lLl_1,l_2,...,l_Ll1,l2,...,lL} |
TTT | 时间段集合 {t1,t2,...,tTt_1,t_2,...,t_Tt1,t2,...,tT} |
LuL^uLu | 用户u访问过的POI |
X=[xul]X=[x_{ul}]X=[xul] | 用户-POI检入矩阵 |
χ=[xutl]\chi = [x_{utl}]χ=[xutl] | 用户-时间-POI |
D1D_1D1 | 用户-POI对{(u,l)∥xul>0(u,l)\|x_{ul}>0(u,l)∥xul>0} |
D2D_2D2 | 用户-时间-POI元组{(u,t,l∥xutl>0)(u,t,l\|x_{utl}>0)(u,t,l∥xutl>0)} |
d(l,l′)d(l,l')d(l,l′) | POI l和l′l和l'l和l′之间的距离 |
Nk(l)N_k(l)Nk(l) | 离l最近的k的集合 |
yuly_{ul}yul | 用户u的POI ℓ推荐评分 |
step1:使用基于POI检入数据推断用户的偏好排序。POI频率越高则排名越靠前。
度量推断排序和通过因式分解模型产生的产生的排序之间的不兼容性的方法,也就是损失函数,定义如下:
Incomp(yul,ε)=∑l′∈LI(xul>xul′)I(yul<yul′+ε)Incomp(y_{ul,\varepsilon }) = \sum_{l' \in L} I(x_{ul}>x_{ul'})I(y_{ul}<y_{ul'}+\varepsilon)Incomp(yul,ε)=l′∈L∑I(xul>xul′)I(yul<yul′+ε)
I(.):是一个指标函数,I(a)=1=====》当a=true,反之为0I(.):是一个指标函数,I(a) = 1=====》当a=true,反之为0I(.):是一个指标函数,I(a)=1=====》当a=true,反之为0
ε:是一个正数\varepsilon:是一个正数ε:是一个正数
xul:l的频度x_{ul}:l的频度xul:l的频度
yul:l的推荐等级y_{ul}:l的推荐等级yul:l的推荐等级
注:ε−margin\varepsilon-marginε−margin被用来计算因式分解模型的排序,只有当yul<yul′+εy_{ul}<y_{ul'}+\varepsilonyul<yul′+ε时,用户l′l'l′的排名高于lll
step2:要使因式分解模型越优,不兼容性要越小,则相对应的损失函数需要越小。
O=∑u,l∈D1E(Incomp(yul,ε)),E(0)=0O = \sum_{u,l\in D_1} E(Incomp(y_{ul , \varepsilon})) \qquad ,E(0) = 0O=u,l∈D1∑E(Incomp(yul,ε)),E(0)=0
E(r)=∑i=1r1iE(r) = \sum_{i=1}^r \frac{1}{i}E(r)=i=1∑ri1
E(.)E(.)E(.)用来将不兼容性转化为损失函数
E(r)E(r)E(r)计算错误排序POI的各等级位置(1−i)(1-i)(1−i)之和,其中位置iii被分配一个损失1i\frac {1} {i}i1。
假设Incomp(yul,ε)=3Incomp(y_{ul , \varepsilon})=3Incomp(yul,ε)=3,那么有3个POI排序错误,损失函数表示为E(3)=1+12+13E(3) = 1+\frac 1 2+ \frac 1 3E(3)=1+21+31
step3:计算推荐分数yuly_{ul}yul
yul=Uu(1).Ll(1)+Uu(2).∑l′∈Nk(l)wllLl′(1)y_{ul} = U_u^{(1)}.L_l^{(1)}+U_u^{(2)}.\sum _{l' \in N_k(l)}w_{ll}L_{l'}^{(1)}yul=Uu(1).Ll(1)+Uu(2).l′∈Nk(l)∑wllLl′(1)
U(1)∈RU×KL(1)∈RU×KU(2)∈RU×KU^{(1)} \in \mathbb{R}^{U×K} \qquad L^{(1)} \in \mathbb{R}^{U×K} \qquad U^{(2)} \in \mathbb{R}^{U×K}U(1)∈RU×KL(1)∈RU×KU(2)∈RU×K
wll′w_{ll'}wll′:访问了lll之后访问l′l'l′的概率
Uu′U_{u}'Uu′:矩阵U的第u行
wll′={(0.5+d(l,l′))−1,l′∈Nk(l)0w_{ll'} =\left\{\begin{matrix} (0.5+d(l,l'))^{-1}\qquad\qquad,l'\in N_k(l) \\ 0 \qquad \end{matrix}\right.wll′={(0.5+d(l,l′))−1,l′∈Nk(l)0
第一部分:模拟用户的偏好得分
第二部分:模拟用户基于临近点的POI的影响分
Θ={U(1),L(1),U(2)}\Theta = \{ U^{(1)},L^{(1)},U^{(2)}\}Θ={U(1),L(1),U(2)}
step3:为了避免过拟合,使用L2正则表达式
∣∣Uu(1)∣∣2<C,u=1,2,3,...,U∣∣Ll(1)∣∣2<C,l=1,2,3,...,L∣∣Uu(2)∣∣2<αCu=1,2,3,...,U||U_u^{(1)}||_2<C,\qquad\qquad u=1,2,3,...,U\\
||L_l^{(1)}||_2<C, \qquad\qquad l=1,2,3,...,L\\
||U_u^{(2)}||_2<\alpha C\qquad\qquad u=1,2,3,...,U∣∣Uu(1)∣∣2<C,u=1,2,3,...,U∣∣Ll(1)∣∣2<C,l=1,2,3,...,L∣∣Uu(2)∣∣2<αCu=1,2,3,...,U