标签的加权聚类

时间:2016-10-19 07:04:42

标签: python python-3.x machine-learning cluster-analysis data-mining

我有一个产品列表,每个产品都有标记,并且每个标签的权重都与之相关联。现在我想将它们集中到类似的产品中。我该如何前进呢?我尝试过k-means of scikit-learn。但这并没有多大帮助。

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可以形成其他

2 个答案:

答案 0 :(得分:1)

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

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

这是您的设置,可为您的产品提供N维特征空间。您应该能够使用任意聚类方法; 只是必须选择正确的措施。

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

因此,首先要问自己的是:两个措施何时被视为相似

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

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

此外,您可能需要检查this post at CrossValidated或(如果您想了解有关群集的更多信息){em>“大规模数据集挖掘”{/ 3} (2014年,Anand Rajaraman ,Jure Leskovec和Jeffrey D. Ullman)[Section 7.3]

答案 1 :(得分:0)

你可以使用Gaussian Mixture Model,它可以看作是k-means的推广,允许软群集。您可以拥有K个群集,并且每个条目都属于具有一定数量的所有群集。此数量是该群集下的条目的概率。 幸运的是,scikit-learn code就是这样。

您可以将所有产品中的标记集视为为条目定义要素空间。产品上标签的存在意味着产品在与该标签对应的位置具有等于重量的非零条目。从那里,你有一个固定的向量来描述条目和GMM可以应用。

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