我正在使用适当的距离测量和纵向数据的聚类算法来聚类时间序列数据 . My goal is to validate the optimal number of clusters for this dataset, through cluster result statistics . 我在这个主题上阅读了关于stackoverflow的一些文章和帖子,特别是:Determining the Optimal Number of Clusters . 只能对我的数据子集进行目视检查;因为我正在处理大数据,所以我不能依赖它来代表我的整个数据集 .

我的方法如下:1 . 我使用不同数量的聚类多次聚类并计算每个选项的聚类统计数据2.我使用FPC的cluster.stats R包计算聚类统计指标:Cluster.Stats from FPC Cran Package . 我绘制这些并确定每个度量是最佳的簇编号(参见下面的代码) .

我的问题是这些指标各自评估聚类“良好”的不同方面,并且一个指标的最佳聚类数可能与不同指标的最佳聚类数不一致 . 例如,Dunn的索引可能指向使用3个聚类,而正方形的总和可能表明75个聚类是更好的选择 .

我理解基础:群集内点之间的距离应该很小,群集之间应该有很好的分离,应该最小化平方和,不同群集中的观察应该有很大的不同/不同理想情况下,集群应该有很大的不同 . 但是,我不知道在评估群集质量时,哪些指标最重要 .

How do I approach this problem, keeping in mind the nature of my data (时间序列) and the goal to cluster identical series / series with strongly similar pattern regions together

我是以正确的方式解决聚类问题,还是我错过了关键的一步?或者我误解了如何使用这些统计数据?

以下是我使用统计信息确定最佳群集数的方法:cs_metrics是包含统计信息的数据框 .

Average.within.best <- cs_metrics$cluster.number[which.min(cs_metrics$average.within)]
Average.between.best <- cs_metrics$cluster.number[which.max(cs_metrics$average.between)]
Avg.silwidth.best <- cs_metrics$cluster.number[which.max(cs_metrics$avg.silwidth)]
Calinsky.best <- cs_metrics$cluster.number[which.max(cs_metrics$ch)]
Dunn.best <- cs_metrics$cluster.number[which.max(cs_metrics$dunn)]
Dunn2.best <- cs_metrics$cluster.number[which.max(cs_metrics$dunn2)]
Entropy.best <- cs_metrics$cluster.number[which.min(cs_metrics$entropy)]
Pearsongamma.best <- cs_metrics$cluster.number[which.max(cs_metrics$pearsongamma)]
Within.SS.best <- cs_metrics$cluster.number[which.min(cs_metrics$within.cluster.ss)]

结果如下:
Result of best cluster number for each metric

以下是比较不同群集数量的群集统计信息的图表:

Average Distance Between and Within Clusters

Average Silhouette Width

Calinsky Criterion

Dunn and Dunn2 index

Entropy

Pearson Gamma

Within Cluster SS