k均值聚类算法简析


k均值聚类是一种无监督的学习,它将相似的对象归到同一个簇中,聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好,之所以称之为K-均值是因为它可以发现k个不同的簇,并且每个簇的中心采用簇中所含的值的均值计算而成。其目的为在不知数据所属类别及类别数量的前提下,依据数据自身所暗含的特点对数据进行聚类。对于聚类过程中类别数量k的选取,需要一定的先验知识,也可根据“类内间距小,类间间距大”为目标进行实现。

优点:容易实现。

缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢

适用数据类型:数据型数据

 k-means算法以数据间的距离作为数据对象相似性度量的标准,因此选择计算数据间距离的计算方式对最后的聚类效果有显著的影响,常用计算距离的方式有:余弦距离、欧式距离、曼哈顿距离等。k-均值是发现给定数据集的k个簇的算法,簇个数是由用户给定的,每一个簇通过质心,即簇中所有点的中心来描述。
k-均值算法的工作流程是这样的,首先,随机确定k个初始点作为质心。然后将数据集中的每个点分配到一个簇中,具体来说,为每个点找其最近的质心,并将其分配给质心所对应的簇,这一步完成后,每个簇的质心更新为该簇所有点的平均值。

第一步:选K个初始聚类中心,z1(1),z2(1),…,zK(1),其中括号内的序号为寻找聚类中心的迭代运算的次序号。聚类中心的向量值可任意设定,例如可选开始的K个模式样本的向量值作为初始聚类中心。
第二步:逐个将需分类的模式样本{x}按最小距离准则分配给K个聚类中心中的某一个zj(1)。
假设i=j时,其中k为迭代运算的次序号,第一次迭代k=1,Sj表示第j个聚类,其聚类中心为zj。
第三步:计算各个聚类中心的新的向量值,zj(k+1),j=1,2,…,K
求各聚类域中所包含样本的均值向量:
其中Nj为第j个聚类域Sj中所包含的样本个数。以均值向量作为新的聚类中心,可使如下聚类准则函数最小:
在这一步中要分别计算K个聚类中的样本均值向量,所以称之为K-均值算法。
第四步:若 ,j=1,2,…,K,则返回第二步,将模式样本逐个重新分类,重复迭代运算;
若 ,j=1,2,…,K,则算法收敛,计算结束。

伪代码为:

1 创建k个作为起始质心(通常是随机选择)
2 当任意一个点的簇分配结果发生改变时
3     对数据集中的每个数据点
4         对每个质心
5             计算质心与数据点之间的距离
6         将数据点分配到距离其最近的簇
7     对每一个簇,计算簇中所有点的均值并将均值作为质心


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM