1、kmeans:k均值
原理:给定训练样本D,假设将这个样本划分成k个类,那么就有k个簇,用C表示。算法的均方误差为:
其中:u表示第i个簇的均值
E从某种程度上刻画了簇内样本围绕着簇均值向量的紧密程度,E越小表示簇内的样本相似性越高。
算法流程伪代码如下:
2、举例
我们看一下西瓜书上的例子,就能对上面的理论基本理解了~~~
我们现在有30个训练样本,每个样本含有两个属性。由于聚类算法属于无监督学习,所以这里我们不需要label。
(1)假设聚类簇数为3,算法的开始我们要随机的选3个样本作为初始的均值向量,即:
(2)首先考察第一个样本x1=(0.697,0.460),它与上面三个均值向量的距离分别是:0.369,0.506,0.166,因此将x1划分为第三个簇。类似的,将剩下的数据集一次考察,得到三个簇为:
(3)于是,求这三个簇新的均值向量,可以得到:
(4)重复上述的步骤(2)和(3),直到迭代的结果相同,也就是求到的均值不再发生变化。
最后得到的结果图:
3、kmeans优缺点
优点:
(1)计算时间短,速度快
(2)容易解释和理解
(3)聚类效果不错
缺点:
(1)对异常值敏感
(2)需要提前确定k值
(3)需要样本存在均值
网友评论