我有一份产品列表,每个产品都带有标签,并且每个标签都关联了一个权重。现在我想将这些产品聚类成相似的产品。我该如何进行?我尝试过使用scikit-learn的k-means方法,但效果不太理想。
Product 1: a=2.5 b=3.5 c=1 d=1Product 2: a=0.25 c=2Product 3: e=2 k=5........Product n: a=3 b=0.75
现在我想对这些产品进行聚类。我还希望一个产品可以根据需要属于多个聚类。因为1、2、3可以形成一个聚类,而2、4、5可以形成另一个聚类。
回答:
你可以使用高斯混合模型,它可以被视为k-means的泛化,允许软聚类。你可以有K个聚类,每个条目以一定的概率属于所有聚类。这个概率是该条目在该聚类下的概率。幸运的是,scikit-learn有相应的代码支持这个方法。
你可以将所有产品的标签集视为定义条目特征空间的存在。如果一个产品带有某个标签,那么该产品在对应标签的位置上将有一个非零条目,等于该标签的权重。这样,你就有了描述条目的固定向量,可以应用GMMs进行分析。
然而,评估这种无监督学习方法是非常困难的。相反,你应该根据它们所用于的下游任务来评估方法,比如向人们推荐产品、检测欺诈或检测重复等。