参考 sklearn之聚类评估指标---轮廓系数
参考 聚类性能评估-轮廓系数
参考 样本轮廓系数 原理、sklearn.metrics.silhouette_score、silhouette_samples参数介绍
3 其他方法另外还有 mclust包、Nbclust包、Calinsky criterion、Gap Statistic、PAM、Affinity propagation(AP) clustering、clustergram、层次聚类等方法。
参考 【机器学习】确定最佳聚类数目的10种方法
3. 解决 k-means 算法性能受初始点选取影响较大 算法调优k-means 算法的初始簇中心是随机选取的 因此最终求得的簇的划分与随机选取的簇中心有关 这可能造成多种 k 个簇的划分情况 这是因为 k-means 算法收敛到了局部最小值 而非全局最小值。
1 二分 k-means 算法二分 k-means 算法解决 k-means 算法对初始簇心比较敏感的问题 是一种弱化初始质心的一种算法。
从二分 k-means 算法原理出发 相较普通 k-means 二分 k-means 算法不需要一次性初始化所有的簇中心 而是首先初始化一个 经过多次迭代得到其他的簇中心。这样做的好处在于不会收敛到局部最小值。具体思路步骤如下
第一步 将所有样本作为一个簇 放在一个队列中
第二步 从队列中选择一个簇进行 k-means (k 2) 算法划分 划分为两个簇 并将划分生成的子簇放在队列中
第三步 循环迭代第二步 直到达到循环结束条件 结束条件通常有 簇的个数、最小 SSE、迭代次数等
循环结束之后 队列中的簇就是最终得分类簇集合。
从队列中选择簇进行二分 一般有两种方式 选择 SSE 最大的簇、选择样本数量最多的簇。
参考 05 聚类算法 - 二分K-Means、K-Means 、K-Means||、Canopy、Mini Batch K-Means算法
参考 kmeans算法理解及代码实现
2 k-means 算法k-means 解决 k-means 算法对初始簇心比较敏感的问题 它和 k-means 算法的主要区别在于对初始 k 个簇心的选择方面 k-means 算法随即给定初始簇心 k-means 采用一些列步骤给定 k 个初始簇心
第一步 从样本集中任选一个样本作为第一个聚类中心
第二步 计算其余每个点 xi 到已有聚类中心点的距离和 D(xi) 并以一定概率选择新的聚类中心 这种方式使得离得越远的样本 越容易被选取为新的聚类中心 满足我们的需求
第三步 重复第二步 知道找到 k 个聚类中心点
第四步 使用找到的 k 个聚类中心点 进行 k-means 算法迭代。
k-means 算法不可并行 第 k 个聚类中心的选择依赖前 k-1 个聚类中心。
参考 05 聚类算法 - 二分K-Means、K-Means 、K-Means||、Canopy、Mini Batch K-Means算法
参考 【机器学习】K-means 非常详细
3 Mini-Batch k-means 算法Mini-Batch k-means 算法解决 k-means 算法收敛需要一定时间的问题 是 k-means 算法的一种优化方式 它采用小规模的数据子集 每次训练使用的数据集是随机抽取的数据子集 减少了计算时间 同时试图优化目标函数。
Mini-Batch k-means 算法可以减少 k-means 算法的收敛时间 聚类效果略差于标准 k-means 算法。算法步骤如下
第一步 首先选取部分数据集 使用 k-means 算法构建出 k 个聚簇点的模型
第二步 继续抽取训练数据集中的部分数据集样本数据 并将其添加到模型中 分配给距离最近的簇中心点
第三步 更新簇的质心
循环第二步和第三步 直到达到循环结束条件。
参考 05 聚类算法 - 二分K-Means、K-Means 、K-Means||、Canopy、Mini Batch K-Means算法
三、K-Means 算法模型评估k-means 算法评估分为两种 外部评估和内部评估。外部评估用于真实的分群 label 已知的情况 内部评估用于真实的分群 label 未知的情况。
外部评估有 Homogeneity completeness v-measure Fowlkes-Mallows scores 等
内部评估有 轮廓系数、DBI 戴维森堡丁指数、Calinski Harabasz Index 等。
参考 这是一份全面的聚类算法及其改进的算法总结
参考 常用聚类(K-means,DBSCAN)以及聚类的度量指标
四、知识点 1. 使用轮廓系数评估 k-means 算法性能时 k 要从 2 开始选 选择 1 会报错 ValueError: Number of labels is 1. Valid values are 2 to n_samples - 1 (inclusive)参考 ValueError:标签数为1.使用silhouette_score时 有效值为2到n_samples-1(包括1)(ValueError: Number of labels is 1. Valid values are 2 to n_samples - 1 (inclusive) when using silhouette_score)
参考 聚类学习-轮廓系数



