《K-means算法详解》由会员分享,可在线阅读,更多相关《K-means算法详解(15页珍藏版)》请在金锄头文库上搜索。
1、K-meansK-means算法详解算法详解主要内容主要内容 K-meansK-means算法算法算法实例算法实例算法优缺点算法优缺点 K-meansK-means算法概述算法概述 K-means算法算法, 也被称为也被称为k-平均或平均或k-均值均值算法,是一种得到最广泛使用的算法,是一种得到最广泛使用的聚类算法聚类算法。 它是将各个聚类子集内的所有数据样本的它是将各个聚类子集内的所有数据样本的均值作为该聚类的代表点,算法的主要思均值作为该聚类的代表点,算法的主要思想是想是通过迭代过程把数据集划分为不同的通过迭代过程把数据集划分为不同的类别类别,使得评价聚类性能的准则函数达到,使得评价聚类性
2、能的准则函数达到最优(最优(平均误差准则函数平均误差准则函数E ),从而使生),从而使生成的每个聚类(又称成的每个聚类(又称簇簇)内紧凑,类间独)内紧凑,类间独立。立。 聚类与分类的区别聚类与分类的区别聚类聚类(clustering)是指根据是指根据“物以类聚物以类聚”的原理,将本身的原理,将本身没有类别的样本聚集成不同的组,这样的一组数据对象的没有类别的样本聚集成不同的组,这样的一组数据对象的集合叫做簇,并且对每一个这样的簇进行描述的过程。集合叫做簇,并且对每一个这样的簇进行描述的过程。在分类(在分类( classification )中,对于目标数据库中存在哪)中,对于目标数据库中存在哪些
3、类是知道的,要做的就是将每一条记录分别属于哪一类些类是知道的,要做的就是将每一条记录分别属于哪一类标记出来。标记出来。聚类分析也称无监督学习,聚类分析也称无监督学习, 因为因为和分类学习相比,聚类的和分类学习相比,聚类的样本没有标记,需要由聚类学习算法来自动确定。样本没有标记,需要由聚类学习算法来自动确定。聚类分聚类分析是研究如何在没有训练的条件下把样本划分为若干类。析是研究如何在没有训练的条件下把样本划分为若干类。欧氏距离欧氏距离假设给定的数据集假设给定的数据集 ,X X中的样本用中的样本用d d个描述属性个描述属性A A1 1,A,A2 2AAd d (维度维度)来表示。)来表示。数据样本
4、数据样本x xi i=(x=(xi1i1,x,xi2i2,x,xidid), x), xj j=(x=(xj1j1,x,xj2j2,x,xjdjd) )其中,其中, x xi1i1,x,xi2i2,x,xidid和和x xj1j1,x,xj2j2,x,xjdjd分别是样本分别是样本x xi i和和x xj j对应对应d d个描述个描述属性属性A A1 1,A,A2 2,A,Ad d的具体取值。的具体取值。样本样本xixi和和xjxj之间的之间的相似度相似度通常用它们之间的距离通常用它们之间的距离d(xd(xi i,x,xj j) )来表示,距离越小,样本来表示,距离越小,样本x xi i和和x
5、 xj j越相似,差异度越小;距越相似,差异度越小;距离越大,样本离越大,样本x xi i和和x xj j越不相似,差异度越大。越不相似,差异度越大。 欧式距离公式如下:欧式距离公式如下: 平均误差准则函数平均误差准则函数K-means聚类算法使用聚类算法使用误差平方和准则函数误差平方和准则函数来评价聚类性来评价聚类性能。给定数据集能。给定数据集X X,其中只包含描述属性,不包含类别属,其中只包含描述属性,不包含类别属性。假设性。假设X X包含包含k k个聚类子集个聚类子集X X1 1,X,X2 2,X,XK K;各个聚类子集中;各个聚类子集中的样本数量分别为的样本数量分别为n n1 1,n
6、n2 2,n,nk k; ;各个聚类子集的均值代表各个聚类子集的均值代表点(也称聚类中心)分别为点(也称聚类中心)分别为m m1 1,m m2 2,m,mk k。误差平方和准则函数公式为:误差平方和准则函数公式为:K-means算法过程算法过程算法算法 k-means算法算法输入:簇的数目输入:簇的数目k和包含和包含n个对象的数据库。个对象的数据库。输出:输出:k个簇,使平方误差准则最小。个簇,使平方误差准则最小。算法步骤:算法步骤: 1.为每个聚类确定一个初始聚类中心,这样就有为每个聚类确定一个初始聚类中心,这样就有K 个个 初初始聚类始聚类中心。中心。 2.将样本集中的样本按照最小距离原则
7、分配到最邻近聚类将样本集中的样本按照最小距离原则分配到最邻近聚类 3.使用每个聚类中的样本均值作为新的聚类中心。使用每个聚类中的样本均值作为新的聚类中心。4.重复步骤重复步骤2.3直到聚类中心不再变化。直到聚类中心不再变化。5.结束,得到结束,得到K个聚类个聚类Oxy10220031.50450552数据对象集合数据对象集合S见表见表1,作为一个聚类分析的二,作为一个聚类分析的二维样本,要求的簇的数量维样本,要求的簇的数量k=2。(1)选择选择 , 为初始的簇中心,即为初始的簇中心,即 , 。(2)对剩余的每个对象,根据其与各个簇中心的对剩余的每个对象,根据其与各个簇中心的距离,将它赋给最近的
8、簇。距离,将它赋给最近的簇。 对对 : 显然显然 ,故将,故将 分配给分配给 算法实例算法实例对于对于 :因为因为 所以将所以将 分配给分配给 对于对于 :因为因为 所以将所以将 分配给分配给更新,得到新簇更新,得到新簇 和和计算平方误差准则,单个方差为计算平方误差准则,单个方差为Oxy10220031.50450552,。 总体平均方差是:总体平均方差是: (3)计算新的簇的中心。)计算新的簇的中心。 重复(重复(2)和()和(3),得到),得到O1分配给分配给C1;O2分配给分配给C2,O3分配分配给给C2 ,O4分配给分配给C2,O5分配给分配给C1。更新,得到新簇。更新,得到新簇和和
9、。 中心为中心为 , 。单个方差分别为单个方差分别为总体平均误差是:总体平均误差是: 由上可以看出,第一次迭代后,总体平均误差值由上可以看出,第一次迭代后,总体平均误差值52.2525.65,显著减小。由于在两次迭代中,簇中心不变,所以停止迭代过程显著减小。由于在两次迭代中,簇中心不变,所以停止迭代过程,算法停止算法停止。 Oxy10220031.50450552K-means算法的优点分析算法的优点分析n主要优点:主要优点:是解决聚类问题的一种经典算法,是解决聚类问题的一种经典算法,简单、简单、快速快速。对对处理大数据集处理大数据集,该算法是相对可伸缩和,该算法是相对可伸缩和高效率的。高效率
10、的。因为它的复杂度是因为它的复杂度是0 (n k t ) , 其中其中, n 是所是所有对象的数目有对象的数目, k 是簇的数目是簇的数目, t 是迭代的次是迭代的次数。通常数。通常k n 且且t n 。当结果簇是密集的,而簇与簇之间区别明当结果簇是密集的,而簇与簇之间区别明显时显时, , 它的效果较好。它的效果较好。在簇的平均值被定义的情况下才能使用,在簇的平均值被定义的情况下才能使用,这这对于处理符号属性的数据不适用。对于处理符号属性的数据不适用。必须事先给出必须事先给出k k(要生成的簇的数目),而(要生成的簇的数目),而且且对初值敏感对初值敏感,对于不同的初始值,可能会,对于不同的初始
11、值,可能会导致不同结果。导致不同结果。经常发生得到次优划分的情经常发生得到次优划分的情况。解决方法是多次尝试不同的初始值。况。解决方法是多次尝试不同的初始值。它对于它对于“躁声躁声”和孤立点数据是敏感的,和孤立点数据是敏感的,少少量的该类数据能够对平均值产生极大的影响。量的该类数据能够对平均值产生极大的影响。K-means算法的缺点分析算法的缺点分析n主要缺点:主要缺点:K-means 算法属于算法属于聚类聚类分析方法中一种基本的且分析方法中一种基本的且应用最广泛的划分算法;应用最广泛的划分算法;它是一种它是一种已知聚类类别数已知聚类类别数的聚类算法。指定类别数的聚类算法。指定类别数为为K,对
12、样本集合进行聚类,聚类的结果由,对样本集合进行聚类,聚类的结果由K 个聚个聚类中心来表达;类中心来表达;基于给定的聚类目标函数(或者说是聚类效果判别基于给定的聚类目标函数(或者说是聚类效果判别准则),算法采用迭代更新的方法,每一次迭代过准则),算法采用迭代更新的方法,每一次迭代过程都是向目标函数值减小的方向进行,程都是向目标函数值减小的方向进行,最终的聚类最终的聚类结果使目标函数值取得极小值结果使目标函数值取得极小值,达到较优的聚类效,达到较优的聚类效果。果。使用使用平均误差准则函数平均误差准则函数E作为聚类结果好坏的衡量作为聚类结果好坏的衡量标准之一,保证了算法运行结果的可靠性和有效性。标准之一,保证了算法运行结果的可靠性和有效性。K-means算法总结算法总结 谢谢观看!谢谢观看! 结束结束