【问题标题】:K-means distance parameters in Matlab - Varying resultsMatlab中的K均值距离参数 - 不同的结果
【发布时间】:2012-06-27 19:15:19
【问题描述】:

我正在使用一个 300x5000 的矩阵,我想测试哪个距离计算参数最有效。我得到了以下结果:

'Sqeuclidean' = 17 次迭代,距离总和 = 25175.4

'Correlation' = 9 次迭代,距离总和 = 32.7

'Cityblock' = 34 次迭代,距离总和 = 105175.3

'余弦' = 11 次迭代,距离总和 = 11.9

我无法理解为什么结果差异如此之大以及如何选择最有效的距离参数。有什么建议吗?

编辑:

我有 300 个功能,每个功能有 5000 个实例。 函数如下所示:

[idx, ctrs, sumd, d] = kmeans(matrix, 25, 'distance', 'cityblock', 'replicate', 20)

通过交换距离参数。特征已经标准化。

谢谢!

【问题讨论】:

  • 你应该清楚说明你使用的是哪个函数,300和5000中哪个是你问题的维度,哪个是样本数,以及你是如何使用这个函数的。
  • 要了解为什么使用不同的方法会得到不同的结果,您真的应该尝试了解不同方法的实际作用。然后选择最适合您的问题的方法,而不是为您提供“最佳”结果的方法
  • 您的编辑没有解决根本问题。您还没有定义好的集群是什么。您给出的指标(收敛迭代、距离总和)并不是衡量一个好的集群的有意义的指标。当然,不同的距离函数会有不同的总和,并且需要不同的迭代来收敛。您在集群方面的实际目标是什么?

标签: matlab statistics cluster-analysis k-means


【解决方案1】:

不同的距离值

  • 距离函数
  • 数据集
  • 规范化

通常无法比较。现实中的简单示例:以“米”或“英寸”为单位测量距离,您会得到截然不同的结果。以米为单位的结果不会因为它以不同的比例测量而更好。所以你不能比较不同结果的方差

请注意,k-means 仅适用于 euclidean 距离,可能无法与其他距离函数收敛。恕我直言,L_p 规范应该没问题,在 TF-IDF 上也可能是余弦。但我不知道有什么证据。

哦,k-means 对高维数据的效果非常糟糕。它适用于低维。

【讨论】:

  • 谢谢,您对高维数据有何建议? (在 Matlab 中)
  • 我不使用 Matlab。您可能应该首先尝试找到一个工作距离函数。然后您可以使用大多数基于距离的异常值检测方法。
【解决方案2】:

正如 slayton 所说,您确实需要为您的特定问题定义“最佳”意味着什么。

唯一重要的是距离函数对数据的聚类程度。一般来说,聚类高度依赖于距离函数。您选择的两个指标(迭代次数、距离总和)与聚类的效果完全无关。

您需要知道您要通过集群实现什么目标,并且需要一些指标来衡量您实现该目标的程度。如果有一个客观指标来确定您的集群有多好,那么就使用它。通常,指标比较模糊:当我可视化数据时,这看起来是否正确。查看您的数据,并查看每个距离函数如何对数据进行聚类。选择似乎生成最佳聚类的距离函数。对数据的几个子集执行此操作,以确保您的直觉是正确的。您还应该尝试了解每个距离函数给您的结果。

最后,一些问题适用于特定的距离函数。如果您的问题具有空间特征,那么欧几里得(几何)距离通常是一个自然的选择。对于不同的问题,其他距离函数会表现得更好。

【讨论】:

  • 我的目标是识别高度相关的特征和不相关的特征,以便留下彼此之间相关性低的特征
  • 我不确定 k-means 聚类是否能帮助您在这里做您想做的事。我听起来你真的想要一些东西来减少你的特征的维度,以提供更好的空间描述。有很多分类类型的方法可以解决这个问题,但我想看看你能在多大程度上只看协方差矩阵。我将编辑我的答案以提供更多细节。
  • 再想一想,我不确定我是否真的能在这个话题上帮助你。您可能会考虑使用Principal Component Analysis 之类的技术来帮助降低特征集的维度。您也可以尝试快速而简单的多元回归(请参阅regress),其中因变量是实例的索引。这应该让您大致了解哪些功能有价值,哪些没有。
猜你喜欢
  • 2015-06-02
  • 2014-09-30
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 2017-03-26
  • 2011-10-18
  • 1970-01-01
相关资源
最近更新 更多