原文链接:
http://blog.sina.com.cn/s/blog_5fc375650100jdec.html
1.定义
聚类,顾名思义就是把一组对象划分成若干类,并且每个类里面对象之间的相似度较高,不同类里面对象之间相似度较低或差异明显。与分类不同的是聚类不依靠给定的类别对对象进行划分。
2. 聚类算法的分类
聚类分析算法很多,大体上可以分为下面5类:
- 划分方法
- 层次的方法
- 基于密度的方法
- 基于网格的方法
- 基于模型的方法
- (1)划分方法
- 划分方法就是根据用户输入值K把给定对象分成K组(满足2个条件:1. 每个组至少包含一个对象。2. 每个对象必须且只属于一个组),每组都是一个聚类,然后利用循环再定位技术变换聚类里面的对象,直到客观划分标准(常成为相似函数,如距离)最优为止。典型代表:K-MEANS, K-MEDOIDS、k-modes、。
- (2)层次的方法
- 层次的方法对给定的对象集合进行层次分解。分为2类:凝聚的和分裂的。凝聚的方法也叫自底向上的方法,即一开始将每个对象作为一个单独的簇,然后根据一定标准进行合并,直到所有对象合并为一个簇或达到终止条件为止。分裂的方法也叫自顶向下的方法,即一开始将所有对象放到一个簇中,然后进行分裂,直到所有对象都成为单独的一个簇或达到终止条件为止。典型代表:CURE,BIRCH。
- (3)基于密度的方法
- 基于密度的方法即不断增长所获得的聚类直到邻近(对象)密度超过一定的阀值(如一个聚类中的对象数或一个给定半径内必须包含至少的对象数)为止。典型代表:DBSCAN,OPTICS。
- (4)基于网格的方法
- 基于网格的方法即将对象空间划分为有限数目的单元以形成网格结构。所有聚类操作都在这一网格结构上进行。典型代表:STING。
- (5)基于模型的方法
- 基于模型的方法即为每个聚类假设一个模型,然后按照模型去发现符合的对像。这样的方法经常基于这样的假设:数据是根据潜在的概率分布生成的。主要有2类:统计学方法和神经网络方法。典型代表:COBWEB,SOMS。
3. 划分方法
(1)数据挖掘聚类算法之K-MEANS
此算法以K为参数,把N个对象分为K个簇,以使簇内具有较高的相似度,而且簇间的相似度较低。相似度的计算根据一个簇中对象的平均值来进行。
此算法的工作过程为:首先从N个数据对象任意选择K个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。
一般都采用均方差作为标准测度函数.K个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。
K-MEANS算法的具体流程如下:
1)从N个数据对象任意选择K个对象作为初始聚类中心;
2)根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;
3)重新计算每个(有变化)聚类的均值(中心对象)
4)重复2/3步直到满足既定的条件,算法结束。
(2)
数据挖掘聚类算法之K-MEDOIDS
K-MEANS算法的缺点:
产生类的大小相差不会很大,对于脏数据很敏感。
改进的算法:K-medoids方法。
这儿选取一个对象叫做mediod来代替上面的中心的作用,这样的一个medoid就标识了这个类。
K-MEDODIS的具体流程如下:
1)任意选取K个对象作为medoids(O1,O2,…Oi…Ok)。
2)将余下的对象分到各个类中去(根据与medoid最相近的原则);
3)对于每个类(Oi)中,顺序选取一个Or,计算用Or代替Oi后的消耗—E(Or)。选择E最小的那个Or来代替Oi。这样K个medoids就改变了。
4)重复2、3步直到K个medoids固定下来。
不容易受到那些由于误差之类的原因产生的脏数据的影响,但计算量显然要比K-means要大,一般只适合小数据量。