如何确定kmeans算法的k值
2018-04-23 本文已影响2724人
TyrionWang
问题的提出:
Kmeans算法中,K值所决定的是在该聚类算法中,所要分配聚类的簇的多少。Kmeans算法对初始值是比较敏感的,对于同样的k值,选取的点不同,会影响算法的聚类效果和迭代的次数。
- 最常用最简单的方法可视化数据,然后观察出聚类聚成几类比较合适
- 绘制出k-average with cluster distance to centroid的图表,观察随着k值的增加,曲线的下降情况,当曲线不再“急剧”下降时,就是合适的k值
- 计算不同k值下kmeans算法的BIC和AIC值,BIC或AIC值越小,选择该k值
- 使用 Canopy算法先进行粗略的聚类,产生的簇的个数,作为kmeans算法的k值
- 使用x-means方法结合BIC准则去判定簇的个数,也就是k值
- 使用Gap Statistic公式来确定k值
- 使用轮廓系数(silhouette coefficient)来确定,选择使系数较大所对应的k值
- 使用交叉验证来确定使目标函数(距中心的距离的平方差)变小的k值
- 利用Affinity propagation的方法估计最优的聚类数目,进一步进行kmeans的算法
- 利用层次聚类,可视化后认为地观察认定可聚为几类,确定k值
- .....
参考文献
xmeans简介
How can we choose a "good" K for K-means clustering?
How do I determine k when using k-means clustering?
Gap Statistic 间隔统计量
Silhouette (clustering)
轮廓系数(Silhouette Coefficient )
究竟应该聚多少类?聚类分析