基于图的推荐算法

二部图




上述数据改为二部图如下:


邻接矩阵

我们想将这样一个图信息存储起来,我们有两个必须存储的数据,节点信息(a,b,c,d,e)和权值(3,5,4,1,6,7)和节点之间的关系.权值也就是路径.邻接矩阵表示法,用两个数组表示,一个一维数组和一个二维数组.一维数组存储节点信息,二维数组存储节点之间的关系.将上图转换成一个邻接矩阵

PageRank算法


扫描二维码关注公众号,回复: 1408972 查看本文章

核心思想:

对于网站A对其投票(链接)的有网站B,C

第一:考虑有多少网站链接了网站A,

第二:考虑每一个链接网站的质量,那么它的投票就会占比重较高。

计算公式如下:



PersonalRank算法

在PageRank算法中计算的是某个顶点相对于全局的重要性,在推荐问题中,我们希望的是所有节点对某个用户的重要性。PR值的更新公式如下


与PageRank随机选择一个点开始游走(也就是说从每个点开始的概率都是相同的)不同,如果我们要计算所有节点相对于用户u的相关度,则PersonalRank从用户u对应的节点开始游走,每到一个节点都以1-alpha的概率停止游走并从u重新开始,或者以alpha的概率继续游走,从当前节点指向的节点中按照均匀分布随机选择一个节点往下游走。这样经过很多轮游走之后,每个顶点被访问到的概率也会收敛趋于稳定,这个时候我们就可以用概率来进行排名了。


1代表用户对商品有过评价,0代表用户对商品没有评价。将上述数据转为二部图,如下表:


PersonalRank算法流程(计算商品对用户0的重要性,以便想用户0进行推荐):

1.      初始化


2.   开始游走,从PR值不为0的节点开始,每次走一步,U_0以1/3的概率分别向D_0,D_1,D_3游走,以(1-alpha)PR(U_0)的概率停留在U_0,此时PR值为:

3.   此时PR值不为0的节点有U_0,D_0,D_1,D_3,再分别从这四个节点出发,又走到下一步,重复。最后所有节点对节点U_0来说的重要性如下图:


4. 最后针对U_0没有评价过的商品,将评分输出




猜你喜欢

转载自blog.csdn.net/zhangxinyan00/article/details/80539344