personal rank

本文深入探讨了PersonnalRank算法,一种基于PageRank的变形,专门用于计算商品节点相对于特定用户节点的重要性。通过实例,详细解释了算法流程,包括初始化、游走过程及PR值的迭代计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法原理

paga rank中,计算出的PR值是每个节点相对于全局的重要性程度,而在推荐问题中,我们希望求解的是所有的商品节点相对于某个用户节点的重要性程度。
PersonnalRank算法为pagerank算法的变形形式,用于计算所有商品节点相对于某个用户节点的重要性程度。

example

User\ItemD_1D_2D_3D_4D_5
U_143-5-
U_25-44-
U_34-5-3
U_423-1-
U_5-42-5

假设用户U1,从节点U1开始在用户-商品二部图中游走,游走到任意节点,与pagerank一样,会按照一定的比例选择停止游走或者继续游走。假设选择继续游走,则以当前的节点作为新的出发点,重复以上的游走过程,知道每个节点的访问概率不在变化为止。

算法流程

personal_rank算法对通过连接的边为每个节点打分,在personal_rank算法中,不区分用户和商品,因此上述计算用户U1对所有的商品的感兴趣的程度,就变成了对用户U1计算各个节点U2,……,U5,D1,……,D5的重要程度。personal_rank算法的具体过程如下:
以U1为例:

  1. 初始化:
    PR(U1)=1,PR(U2)=0,……,PR(U5)=0,PR(D1)=0,……,PR(D5)=0
  2. 开始在图上游走,每次选择PR值不为0的节点开始,沿着边往前的概率为a,停在当前的概率为1-a
  3. 首先从U1开始,从U1到D1,D2和D4的概率为1/3,则此时,D1,D2和D4的PR值为PR(D1)=PR(D2)=PR(D4)=a*PR(U1)*1/3,U1的PR值变成了1-a。
  4. 此时PR值不为0的节点为U1,D1,D2和D4,则此时从这三点出发,继续上述的过程,知道收敛为止

总结可以得出PR的计算方法:
P R ( i ) = ( 1 − a ) r i + a ∑ j ∈ i n ( i ) P R ( j ) ∣ o u t ( j ) ∣ PR(i)=(1-a)r_i+a\sum_{j\in in(i)}\frac{PR(j)}{|out(j)|} PR(i)=(1a)ri+ajin(i)out(j)PR(j)
r i = { 1 , i=u 0 , i !=u r_i = \begin{cases} 1, & \text{i=u} \\ 0, & \text{i !=u} \end{cases} ri={1,0,i=ui !=u

u是待推荐的用户节点

example
a=0.85

  1. step=0:
    PR(U1)=1,其余PR全部为0

  2. step=1:
    PR(D1)=0.85PR(U1)1/3=0.8511/3=0.283333
    PR(U1-D1)=1-a=1-0.85=0.15
    PR(D2)=0.85PR(U1)1/3=0.8511/3=0.283333
    PR(U1-D2)=1-a=1-0.85=0.15
    PR(D4)=0.85PR(U1)1/3=0.8511/3=0.283333
    PR(U1-D4)=1-a=1-0.85=0.15
    PR(U1)=PR(U1-D1)+PR(U1-D2)+PR(U1-D4)
    PS:因为U1每一次游走都需要有1-a的随机停止,这里有三个连接,所以PR(U1)是3*(1-a)

……

代码

GitHub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Andy_shenzl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值