问题如下。我有 M 个图像并为每个图像提取 N 个特征,每个特征的维数是 L。因此,我有 M*N 个特征(我的案例为 2,000,000),每个特征都有 L 维数(我的案例为 100)。我需要将这些 M*N 特征聚类到 K 个聚类中。我该怎么做?谢谢。
4 回答
你想要 1000 个图像、特征或(图像、特征)对的集群吗?
无论如何,听起来您必须减少数据并使用更简单的方法。
一种可能性是两次 K-cluster:
a) 将 200 万个数据点拆分为 32 个集群,
b) 将每个数据点拆分为 32 个以上。
如果这可行,则生成的 32^2 = 1024 个集群可能足以满足您的目的。
那么,你真的需要 100 个坐标吗?你能猜出 20 个最重要的,还是只尝试 20 的随机子集?
有大量文献:谷歌+image "dimension reduction"
提供了约 70000 次点击。
您已将问题标记为“k-means”。为什么不能使用k-means?这是效率问题吗?(我个人只在二维中使用了k-means)或者它是如何编码k-means算法的问题?
您的值是离散的(例如类别)还是连续的(例如坐标值)?如果是后者,那么根据我的理解,k-means 应该没问题。对于离散值的聚类,需要一种不同的算法——也许是层次聚类?
LMW-tree项目中的 EM-tree 和 K-tree 算法可以将越来越大的问题聚类。我们最近的结果是将 7.33 亿个网页聚集成 600,000 个集群。还有一个 EM 树的流式变体,其中数据集在每次迭代时从磁盘流式传输。
对数百万个点进行聚类时的一个好技巧是对它们进行采样,对样本进行聚类,然后将剩余的点添加到现有样本中