KMEANS算法分析和总结.docx

k-means 算法 一.算法简介 k-means 算法,也被称为 k-平均或 k-均值,是一种得到最广泛使用的聚类算法。 它是将各个聚类子集内的所有数据样本的均值作为该聚类的代表点,算法的主要思想是通过迭代过程把数据集划分为不同的类别,使得评价聚类性能的准则函数达到最优,从而使生成的每个聚类内紧凑,类间独立。这一算法不适合处理离散型属性,但是对于连续型具有较好的聚类效果。 二.划分聚类方法对数据集进行聚类时包括如下三个要点: 选定某种距离作为数据样本间的相似性度量 k-means 聚类算法不适合处理离散型属性,对连续型属性比较适合。因此在计算数据样本之间的距离时,可以根据实际需要选择欧式距离、曼哈顿距离或者明考斯距离中的一种来作为算法的相似性度量,其中最常用的是欧式距离。下面 我给大家具体介绍一下欧式距离。 X ? ?x m | m ? 1,2,..., total? 假设给定的数据集 ,X 中的样本用 d 个描述属性 A1,A2…Ad 来表示,并且d 个描述属性都是连续型属性。数据样本xi=(xi1,xi2,…xid), xj=(xj1,xj2,…xjd)其中,xi1,xi2,…xid 和 xj1,xj2,…xjd 分别是样本 xi 和 xj 对应 d 个描述属性A1,A2,…Ad 的具体取值。样本xi 和xj 之间的相似度通常用它们之间的距离d(xi,xj) 来表示,距离越小,样本 xi 和 xj 越相似,差异度越小;距离越大,样本 xi 和 xj 越不相似,差异度越大。 ?dk ?1?xikx ?d k ?1 ?x ik x ?2 jk i j 选择评价聚类性能的准则函数 k-means 聚类算法使用误差平方和准则函数来评价聚类性能。给定数据集 X, 其中只包含描述属性,不包含类别属性。假设 X 包含 k 个聚类子集 X1,X2,…XK; 各个聚类子集中的样本数量分别为 n1,n2,…,nk;各个聚类子集的均值代表点(也 mm称聚类中心)分别为 , m m 1 2,…,m 。 ?k ? 2 k则误差平方和准则函数公式为: E ? k i?1 p?Xi p ? m i 相似度的计算根据一个簇中对象的平均值来进行。 将所有对象随机分配到 k 个非空的簇中。 计算每个簇的平均值,并用该平均值代表相应的簇。 根据每个对象与各个簇中心的距离,分配给最近的簇。 然后转 2),重新计算每个簇的平均值。这个过程不断重复直到满足某个准则函数才停止。 三.算法描述 为中心向量 c1, c2, …, ck 初始化 k 个种子 分组: 将样本分配给距离其最近的中心向量 由这些样本构造不相交( non-overlapping )的聚类 确定中心: 用各个聚类的中心向量作为新的中心 重复分组和确定中心的步骤,直至算法收敛 四.算法流程 输入:簇的数目 k 和包含 n 个对象的数据库。输出:k 个簇,使平方误差准则最小。 算法步骤: 为每个聚类确定一个初始聚类中心,这样就有 K 个初始聚类中心。 将样本集中的样本按照最小距离原则分配到最邻近聚类 使用每个聚类中的样本均值作为新的聚类中心。 重复步骤步直到聚类中心不再变化。 结束,得到 K 个聚类 五.算法举例 数据对象集合 S 见表 1,作为一个聚类分析的二维样本,要求的簇的数量 k=2。 O X Y 1 0 2 2 0 0 3 0 4 5 0 5 5 2 选择 O 1 ?0,2 ?,O 2 ?0,0 ?为初始的簇中心,即 M ? O 1 1 ? ?0,2 ? ,M ? O 2 2 ? ?0,0 ? ?0 ?0 ?1.5?2 ? ?0 ? 0?2 对 O :d ?M , O 3 1 3 ?? ?0 ?1.5?2 ? ?2 ? 0?2 ? 2.5 d ?M , O ?? 2 3 ? 1.5 显然 d ?M , O 2 3 ?? d ?M ,O ?0 ?0 ? 5?2 ? ?2 ? 0?2 ? ,故将O 3 分配给C 29?0 29 ?0 ? 5?2 ? ?0 ? 0?2 对于 O 4 :d ?M , O ?? 1 4 ? d ?M , O ?? ? 5 2 4 因为 d ?M ,O 2 4 ?? d ?M ,O ?0 ?0 ? 5?2 ? ?2 ? 2?2 ,O ? ,所以将O ? ,所以将 O 294 29 分配给c ?0 ?0 ? 5?2 ? ?0 ? 2?2 对于O 5 :d ?M , O ?? 1 5 ? 5 d ?M , O ?? ? 2 5 因为 d ?M , O 1 5 ?? d ?M 2 分配给C 5 5 1 更新,得到新簇 C ? ?O , O ? 和 C ? ?O ,O ,O ? 1 1 5 2

文档评论(0)

1亿VIP精品文档

相关文档