【问题标题】:PageRank for recommendation system (weighted bipartite graph)推荐系统的PageRank(加权二分图)
【发布时间】:2019-06-27 10:16:47
【问题描述】:

我有用户,他们的相关技能排名从 0 到 10(0 表示糟糕,10 表示很棒),例如:

有一个用户UA(左上),他们有两个对应的技能SA(右上)和SC(右下)。同样,UB 有 SB,UC 有 SC。

用户的每项技能都有一个排名(例如,UA SA 是 9/10,UA SC 是 8/10,UC SC 是 7/10)。

我想在此图表上实现搜索 - 例如,鉴于我正在寻找具有 SC 技能的人,我想从现有用户中找出最适合的人。

我之前研究过pagerank,但我不确定如何处理这类问题。我发现here 可以将 PageRank 应用于推荐系统,但我不知道如何在这种确切情况下使用它。据我了解,目前的工作流程是:

  1. 根据查询的技能,只留下那些有相关技能的用户(在示例中我们正在寻找SC,所以我们只留下UAUC 并从图中删除 UB 及其边缘到技能)
  2. 以某种方式使用 PageRank 对用户进行排名。

我还发现了这个名为 networkX 的 Python 库。有谁知道是否可以使用该库解决此问题?

【问题讨论】:

    标签: python graph networkx pagerank


    【解决方案1】:

    我认为您可能需要提供一个更复杂的示例或更多地解释您的目标是什么。 PageRank 似乎比必要的复杂得多。看来您只需要找到最擅长相关技能的用户:

    users = {
        'userA': {'skillA': 8, 'skillC': 7},
        'userB': {'skillB': 9},
        'userC': {'skillC': 8}
    }
    
    def find_best(skill):
        return sorted([(skills[skill], name) for name, skills in users.items() if skill in skills])[-1]
    

    例子:

    >>> find_best('skillC')
    (8, 'userC')
    

    【讨论】:

      猜你喜欢
      • 2020-11-08
      • 2017-03-22
      • 2014-06-10
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多