ItemRank: A Random-Walk Based Scoring Algorithm for Recommender Engines

Gori M. and Pucci A. ItemRank: a random-walk based scoring algorithm for recommender engines. In International Joint Conferences on Artificial Intelligence (IJCAI), 2007.

采用类似 PageRank 的方式进行推荐排序.

符号说明

  • \(\mathcal{U}\), users;
  • \(\mathcal{P}\), products;
  • \(r_{ij} \in R^{|\mathcal{U}| \times |\mathcal{P}|}\), score;

本文方法

  1. 定义 products 之间的邻接矩阵 \(\tilde{C}\) 为:

    \[\tilde{C}_{ij}= \left \{ \begin{array}{ll} [R^TR]_{ij} & i \not = j, \\ 0 & i = j, \end{array} \right . \]

    直观上, \(\tilde{C}_{ij}\) 统计了同时交互 \(p_i, p_j\) 的用户的数量;

  2. 进行列归一化之后得到概率矩阵:

    \[C_{ij} = \frac{\tilde{C}_{ij}}{w_j}, \: w_j = \sum_i C_{ij}. \]

    此时有

    \[\sum_i C_{ij} = 1 \]

    成立;

  3. PageRank 采用迭代的方式更新每个每个结点的重要性 \(\mathbf{PR} \in \mathbb{R}^N\) (假设共有 \(N\) 个结点):

    \[\mathbf{PR} \leftarrow \alpha \cdot M^T \mathbf{PR} + (1 - \alpha) \bm{d}, \]

    其中 \(M\) 是概率矩阵 (列和为 1, 非负), 同时 \(\bm{d}\) 用于添加 bias, 满足 \(\sum_i d_i = 1, d_i > 0\);

  4. 作者希望为每个用户 \(u\) 建立一个 \(\mathbf{IR}_u \in \mathbb{R}^{|\mathcal{P}|}\), 其中每一个元素 \(p\) 代表了用户 \(u\) 对于 \(p\) 的一个 preference. 更新策略如下:

    \[\mathbf{IR}_u \leftarrow \alpha \cdot C^T \mathbf{IR}_u + (1 - \alpha) \bm{d}_u, \]

    其中

    \[[\tilde{\bm{d}}_u]_p = r_{up}, \\ \bm{d}_u = \tilde{\bm{d}}_u / |\tilde{\bm{d}}_u| \\ \]

    故对于用户 \(u\) 而言, 每次迭代都是从已有的观测结果中将信息传播出去. 最后根据 \(\mathbf{IR}_u\) 即可进行排序;

  5. 当然缺点也是明显, 必须为每个用户 \(u\) 都设定这么一个 \(\mathbf{IR}_u\), 不过作者说迭代 20 次就收敛了, 所以计算消耗尚能接受.

注: 所有的 \(\mathbf{IR}_u\) 初始为
$$
\frac{1}{|\mathcal{P}|} \bm{1}_{|\mathcal{P}|}.
$$

posted @ 2022-08-25 12:24  馒头and花卷  阅读(89)  评论(0编辑  收藏  举报