k-means 算法的工作原理是什么?

data miningdatabasedata structure

k-means 算法创建输入参数 k,并将一组 n 个对象划分为 k 个簇,使得簇内相似度较高,但簇间相似度较低。簇相似度是根据簇内对象的平均值计算的,该平均值可以看作是簇的质心或重心。

k-means 算法的流程如下。首先,它会随机选择 k 个对象,每个对象最初都定义了一个簇均值或中心。对于剩余的每个对象,根据对象与簇均值之间的距离,为其创建一个相同的簇。

它会为每个簇计算新的均值。此阶段不断迭代,直到主函数收敛。通常,平方误差标准表示为 −

$$\mathrm{E=\displaystyle\sum\limits_{i=1}^k\displaystyle\sum\limits_{p\epsilon C_{i}}|p-m_{i}|^2}$$

其中,E 是数据集中某些对象的平方误差总和。p 是空间中定义给定对象的点,mi 是聚类 Ci 的均值(p 和 mi 都是多维的)。具体而言,对于每个聚类中的每个对象,将对象到其聚类中心的距离平方,并估算该距离。此标准尝试创建尽可能紧凑且独立的 k 个聚类。

算法:k-means −用于划分的 k-means 算法,其中每个聚类的中心由该聚类中对象的平均值定义。

输入 −

k:聚类数量,
D:包含 n 个对象的数据集。

输出 −

一组包含 k 个聚类的数据集。

方法 −

  • 从 D 中任意选择 k 个对象作为原始聚类中心;

  • 重复

  • 根据聚类中对象的平均值,将每个对象(重新)分配到与其相同的聚类;

  • 更新聚类均值,即计算每个聚类中对象的平均值;

  • 直到不再变化;

该方法用于任意选择三个对象作为三个原始聚类中心,其中聚类中心用"+"表示。每个对象根据其最方便的聚类中心分配到哪个聚类。

接下来,更新聚类中心。每个聚类的平均值会根据该聚类中的主要对象重新计算。利用新的聚类中心,对象会根据相邻的聚类中心重新分配到相应的聚类中。这种重新分配过程会构建出虚线包围的新轮廓。

迭代地将对象重新分配到聚类以增强划分的阶段被称为迭代重定位。如果任何聚类中没有出现对象的重新分配,则该过程会被移除。最终的聚类会在聚类阶段进行恢复。


相关文章