如何根据用户的口味将用户与另一个用户匹配?

数据挖掘 机器学习 Python 深度学习 推荐系统
2022-03-09 06:36:25

可用信息

假设一个平台上有N 个用户每个用户都会在他们的个人资料中添加他们喜欢的项目。这些项目具有描述产品的静态属性。

User A:
Row   | Attribute a | Attribute b | Attribute c
Item 1|    0.593    |    0.7852   |   0.484
Item 2|    0.18     |    0.96     |   0.05
Item 3|    0.423    |    0.886    |   0.156

User B:
Row   | Attribute a | Attribute b | Attribute c
Item 7|    0.228    |    0.148    |   0.658
Item 8|    0.785    |    0.33     |   0.887
Item 9|    0.569    |    0.994    |   0.374 

用户 A 有一个他/她喜欢的项目列表用户 B 也是如此……用户 N。不同用户的个人资料中的项目可能相同也可能不同,但这些项目描述了用户对该特定项目的品味

目标

我想要做的是,如果他们在挑选物品方面有相似的品味,则将用户与另一个用户匹配。我不明白如何实现这一点。任何帮助表示赞赏!

4个回答

您可以根据距离函数对客户进行聚类。定义可能如下所示:

  1. 首先,计算第一个顾客购物篮中的第一个商品与第二个顾客购物篮中的所有商品之间的欧几里得距离。
  2. 然后找出离第二个顾客的篮子最近的物品是什么(最小欧几里得距离)。
  3. 对第一个客户购物篮中的每个项目执行相同的操作。
  4. 计算最小距离的平均值。
  5. 对第二个客户做同样的事情。
  6. 从第一个和第二个客户那里获取最大的手段。

好吧,您可以尝试无监督聚类。您可能希望省略用户和项目标签以开始。根据您拥有的数据量以及对最终可能得到多少“类别”的猜测,您可以使用 K-means 或 Mean sift 聚类。我们的想法是让您找出相似之处,以便将项目组合在一起并为您提供“类别”以及类似项目。然后,您可以将该模型用于任何未来。完成此操作后,您可以引入用户标签和项目标签以在用户级别建立相似性。

根据项目和属性,探索的下一步可能是将属性减少到每个项目的平均值,以便一个用户拥有所有项目的每个属性的平均值,然后使用该数据。然后,您根据“用户”的类型平均聚类

两种方式都假设每个项目的属性与其他项目的属性非常相似。例如

    item  | sweetness   |   acidity   |  bitterness
    orange|    0.593    |    0.7852   |   0.484
    banana|    0.18     |    0.96     |   0.05
    apple |    0.423    |    0.886    |   0.156

或者您可以直接在用户之间进行数值比较,以便计算每个属性的所有项目中两者之间的统计熵,所有属性的平均值,并设置一个范围,以便在某个范围内它们被认为是相似或不同的。

希望这可以帮助!

你不使用基于内容的推荐系统有什么原因吗?您可以使用推荐器将用户“分组”在一起,一旦他们被分组,您就可以互相介绍成员。我想我不明白你为什么要在这个上重新发明轮子——推荐人可以把你带到你想去的地方。

正如建议的那样,运行诸如 k-Means 之类的聚类算法可能效果最好。该算法可以在您的数据集中找到隐藏的模式。

为了好玩,我使用您的数据在 Tableau 中运行 k-Means(免费提供)。Tableau 让集群算法的试验变得超级简单和快速。

您会立即看到您有两个相似的组(蓝色的集群 1 和橙色的集群 r2)。 在此处输入图像描述