数据挖掘十大算法之—K-Means
K-均值法也叫C-均值法,它是一种广泛使用的聚类方法。它以K为输入参数,把n个对象的集合分为k个簇,使得簇内的相似度尽可能高,而簇间的相似度尽可能的低。
K均值基于误差平方和准则。随机选择k个对象,每个对象代表一个簇的初始均值。对于下的每个对象,根据其与各个簇的均值的距离,将它指派到最相似的簇(距离最小)。然后计算每个簇的新的均值。此过程不断重复,直至准则函数收敛。误差平方和定义如下:
其中,E是数据集中所有对象的平方误差和,p是空间中的点,表示给定对象,mi似乎簇Ci的均值。其实E所代表的就是所有对象到其所在聚类中心的距离之和。对于不同的聚类,E的大小肯定是不一样的,因此,使E最小的聚类是误差平方和准则下的最优结果。
其实,这里就会有一个疑问,那就是代表点如何选?很明显,对于初始代表点的不同选取,可能就会得到不同的聚类结果。一般来说,选取代表点用如下几个办法:
(1)凭经验。根据问题性质,用经验的方法确定类别个数,从数据中找出从直观上看来比较合适的代表点。
(2)将全部数据随机地分成k类,计算每类的中心,将这些点作为每类的代表点。
(3)“密度”选择法。这个方法思路还是比较巧妙。首先每个样本为球心,用某个正数a为半径画圈,被圈进来的样本数则成为球心样本点的“密度”。找出“密度”最大的样本点作为第一类的代表点。然后开始选择第二类的代表点,这时不能直接选“密度”次大的代表点,因为次大的代表点很可能就在第一个代表点附近。可以规定一个正数b,在第一个代表点范围b之外选择“密度”次大的代表点作为第二类的代表点,其余代表点按照这个原则依次进行。
(4)用K个样本作为代表点。
(5)采用用K-1聚类划分问题产生K聚类划分问题的代表点的方法。思路是先把所有数据看成一个聚类,其代表点为所有样本的均值,然后确定两聚类问题的代表点是一聚类问题划分的总均值和离它最远的代表点。余下的以此类推。
K均值法思路简单,对大数据集处理来说,该算法是相对可伸缩和有效率的。但是这个算法也有一些缺点,如必须事先知道生成的簇的数目,而且这个算法对异常数据(噪声和离群点)是很敏感的。当然,针对这些缺点,k均值法也进行了发展,形成了一些变种。