标签的加权聚类

Weighted clustering of tags

我有一个产品列表,每个产品都有标签,每个标签都关联了重量。现在我想将它们聚类成类似的产品。我该如何前进。我已经尝试过 scikit-learn 的 k-means。但这并没有多大帮助。

Product 1: a=2.5 b=3.5 c=1 d=1
Product 2: a=0.25 c=2
Product 3: e=2 k=5
.
.
.
.
.
.
.
.
Product n: a=3 b=0.75

现在我希望将它们聚集在一起。如有必要,我还希望产品在许多集群中。因为1,2,3可以组成一个簇而2,4,5可以组成其他

您可以使用 Gaussian Mixture Model,它可以被视为允许软聚类的 k-means 的泛化。您可以有 K 个簇,每个条目都属于一定数量的所有簇。该数量是该集群下条目的概率。 幸好有 scikit-learn code

您可以将所有产品的标签集视为条目的定义特征 space。产品上存在标签意味着该产品将在与该标签对应的位置具有等于重量的非零条目。从那里,您有一个固定的向量来描述条目,并且可以应用 GMM。


然而,评估这样的无监督学习方法真的很难。相反,您应该根据它们用于的下游任务来评估方法。比如向人们推荐产品或检测欺诈或检测重复等。

如果 k-means 的直接和天真应用没有多大帮助,您可能需要更深入地挖掘。

假设您有 N 个不同的标签,其中 0..N 可以应用于每个产品 p。每个分配都描述了具有正权重 w 的加权关系。缺少产品标签等于 w = 0.

这是为您的产品生成 N 维特征 space 的设置。您应该能够使用任意聚类方法;你只是必须select采取正确的措施。

您的距离(或相似度)度量应取决于您的数据。

因此,首先要问自己的是:什么时候考虑两种措施相似

  • 他们是否有尽可能多的重叠标签?
  • 如果非重叠标签权重之和最大?
  • 如果重叠标签之间的差异总和为 min?
  • ...

根据您定义的相似度,您应该能够选择或实施产生相似度等级的度量(而不仅仅是 N 维度中的欧氏距离) 比较两个元素时。

此外,您可能需要查看 this post at CrossValidated or (if you want to learn more about clustering) Section 7.3 of "Mining of Massive Datasets" (2014, Anand Rajaraman, Jure Leskovec, and Jeffrey D. Ullman) [Entire book]