1. 代价函数
K-means算法是比较容易理解的,它属于无监督学习方法,所以训练样本数据不再含有标签。我们假设有样本数据x(1),x(2),⋯,x(m)x(1),x(2),⋯,x(m),我们选择设置KK个聚类中心,K-means算法的代价函数表达式如下
J(c(1),c(2),⋯,c(m),u1,u2,⋯,uK)=1m∑i=1m||x(i)−uc(i)||2J(c(1),c(2),⋯,c(m),u1,u2,⋯,uK)=1m∑i=1m||x(i)−uc(i)||2
其中c(i)∈[1,K]c(i)∈[1,K]表示距离x(i)x(i)最近的聚类中心。
2. 具体算法
K-means算法的具体流程如下:
Repeat {
for i = 1 to m
c(i) := index (form 1 to K) of cluster centroid closest to x(i)
for k = 1 to K
μk := average (mean) of points assigned to cluster k
}
其中,第一个循环用于更新每个样本距离最近的聚类中心,第二个循环用于更新聚类中心所处的位置。
3. 随机初始化
通常我们会随机选取KK个样本数据作为初始聚类中心,但是这样可能得到一个局部最小点。其中一个解决方法是,
多次运行K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行K-均值的结果,选择代价函数最小的结果。
但是,这种方法在,即KK较小的时候还是可行的,但是如果较大,这么做也可能不会有明显地改善。
4.聚类数的选取
绝大多数是需要根据数据人工选取的。肘图的方法可能有所帮助,比如得到左侧结果的时候,我们就可以选择肘的位置的作为聚类数。但肘图不一定可行,比如得到图中右侧结果的时候。

本文深入探讨了K-means聚类算法,详细介绍了其代价函数、具体算法流程、随机初始化策略及聚类数的选择方法。K-means算法是一种常见的无监督学习方法,通过迭代更新聚类中心来最小化样本到其最近聚类中心的距离平方和。
3051

被折叠的 条评论
为什么被折叠?



