kmeans常见考点

1、kmeans简介

   k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是,预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。 聚类中心以及分配给它们的对象就代表一个聚类。

2、kmeans具体计算过程

1、首先,定义聚类个数参数K,然后初始原始的K个聚类中心点(可以采用随机,或者k-means++);
2、遍历所有样本点,并计算其到各个聚类中心点的距离,然后选择距离最短的类别,并将样本点划分到该类别下;
3、当更新完毕所有点的类别后,重新计算每个类别的聚类中心点;
4、重复step2-step3,直到聚类中心点不再发生变化,或者达到一定的迭代次数。
 

3、Kmeans算法中,K值所决定的是在该聚类算法中,所要分配聚类的簇的多少。Kmeans算法对初始值是比较敏感的,对于同样的k值,选取的点不同,会影响算法的聚类效果和迭代的次数?

  1. 最常用最简单的方法可视化数据,然后观察出聚类聚成几类比较合适
  2. 绘制出k-average with cluster distance to centroid的图表,观察随着k值的增加,曲线的下降情况,当曲线不再“急剧”下降时,就是合适的k值
  • 最常用最简单的方法可视化数据,然后观察出聚类聚成几类比较合适
  • 绘制出k-average with cluster distance to centroid的图表,观察随着k值的增加,曲线的下降情况,当曲线不再“急剧”下降时,就是合适的k值
  • 计算不同k值下kmeans算法的BIC和AIC值,BIC或AIC值越小,选择该k值
  • 使用 Canopy算法先进行粗略的聚类,产生的簇的个数,作为kmeans算法的k值
  • 使用x-means方法结合BIC准则去判定簇的个数,也就是k值
  • 使用Gap Statistic公式来确定k值
  • 使用轮廓系数(silhouette coefficient)来确定,选择使系数较大所对应的k值
  • 使用交叉验证来确定使目标函数(距中心的距离的平方差)变小的k值
  • 利用Affinity propagation的方法估计最优的聚类数目,进一步进行kmeans的算法
  • 利用层次聚类,可视化后认为地观察认定可聚为几类,确定k值

4、kmeans的目标函数?

k-means的目标就是最小化各个类别中点到中心点的距离

5、kmeans的为什么会收敛?

    每次迭代会重新计算k个聚类簇的中心点,重新划分为k个新的聚类簇,目标函数是最小化各类别到中心点的距离,每一次迭代,都会最小化目标函数,迭代过程是一个递减的过程,当迭代趋近于无穷大时,会收敛

    对于样本量少的聚类,k值比较容易收敛,对于样本量大的数据,迭代次数可能会较大,一般设置一个固定的迭代次数

6、kmeans有哪些扩展?

kmeans++,一定程度解决随机初始质心选择的问题;

  1. 随机选取一个点作为第一个聚类中心。
  2. 计算所有样本与第一个聚类中心的距离。
  3. 选择出上一步中距离最大的点作为第二个聚类中心。
  4. 迭代:计算所有点到与之最近的聚类中心的距离,选取最大距离的点作为新的聚类中心。
  5. 终止条件:直到选出了这k个中心。

7、kmeans初值的选择会改变最终聚类的结果

随机化初始点而造成的局部最优解,初值的改变会改变最终的结果

kmeans++解决初始质心选择的问题,初始看成一个类别,求每个样本到聚类中心的距离,以概率p_i= d_i/sum(d_j) 的概率确定下一个质心点。

8、参考文档

k-means收敛的理解!_kmeans收敛性证明_21k soul的博客-CSDN博客  

Kmeans中的K值选取_kmeans的k值怎么取_简单点1024的博客-CSDN博客 (sse(最小平方误差和)手肘法(描绘sse随着k值变化的图形);轮廓系数法,轮廓系数越大,聚类簇越好,一般需要手肘法辅助)

聚类算法——K-Means原理、k选择、质心初始化、Python实现 - 知乎  (k-means原理、质心选择、k选择)

https://www.cnblogs.com/yixuan-xu/p/6272208.html (isodata算法、kmeans++、kmeans算法)

你可能感兴趣的:(kmeans,人工智能,算法)