一、算法简介
聚是一个将数据集中在某些方面相似的数据成员进行分类组织的过程,聚类就是一种发现这种内在结构的技术,聚类技术经常被称为无监督学习。
k均值聚类是最著名的划分聚类算法,由于简洁和效率使得他成为所有聚类算法中最广泛使用的。
二、算法描述
-
简介
随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。
每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。
终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。
-
算法步骤
算法输入:数据集 N,聚类数 K
算法输出:聚类代表集合 C
算法流程:
step 1 :从整个数据集 N 中,随机选取 K 个样本对象作为初始簇中心;
step 2 :计算每个样本对象到各个簇中心的距离;
step 3 :找到每个样本对象到簇中心的最短距离,并把每个样本对象分配给距离最近的簇中心;
step 4 :计算同一簇中对象的均值,更新簇中心;
step 5 :重复step 2 ~ step 4 ,直到簇中心不再发生改变; -
二分k-means 算法
二分k-means 算法是k-means 算法的改进算法。该算法是将所有的点作为一个簇,然后将该簇一分为二,之后选择其中的一个簇继续划分,对选定的簇进行多次二分试验。选择哪一个簇进行划分取决于对其划分是否可以最大程度的降低误差平方和。使用k-means 算法将可分裂的簇分为两簇。重复上述基于误差平方和的划分过程,直到满足迭代关系。
该算法能够克服k-means收敛于局部最小的缺点
三、小结
- k-means 算法是一种广泛应用的经典聚类算法,计算速度快,资源消耗少
- 当簇与簇的区别明显时效果较好
- 初始聚类中心选择的随机性决定了算法的有效性和聚类的精度
- k-means 算法会陷于局部最优,为了达到更好的效果可以使用二分k-means 算法