I . K-Means 算法在实际应用中的缺陷
1 . K-Means 算法中中心点选择是随机的 : 随机地选择聚类分组的中心点 ;
① 选择实点 : 可以选择实点 ( 当前现有的样本值 ) 作为聚类中心点 ;
② 生成虚点 : 也可以选择生成虚点 ( 任意位置模拟出一个样本点 ) 作为中心点 ;
2 . 必须事先设置聚类分组个数 K KK 值 : 开始的时候并不知道将数据集分成几组能达到最佳的分组效果 ;
① 学习出 K KK 值 : 使用其它聚类方法 , 先将数据集学习一遍 , 确定聚类分组个数 ;
② 多次聚类 : 选取不同的 K KK 聚类分组个数 , 然后看取什么值可以达到最好的聚类分组效果 ;
3 . 最佳实践 : 运行多次 K-Means 方法 , 选取不同的 K KK 值 , 以及不同的聚类分组个数 ;
II . K-Means 初始中心点选择不恰当
下面的数据集 , 如果使用肉眼观察 , 选择的中心点是如下绿色的点 , 但是如果随机选择中心点 , 加入选择的很差 , 如下图中的红色点作为中心点 , 那么迭代之后的聚类分组如下图所示 , 明显该聚类分组不是最佳分组 ;
① 肉眼观察 3-NN 聚类分组 比较合适的中心点距离 :
② 随机选择中心点后的聚类分组 : 这是随机选择的分组 , 显然这不是最佳分组 ;
选择的初始的中心点太垃圾 , 会导致多次迭代 , 即使算法收敛 , 多次迭代计算的聚类分组不再改变 , 得到结果也可能是不准确的 ;
这是基于距离 ( 划分 ) 的聚类方法的固有缺陷 ;
III . K-Means 优点 与 弊端
1 . K-Means 好处是 : 简单 , 容易理解 , 性能较高 , 能很快计算出聚类结果 ;
2 . K-Means 弊端 : 只能找出球形的聚类分组 , 对异常点 和 噪音 非常敏感 , 如果有一个异常点 , 就会导致聚类分组不准确 , 鲁棒性差 ;
3 . K-Means 无法处理的情况 : 如下面的聚类 , 将不同形状的样本分开 , 需要识别出凹形的模式 , K-Means 无法完成该聚类操作 ;