K-means介绍
K-means是一种无监督的聚类算法,根据各个样本数据间距离的大小,将样本分为K个簇。(也就是K个类别)分成K个簇后,想要达到的效果是每个簇内的点尽量相近,而簇与簇之间的距离尽量较大。
算法流程
如下图所示。
- 随机选取K个样本作为最开始的质心。这样就出现了K个不同的簇。
- 计算每个簇内的所有样本点的均值,将这个均值点作为新的质心。
- 计算所有样本到这些质心的距离,选择其中离某个簇质心最近的点作为新的簇内样本点。(因为簇内质心发生变化,所以需要对每个簇内样本点进行重新分配)。
- 重复2-3,直到质心的位置不再发生变化,停止迭代,完成聚类。
这里可以看到,由于质心是随机选择的,虽然通过不断的迭代,都能达到想要的效果,但这样计算成本会非常大,同时,是计算所有样本到质心的距离,这无疑又增加的训练得成本,因此,产生了多K-means优化的算法。
K-means的优化
K-Means初始化优化之K-Means++
K-Means++算法初始化质心的策略如下。(感觉像是先对初始质心点进行一个筛选……)
K-Means距离计算优化之elkan K-Means
elkan K-Means算法的使