• ItemRank: A RandomWalk 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}|}.
    $$

  • 相关阅读:
    在Ubuntu下依然爱SOGO
    CompositePattern(23种设计模式之一)
    Arduino String.h库函数详解
    cp命令详解
    PHP AJAX 返回JSON 数据
    PHP AJAX返回 "TEXT"
    PHP JSON数据 AJAX
    PHP JQurey
    PHP 封装POD 类
    PHP 分页+查询
  • 原文地址:https://www.cnblogs.com/MTandHJ/p/16623897.html
Copyright © 2020-2023  润新知