作者:hyman



python凝聚子群_聚类算法

图 3-1

3.1 传统聚类算法

3.1.1 层次方法

层次法对给定的数据对象集合进行层次似的分解。按层次分解的形成方式,层次法可分为凝聚和分裂两大类。凝聚的方法,也称为自底向上的方法,一开始将每个对象作为单独的一个类,然后相继地合并相近的类,直到所有的类合并为一个(层次的最上层),或者达到一个终止条件为止。分裂的方法,也称为自顶向下的方法,一开始将所有的对象置于一个类中。在迭代的每一步中,类被分裂为更小的类,直到每个类只包含一个对象,或者达到一个终止条件为止。在凝聚或者分裂层次聚类方法中,通常以用户定义的希望得到的类的数目作为结束条件。在类的合并或分裂过程中,需要考察类间的距离。类间距离的度量广泛采用如下四种方法:

最小距离:dmin(Ci,Cj)=minp∈Ci,p'∈Cj|p- p' |

最大距离:dmax(Ci,Cj)=maxp∈Ci,p'∈Cj|p- p' |

平均值距离:dmcan(Ci,Cj)=|mi- mj|

平均距离:

层次方法(Hierarchical Method)中代表算法有BIRCH、CURE、ROCK、CHAMELEON算法等。

3.1.2 划分方法

给定一个包含n个数据对象的数据集,划分法构建数据的k个划分,每个划分表示一个类,并且k≤n。同时满足如下的要求:①每个组至少包含一个对象;②每个对象属于且仅属于一个组。给定要构建的划分的数目k,创建一个初始划分。然后采用一种迭代的重定位技术,尝试通过对象在划分间移动来改进划分。判定一个好的划分的一般准则是:在同一个类中的对象之间尽可能“接近”或相关,在不同类中的对象之间尽可能“远离”或不同,即使下列准则函数最小:


式中的E是数据集中所有对象的平方误差的总和;mi是类Ci的平均值(或中心点),p是数据空间中的数据对象(p和mi都是多维的)。为了达到全局最优,基于划分的聚类要求穷举所有可能的划分。基于划分的方法(Partitioning Method),其代表算法有K-MEANS、K-MEDOIDS、大型数据库划分方法(CLARANS)等。