下一篇:
推荐系统初学者系列(2)-- SVD奇异值分解
目录
R e c a l l = ∑ u ∣ R ( u ) ⋂ T ( u ) ∣ ∑ u ∣ T ( u ) ∣ Recall = \frac{\sum_{u} \left | R\left ( u \right ) \bigcap T\left ( u \right )\right |}{\sum _u\left | T\left ( u \right ) \right |} Recall=∑u∣T(u)∣∑u∣R(u)⋂T(u)∣
R r e c i s i o n = ∑ u ∣ R ( u ) ⋂ T ( u ) ∣ ∑ u ∣ R ( u ) ∣ Rrecision = \frac{\sum_u \left | R\left ( u \right ) \bigcap T\left ( u \right )\right |}{\sum _u\left | R\left ( u \right ) \right |} Rrecision=∑u∣R(u)∣∑u∣R(u)⋂T(u)∣
其中,R(u)表示对用户推荐的N个物品,T(u)表示用户u在测试集上喜欢的物品集合。
W u v = ∣ N ( u ) ⋂ N ( v ) N ( u ) ⋃ N ( v ) ∣ W_{uv} = \left | \frac{N\left ( u \right )\bigcap N\left ( v \right )}{N\left ( u \right )\bigcup N\left ( v \right )} \right | Wuv=∣∣∣N(u)⋃N(v)N(u)⋂N(v)∣∣∣
其中,N(u)表示用户u有过正反馈的物品集合。
W u v = ∣ N ( u ) ⋂ N ( v ) ∣ ∣ N ( u ) ∣ ∣ N ( v ) ∣ W_{uv} = \frac{\left | N\left ( u \right ) \bigcap N\left ( v \right )\right |}{\sqrt{\left | N\left ( u \right ) \right | \left|N\left ( v \right )\right |}} Wuv=∣N(u)∣∣N(v)∣∣N(u)⋂N(v)∣
p ( u , i ) = ∑ v ∈ S ( u , K ) ⋂ N ( i ) w u v r v i p\left ( u, i \right ) = \sum _{v\in S\left ( u, K \right )\bigcap N\left ( i \right )} w_{uv}r_{vi} p(u,i)=∑v∈S(u,K)⋂N(i)wuvrvi
其中,S(u,K)表示和用户u兴趣最接近的K个用户集合;N(i)表示对物品i有过正反馈的用户集合;w(u,v)表示用户u和用户v的兴趣相似度;r(v,i)表示用户v对物品i的兴趣。默认取r(v,i)=1或0。
视角:用户即是特征。完全的个性化,每个用户都是唯一的,每个用户表示一维的特征。用户数量即是特征空间的维度,用户特征表示成TU(u)={0,0,0, … , 1, …, },t(u, u)=1, 其余为0。 对于物品的特征向量TI(j)={0, 1, 1, 1, 0, … , …}, 凡购买物品i的用户维度特征均为1。 进一步,物品的特征空间可用用户购买的次数表示。相似度w(u,v)看成相应维度特征的加权值。
p ( u , j ) = ∑ i ∈ N ( u ) ⋂ S ( j , K ) w i j r u i p\left ( u, j \right ) = \sum _{i\in N\left ( u \right ) \bigcap S\left ( j, K \right ) } w_{ij}r_{ui} p(u,j)=∑i∈N(u)⋂S(j,K)wijrui
其中,S(j,K)表示和物品j最相似的K个物品集合;N(u)表示用户喜欢的物品集合;w(i,j)表示物品i和物品j的相似度;r(u,i)表示用户u对i物品的兴趣。默认取r(u,i)=1或0。
视角:物品即是特征。每个物品都是唯一的,每个物品表示一维的特征。物品数量即是特征空间的维度,物品特征表示成TU(u)={0,0,0, … , 1, …, },t(u, u)=1, 其余为0。 对于用户的特征空间TI(j)={0, 1, 1, 1, 0, … , …}, 凡购买物品i的维度特征均为1。 进一步,物品的特征空间可用用户购买的次数表示。相似度w(i,j)看成相应维度特征的加权值。
p ( u , i ) = p u T q i = ∑ k = 1 F p u k q i k p\left ( u, i \right ) = p_u^T q_i = \sum_{k = 1}^F p_{uk} q_{ik} p(u,i)=puTqi=∑k=1Fpukqik
参数递推公式:
p u k = p u k + α ( q i k − λ p u k ) p_{uk} = p_{uk} + \alpha \left ( q_{ik} - \lambda p_{uk}\right ) puk=puk+α(qik−λpuk)
q i k = q i k + α ( p u k − λ q i k ) q_{ik} = q_{ik} + \alpha \left ( p_{uk} - \lambda q_{ik} \right ) qik=qik+α(puk−λqik)
其中,F表示隐类数量;p(u,k)表示用户u对第k个隐类的兴趣度;q(i,k)表示第k个隐类和物品i的相似度。Alpha表示学习速率;lamda表示正则化参数。
视角:LFM的公式就是典型的特征向量空间和特征加权矩阵的泛化表示形式。
p ( u , i ) = ∑ b n u b n b i p\left ( u,i \right ) = \sum_b n_{ub} n_{bi} p(u,i)=∑bnubnbi
n(u,b)表示用户u打过标签b的次数;n(b,i)表示物品i被打过标签的次数。
视角:标签即是特征。
p ( u , i ) = ∑ v ∈ F ( u ) w u v r v i p\left ( u,i \right ) = \sum_{v \in F\left ( u \right )} w_{uv} r_{vi} p(u,i)=∑v∈F(u)wuvrvi
其中,F(u)表示用户u的好友集合;w(u,v)可表示用户u和v的熟悉程度(共同好友数),也可表示用户u和v兴趣的相似度(UserCF定义),也可是二者的综合度量;r(v,i)表示用户v对物品i的兴趣。默认取r(v,i)=1或0。
视角:好友是特征,或者好友兴趣是特征。
p ( u , i ) = ∑ e ∈ E ( i ) v e w e d e p\left ( u,i \right ) = \sum_{e \in E\left ( i \right )} v_ew_ed_e p(u,i)=∑e∈E(i)vewede
其中,信息流i的边e表示其他用户对信息流i产生行为;E(e)表示和信息流i边的集合;v(e)表示用户v和当前用户u的相似度(熟悉度);w(e)表示边类型的权重;d(e)表示边e的时间衰减参数。
所有的推荐算法都可看成是基于特征向量空间和特征加权矩阵的推荐算法。
当特征向量的维度很大时,基于特征向量空间和特征加权矩阵的推荐算法计算复杂度将很大。
基于特征匹配的算法框架(用户或物品均可):
特征选取
a) 已知用户特征:直接根据特征分类
b) 未知用户特征:聚类,如LFM
利用购买用户特征,计算物品的特征。比如简单选取TopN个用户特征作为物品的特征;
根据用户特征和物品特征实现推荐,如果特征空间有限(类别不多),可采用类别推荐;如果特征空间巨大,可通过计算特征距离实现推荐。
说明:
当用户喜欢多个特征,物品具有多个特征时,即是典型的特征向量空间和特征加权矩阵的推荐算法;
当用户只喜欢1个特征,物品只具有单个特征时,即基于特征分类的推荐算法。
在实际应用中,常常采用多个推荐算法,分别实现不同的推荐引擎,最后根据不同的推荐引擎的结果做融合,即算法融合,常见的就是加权融合。
实际推荐系统通常采用多种推荐算法,并根据用户的实时行为反馈调整用户的特征向量(特征的加权系数),进而融合各个推荐算法的推荐结果,在此基础上过滤不要的推荐项,最后结合用户使用场景调整推荐结果排名,给出最终推荐结果。
基于不同特征的推荐算法经常采用定期计算、定期更新特征物品推荐表,比如
用户的实时行为反馈和用户当前场景都将实时影响最终的推荐结果,用户的实时反馈可直接影响推荐结果融合,而用户的场景将决定推荐结果的排序和展示。同时用户的反馈也将影响离线计算的物品推荐数据。