K-Means

我是研究僧i 提交于 2019-12-28 16:13:20

本篇随笔是数据科学家学习第八周的内容,主要参考资料为:

K-Means:

https://www.jianshu.com/p/caef1926adf7

深入理解K-Means聚类算法:

https://blog.csdn.net/taoyanqi8932/article/details/53727841

极客时间数据分析 - 聚类学习

用scikit-learn学习K-Means聚类

https://www.cnblogs.com/pinard/p/6169370.html

  • 聚类

  聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集成为一个“簇”。通过这样的划分,每个簇可能对应于一些潜在的概念(也就是类别),如“浅色瓜” “深色瓜”,“有籽瓜” “无籽瓜”,甚至“本地瓜” “外地瓜”等;需说明的是,这些概念对聚类算法而言事先是未知的,聚类过程仅能自动形成簇结构,簇对应的概念语义由使用者来把握和命名。

  簇内的样本相关性越大,簇间相关性越小,则聚类效果越好。

  • K-Means的原理和公式

  对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。

  对于距离大小的计算,有:

  给定样本集D,K-Means算法针对聚类所得簇划分C最小化平方误差。

 

     最小化上面的公式并不容易,找到它的最优解需考察样本集D内所有可能的簇划分,这是一个NP-hard问题。因此,K-Means算法采用了贪心算法,通过迭代优化来近似求解上面的公式。

  • K-Means算法的缺陷
    • K值需要预先给定,而K值如何预先设定比较困难
    • K-Means算法对初始选取的聚类中心点(即初始均值向量)是敏感的,不同的随机种子点得到的聚类结果完全不同
    • 对噪点过于敏感,因为算法是根据基于均值的
    • 结果不一定是全局最优,只能保证局部最优(个人理解是因为基于贪心算法,而贪心算法就是保证局部最优解。)
  • K-Means算法的改进
  • K值的评估

      簇内的稠密程度和簇间的离散程度来评估聚类的效果。常见的方法有轮廓系数Silhouette Coefficient和Calinski-Harabasz Index。参见

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!