1.简介
Kmeans算法——又称K均值聚类(Kmeans)算法,作为无监督聚类算法中的代表,该算
法的主要作用是将相似的样本自动归到一个类别中。
所谓的监督算法,就是输入样本没有对应的输出或标签。
聚类(clustering)试图将数据集中的样本划分为若干个通常是不相交的子集,每个
子集称为一个“簇(cluster)”,聚类既能作为一个单独过程,用于找寻数据内在的分布
结构,也可作为分类等其他学习任务的前去过程。
-
原理
1.随机选择k个初始质心; 2.根据样本数据点到每个质心的距离将数据归到不同的簇中; 3.通过整个簇的距离均值来重置质心; 4.重复2,3操作直到质心不发生变化或达到规定的最大迭代次数;
-
优缺点及改进方法
优点:聚类简单容易实现; 缺点: 对初始质心反应敏感 比如:当初始质心位置选择不得当(将k个质心都初始化到了同 一个卒中)时,kmeans聚类算法很大程度上不会收敛到全局最 小值,聚类结果将会出现严重错误; 数据量较大时聚类速度慢。
优化方法:
1.对初始质心敏感解决办法–利用kmeans++算法(其只是在初始化质心的方式上做了改进,其他地方与kmeans算法一样)。
具体改进:
初始化初始质心的改进:1.从数据集中随机选择一个样本点作为第一个初始聚类中心 2.计算每个样本点到已有聚类中心之间的最短距离,然后计算每个样本 点被选为下一个聚类中心的概率,选择最大概率值对应的样本点作为下一个质心; 3.重复第二步,直到选出k个质心。
大量数据聚类慢的改进:
二分kmeans算法: 1.将所有数据看成是一个簇; 2.当簇的个数小于所要求的k时; 对每一个簇 : 假设对当前簇进行kmeans(k=2)聚类,分别计算当前簇的SSE1和剩下簇的SSE2,然后宗SSE=SSE1+SSE2 选择最小的簇进行k-means聚类(k=2);
度量聚类效果的指标SSE(sum of squared error) 误差平方和-SSE越小表示数据点越接近于他们的质心;