【问题标题】:People to people recommender system人对人推荐系统
【发布时间】:2016-12-29 23:35:54
【问题描述】:

我有一个社交网络图,其中人们有朋友联系、兴趣和参加的活动。我想建立一个推荐系统,可以向人们推荐潜在的朋友。

我正在使用一个矩阵(不确定它是否正确)作为休闲:

    Interest1 Interest2 Interest3 Event_Type1 Event_Type2 Event_Type3
u1      1        0         1            3           5           2 
u2      0        0         1            1           0           2 
u3      1        1         0            2           1           7

如您所见,矩阵是混合数据类型矩阵。 Interest 列是二进制数据 {0,1},Event_Type 列是用户参加此类活动的次数。

我想在矩阵上应用聚类技术,以便对具有相似兴趣和行为的人进行分组,然后应用更多算法来分析特定的群体。

我认为我不能直接在矩阵上应用 k-means 或层次聚类,所以我尝试将矩阵转换为 Gower 距离矩阵并在 Gower 距离矩阵上应用 k-medoids 算法。然而,我认为结果是关于对相似性的价值进行分组,而不是根据他们的相似性对人进行分组。

我对如何对原始矩阵进行聚类感到困惑。我也对如何开始构建人与人推荐系统感到困惑。

【问题讨论】:

    标签: cluster-analysis recommendation-engine


    【解决方案1】:

    聚类不太适合推荐。

    集群可以非常大。在最坏的情况下,几乎所有的点都在同一个簇中。那么你还有同样的问题,如何选择推荐用户。

    改为使用相似度搜索

    1. 根据共同兴趣推荐 10 个最相似的用户
    2. 根据共同好友推荐10个最相似的用户

    【讨论】:

    • 非常感谢!我发现相同的问题是很难使其收敛并确定集群的数量。我使用 BFS 查找共同的朋友和相似度算法(如 gower 和 CF-pearson)来获得相似度矩阵,但我真的想为用户制作一个排名列表。有没有一种算法可以将这两种信息结合在一起并给出推荐分数?
    • 如果您想要 10 个结果,那么可靠最有效的方法就是在每种方法中取前 5 名。
    • 知道了。谢谢!
    【解决方案2】:

    有不同的机器学习方法来构建您的朋友推荐系统。

    1. 如果您只有问题中显示的特征数据,您可以使用 无监督方法,例如 相似性搜索,就像 Anony 提到的那样。

      1) 根据特征,可以使用皮尔逊相关系数余弦相似度等指标来定义用户相似度。

      2)然后,您可以使用K-最近邻,找到前K个最相似的用户作为推荐朋友。

    2. 如果你已经有一些友谊关系数据,你可以使用监督法,这样可能会给你更好的结果。根据现有的友谊数据,可以找出哪个特征更重要,赋予更多的权重。您可以使用 MF 或其他方法。那是另一个任务!!!

    【讨论】:

    • 谢谢!我使用皮尔逊相关系数和高尔距离来计算相似度矩阵。有监督的预测是个好点!在未来的计划中,我们可能会使用这种方法来过滤阈值并提供给其他算法。我将看看 K-最近邻。
    • 通常你有一些真正的友谊关系,那么我强烈建议你使用有监督的方法。通常,这会改善您的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 2021-05-28
    • 2011-01-03
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多