推荐系统的PageRank(加权二部图)

时间:2019-06-27 10:16:47

标签: python graph networkx pagerank

我有用户,并且他们具有从0到10的相关技能(0很糟糕,10很出色),例如:

Desc

有一个用户 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 ,因此,我们仅保留 UA >和 UC ,并从图中删除 UB 及其技能的边缘)
  2. 以某种方式使用PageRank对用户进行排名。

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

1 个答案:

答案 0 :(得分:0)

我认为您可能需要提供一个更复杂的示例或进一步说明您的目标是什么。 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')