0

我是一名医学物理硕士生,目前正在写我的论文。这项工作包括从内窥镜图像中提取特征并使用 SVM 进行分类。我有 4 种类型的图像。类型 1 是非癌症图像,类型 2、3 和 4 是癌前图像。我将问题简化为两级系统。C1 类,类型 1 图像和 C2 类所有其他图像。

我用来执行此操作的方法如下:我使用密集 SIFT 从每个图像中提取特征。所以我获得了描述符,比如每张图像 128x1000。所以我在 128 维空间中有 1000 个点。每张图像的点数不同,但为简单起见,我们假设每张图像有 1000 个。我使用 50 个 C1 类图像和 50 个 C2 类图像划分我的数据集进行训练。

如果我使用 100 张训练图像,我将获得 128x100000 的数据。如果我使用例如 400 个集群对这些数据执行 k-means 聚类,这是一个非常漫长的过程。所以我想对这些数据进行采样,例如选择均匀分布的 10000 个点,以便每个图像都被平等地表示。实际上,我在分类过程中得到了很好的结果,但我怀疑这是否可以做到。

如果我使用所有数据点来计算中心,或者我可以对这些数据进行采样以进行计算,会有很大的不同吗?对于要使用的数据部分,什么值是合理的?

4

1 回答 1

1

首先在样本上运行 k-means 是一种常见的做法。

这将为您提供对最终集群中心的良好估计,并且通过将它们用作完整 k-means 运行的种子,之后您可能只需要一次迭代。

K-means 有许多问题(维度灾难、通常无意义的结果、选择 k),但可扩展性不是其中之一。它可以运行得非常快,100k 个对象应该只需要一分钟,除非您使用的是非常慢的编程语言。

于 2013-06-09T10:25:50.800 回答