K-Means算法解析

  K-means 是常用的基于欧式距离的聚类算法,其认为两个目标的距离越近,相似度越大,属于无监督学习方法。在K-Means算法中,簇的个数K是一个超参数,需要人为输入来确定。K-Means的核心任务就是根据设定好的K,找出K个最优的质心,并将离这些质心最近的数据分别分配到这些质心代表的簇中去。

1、算法步骤

  1. 选择初始化的k个样本作为初始聚类中心;
  2. 针对数据集中每个样本计算它到k个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中;
  3. 针对每个类别重新计算它的聚类中心(所有样本的质心);
  4. 重复上面 2 3 两步操作,直到达到某个中止条件(迭代次数、最小误差变化、质心不变等)。
    K-Means算法解析_第1张图片

2、三要素

  从K-Means的算法流程中可以发现,k值的选择、初始质心点、中止条件对分类结果的影响较大。

(1)k值选择

  K 值的选取对 K-means 影响很大,这也是 K-means 算法调优的重点,常见的选取 K 值的方法有:手肘法、Gap statistic 方法。

  • 手肘法的核心指标是SSE(sum of the squared errors,误差平方和),寻找k值与SSE关系图的拐点。
  • Gap statistic计算随机样本的损失和实际样本的损失之差,Gap取得最大值所对应的K值就是最佳簇数。

(2) 初始化质心

  初始质心放置的位置不同,聚类的结果很可能也会不一样,一个好的质心选择可以让K-Means避免更多的计算,让算法收敛稳定且更快。在之前讲解初始质心的放置时,是采用“随机”的方法在样本点中抽取k个样本作为初始质心。常见的改进算法有k-Means++。

(3) 中止条件(收敛)

  k-means是基于欧氏距离的聚类算法,根据上诉算法描述也可以知道**k-means的目标就是最小化各个类别中点到中心点的距离。**基于这个目标,k-means的中止条件基本上集中在以下几个里面:

  • 没有(或最小数目)对象被重新分配给不同的聚类:所有对象都分配到了最佳类别。
  • 没有(或最小数目)聚类中心再发生变化:已经找到最佳聚类中心。
  • 误差平方和局部最小。
  • 迭代次数:当数据量较大的时候,聚类中心、误差平方和收敛会比较慢,这时候就需要设定一定的迭代次数,防止程序一直运行无法终止。

3 k-Means算法调优

  针对 K-means 算法的缺点,我们可以有很多种调优方式:如数据预处理(去除异常点),合理选择 K 值,高维映射等。

3.1 数据预处理

  K-means 的本质是基于欧式距离的数据划分算法,均值和方差大的维度将对数据的聚类产生决定性影响。所以需要对数据做归一化处理(简单理解为统一单位)。常见的数据预处理方式有:数据归一化,数据标准化。
  离群点或者噪声数据会对均值产生较大的影响,导致中心偏移,因此还需要对数据进行异常点检测。

3.2 合理选择k值

  K 值的选取对 K-means 影响很大,这也是 K-means 最大的缺点,常见的选取 K 值的方法有:手肘法、Gap statistic 方法。(见2中的k值选择)

3.3 初始值选取

  (见2中初始化质心)K-Means++,选择离已选中心点最远的点。

3.4 采用核函数

  面对非凸的数据分布形状时可以引入核函数来优化,这时算法又称为核 K-means 算法,是核聚类方法的一种。

你可能感兴趣的:(机器学习,算法,kmeans,聚类)