K-means在Matlab中的距离参数 - 改变结果

时间:2012-06-26 13:00:48

标签: matlab statistics cluster-analysis k-means

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

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

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

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

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

我无法理解为什么结果变化太大以及如何选择最有效的距离参数。有什么建议?

编辑:

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

[idx,ctrs,sumd,d] = kmeans(矩阵,25,'距离','cityblock','复制',20)

交换距离参数。功能已经标准化。

谢谢!

2 个答案:

答案 0 :(得分:0)

正如slayton评论的那样,你真的需要为你的特定问题定义“最佳”的含义。

唯一重要的是距离函数如何将数据聚类。通常,聚类高度依赖于距离函数。您选择的两个指标(迭代次数,距离总和)与群集的工作情况无关。

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

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

答案 1 :(得分:0)

来自不同

的距离值
  • 距离函数
  • 数据集
  • 归一化

通常无法比较。现实中的简单示例:以“米”或“英寸”测量距离,您会得到非常不同的结果。米的结果不会更好,因为它是以不同的比例测量。因此,您不得比较不同结果的差异

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

哦,k-means对于高维数据非常糟糕。它意味着低维度。