1 算法概述
1.1 无监督学习
本章算法区别于之前的机器学习算法,因为k-means算法属于无监督算法。监督学习的意思是所给的训练数据都带有标签,如类别等,我们在训练算法时,要考虑预测的结果是否拟合了训练数据中的标签,即好像受其监督一样,而无监督学习与监督学习的区别就在此,无监督学习的数据没有标签,没有人为的分类,就只是一堆数据,我们要做的是将这堆数据以某种我们不知道的内在特性分开,自动形成几个分类簇。
1.2 k-means工作原理
k-means聚类算法是发现给定数据集的k个簇的算法。簇个数k是用户给定的,每一个簇有一个质心(簇的中心点)。首先随机确定k个质心,然后将其余点分配到离它最近的簇中,完成后再讲每个簇的质心更新为簇的平均值。
1.3 衡量方法
k-means的k是一个用户预先定义的参数。那么我们如何衡量用该参数生成的簇比较好呢?一种度量方法是误差平方和(SSE),SSE越小表示数据点越接近它们的质心,聚类效果也越好。因为取了平方,所以更加重视远离中心的点。
1.4 局部最优解
有时我们的算法会出现局部最优解的情况,那么怎么解决它呢?有两个后处理的方法,第一种是合并最近的质心,第二种是合并两个使得SSE增幅最小的质心。
2 二分 k-means
2.1 工作原理
另一种克服局部最优解的方法是二分k-means。该算法首先将所有的点作为一个簇,然后将该簇一分为二。之后递归选择簇进行划分,直到得到用户指定的k值,选择簇的标准是最大程度的降低SSE的值。
优点:容易实现
缺点:可能收敛到局部最小值(k-means),在大规模数据集上收敛较慢
参考资料:统计学习方法(李航)、机器学习实战(Peter)