首先将用户历史数据,转化为二分图,如下
此时给用户u推荐商品的任务就转化为度量用户顶点和与没有直接相连的物品结点在图上的相关性。一般来说图中顶点的相关性主要取决于三个因素:
l 两顶点之间的路径数
l 两顶点之间的路径的长度
l 两顶点之间的路径经过的顶点
而相关性高的顶点之间一般具有如下特征:
l 两顶点之间有很多路径相连
l 连接两顶点之间的路径长度比较短
l 连接两顶点之间的路径不会经过出度比较大的顶点
我们规定连线代表的权重均为1,并没有考虑用户对该商品的喜爱程度,感兴趣即有边相连,不感兴趣则没有边相连,且边没有方向性。
此时,对于二分图,我们需要对用户u进行推荐,就转化为计算用户和所有物品顶点之间的相关性,然后取与用户没有直接边相连的物品,按照相关性的高低生成推荐列表。如果我们计算所有节点相对于用户u的相关度,则从用户u对应的节点开始游走,每到一个节点都以1-d的概率停止游走,并从u重新开始,或者以d的概率继续游走,从当前节点指向的节点中按照均匀分布随机选择一个节点往下游走。这样经过很多轮游走之后,每一个顶点被访问到的概率会逐渐收敛到稳定值。