人对人推荐系统

People to people recommender system

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

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

    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 算法。但是,我认为结果是关于对相似性的值进行分组,而不是根据相似性对人进行分组。

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

聚类不太适合推荐。

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

相反,使用相似性搜索

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

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

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

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

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

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