9

我正在尝试根据身体部位之间的角度对一些图像进行聚类。

从每张图像中提取的特征是:

angle1 : torso - torso
angle2 : torso - upper left arm
..
angle10: torso - lower right foot

因此输入数据是一个大小为 1057x10 的矩阵,其中 1057 代表图像数量,10 代表身体部位与躯干的角度。类似地,测试集是 821x10 矩阵。

我希望输入数据中的所有行都用 88 个集群进行聚类。那我就用这些集群来查找TestData属于哪些集群呢?

在之前的工作中,我使用了非常简单的 K-Means 聚类。我们只是要求 K-Means 将数据聚类到 88 个聚类中。并实现另一种方法,计算测试数据中每一行与每个集群中心之间的距离,然后选择最小值。这是相应输入数据行的集群。

我有两个问题:

  1. 是否可以在 MATLAB 中使用SOM来做到这一点?AFAIK SOM 用于视觉聚类。但是我需要知道每个集群的实际类,以便以后可以通过计算它属于哪个集群来标记我的测试数据。

  2. 你有更好的解决方案吗?

4

1 回答 1

17

自组织图 (SOM)是一种聚类方法,被认为是人工神经网络 (ANN)的无监督变体。它使用竞争性学习技术来训练网络(节点相互竞争以显示对给定数据的最强激活)

www.lohninger.com/helpcsuite/kohonen_network_-_background_information.htm

您可以将 SOM 视为由相互连接的节点(正方形、六边形等)组成的网格,其中每个节点都是权重的 N 维向量(与我们想要聚类的数据点的维度大小相同)。

这个想法很简单;给定一个向量作为 SOM 的输入,我们找到离它最近的节点,然后更新它的权重和相邻节点的权重,使它们接近输入向量的权重(因此得名自组织)。对所有输入数据重复此过程。

普罗索波斯

所形成的集群隐含地由节点如何组织自己并形成一组具有相似权重的节点来定义。它们很容易在视觉上看到。

阴谋论

SOM 在某种程度上类似于K-Means 算法,但不同之处在于我们不强加固定数量的集群,而是指定网格中我们希望它适应我们的数据的节点的数量和形状。

基本上,当你有一个训练有素的 SOM,并且你想对一个新的测试输入向量进行分类时,你只需将它分配给网格上最近的(作为相似性度量的距离)节点(最佳匹配单元BMU),并给出预测 [属于该 BMU 节点的向量的类。

阴谋论

对于 MATLAB,您可以找到许多实现 SOM 的工具箱:

于 2009-11-07T13:24:43.573 回答