最小推荐系统: SimRank快速近似计算
在 上一篇 中提到,SimRank的计算复杂度非常高,在实际部署中是大不可能计算其真实值的,也没有必要。对于其近似值的计算来说,有很多计算方法。 在实际中,由 条目-用户 关系构建消费关系图 ,对应的顶点数量 (条目数加用户数)。 由此可以构成一个 邻接矩阵 , 其中 . 并可以计算出SimRank矩阵 . 显然地,矩阵 的对角线元素都是1,即 . 我们把邻接矩阵 按列进行归一化: , 其中 . 那么,按照SimRank的定义 , 其中 表示按相同位置取大值,即 , 是人工定义的权重常数. 该定义保证 . 由于实际中 是无向图,有预设 是实对称阵,即 . 同样地,也有 是实对称阵。 总是可以对角化。 由 定义可知, 与 仅在对角线上有元素不同。因此总是存在对角线矩阵 , 这里我们可以称 为 对角修正矩阵 [1] . 也就有 . 把上式的左边不断代入右边: (1) 也就是说,SimRank矩阵的计算问题可以 转换为对角修正矩阵的计算问题 。对应地,对于SimRank中的矩阵元素 , 有 由于 是介于0到1之间的常量,所以上式是一个无穷收敛级数. 如果定义 为上式加到第 项的值,也就是 于是其误差范围: . (2) 这对迭代次数与对应的误差范围给出了明确的关系。 由于 是常量,如果定义 , 则有 (3) 而根据定义, [2] , 所以 . 到这里,对角修正矩阵 的计算还是跟