首页 > 解决方案 > 在非标记数据集上使用 MLP 进行聚类

问题描述

如何使用多层感知器在未标记的数据集上进行 K-Means 等聚类。我有带标签的 MNIST 数据集,但我想用 MLP 执行聚类算法。任何想法?

标签: pythonmachine-learningcluster-analysisk-meansmlp

解决方案


编辑:如果问题仅限于使用 MLP,我认为您正在寻找可区分的聚类目标。(由于发现质心部分,K-Means 目标不可微)。我认为这不是集群的“主流”方法,但肯定有一些工作可以使用深度网络来优化集群(可微分)目标:

  1. 具有集群大小约束的可微分深度聚类 “我们利用最优传输和 k-means 之间的联系,并依靠熵正则化来推导出可用于 (P) 并直接使用 SGD 优化的完全可微的聚类损失”。所以你可以将 SGD 应用于 MLP,MLP 是使用这种损失的最佳架构吗?取决于你的数据。

我可以想到的另一种使用 ANN 的方法是自组织地图(或 Kohonen 地图)。这取决于您对 MLP 的定义有多宽松,您当然可以在输入层和输出特征图之间添加一堆层。

您可以潜在地使用 MLP 将数据嵌入到向量空间中,您可以使用它在 KMeans 期间计算一些度量(例如欧几里德距离),这可能有意义也可能没有意义,具体取决于您如何计算嵌入和数据集。

您可以在没有标签的情况下使用自动编码器来执行此操作,尽管这比简单的 MLP 复杂一些:

在此处输入图像描述

不过,这可能有点矫枉过正,这实际上取决于问题。考虑首先对您的数据执行 KMeans(无 MLP)。如果问题足够复杂,将数据移动到潜在空间可能会起作用,这基本上就是 word2vec 所做的事情,人们用它进行聚类和各种事情(见这个


推荐阅读