什么是K-means?
- K均值算法(K-means)聚类
- 关键词:K个种子,均值
- 聚类的概念:一种无监督的学习,事先不知道类别,自动将相似的对象归到同一个簇中
簇与质心
KMeans算法将一组N个样本的特征矩阵X划分为K个无交集的簇,直观上来看是簇是一组一组聚集在一起的数
据,在一个簇中的数据就认为是同一类。簇就是聚类的结果表现。
簇中所有数据的均值 通常被称为这个簇的“质心”(centroids)。在一个二维平面中,一簇数据点的质心的
横坐标就是这一簇数据点的横坐标的均值,质心的纵坐标就是这一簇数据点的纵坐标的均值。同理可推广至高
维空间。
聚类的应用:
-
Market segmentation(市场分割)
-
Socail network analysis (社交网络分析)
-
Organize computing clusters(组织计算机集群)
-
Astronomical data analysis(天文数据分析)
- K-Means算法是一种聚类分析(cluster analysis)的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法
- K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大
K-Means原理
- 欧氏距离
- 步骤图
K-Means步骤总结
1、从数据中选择k个对象作为初始聚类中心;
2、计算每个聚类对象到聚类中心的距离来划分;
3、再次计算每个聚类中心;
4、计算标准测度函数,直到达到最大迭代次数,则停止,否则,继续操作;
5、确定最优的聚类中心
中心点的选择
k-meams算法的能够保证收敛,但不能保证收敛于全局最优点,当初始中心点选取不好时,只能达到局部最优点,整个聚类的效果也会比较差。可以采用以下方法:k-means中心点
-
选择彼此距离尽可能远的那些点作为中心点;
-
先采用层次进行初步聚类输出k个簇,以簇的中心点的作为k-means的中心点的输入。
-
多次随机选择中心点训练k-means,选择效果最好的聚类结果
损失函数
K-Means优缺点及改进
-
k-means:在大数据的条件下,会耗费大量的时间和内存。 优化k-means的建议:
-
减少聚类的数目K。因为,每个样本都要跟类中心计算距离。
-
减少样本的特征维度。比如说,通过PCA等进行降维。
-
考察其他的聚类算法,通过选取toy数据,去测试不同聚类算法的性能。
-
hadoop集群,K-means算法是很容易进行并行计算的。
-
算法可能找到局部最优的聚类,而不是全局最优的聚类。使用改进的二分k-means算法。
二分k-means算法:首先将整个数据集看成一个簇,然后进行一次k-means(k=2)算法将该簇一分为二,并计算每个簇的误差平方和,选择平方和最大的簇迭代上述过程再次一分为二,直至簇数达到用户指定的k为止,此时可以达到的全局最优。
你知道的越多,你不知道的越多。
有道无术,术尚可求,有术无道,止于术。
如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步