吴恩达机器学习 笔记八 K-means聚类算法

1. 代价函数

  K-means算法是比较容易理解的,它属于无监督学习方法,所以训练样本数据不再含有标签。我们假设有样本数据x(1),x(2),,x(m),我们选择设置K个聚类中心u1,u2,,uK,K-means算法的代价函数表达式如下

J(c(1),c(2),,c(m),u1,u2,,uK)=1mi=1m||x(i)uc(i)||2
其中c(i)[1,K]表示距离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. 随机初始化

  通常我们会随机选取K个样本数据作为初始聚类中心,但是这样可能得到一个局部最小点。其中一个解决方法是,

多次运行K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行K-均值的结果,选择代价函数最小的结果。

但是,这种方法在K[2,10],即K较小的时候还是可行的,但是如果较大,这么做也可能不会有明显地改善。

4.聚类数的选取

  绝大多数是需要根据数据人工选取的。肘图的方法可能有所帮助,比如得到左侧结果的时候,我们就可以选择肘的位置的K作为聚类数。但肘图不一定可行,比如得到图中右侧结果的时候。
吴恩达机器学习 笔记八 K-means聚类算法