5聚类之层次聚类基于划分的聚类(k
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5 聚类之层次聚类基于划分的聚类(k
、层次聚类
1、层次聚类的原理及分类1)层次法(Hierarchicalmethods )先计算样本之间的距离。
每次将距离最近的点合并到同一个类。然后,再计算类与类之间的距离,将距离最近的类合并为一个大类。不停的合并,
直到合成了一个类。其中类与类的距离的计算方法有:最短
距离法,最长距离法,中间距离法,类平均法等。比如最短
距离法,将类与类的距离定义为类与类之间样本的最短距离。
层次聚类算法根据层次分解的顺序分为:自下底向上和自上向下,即凝聚的层次聚类算法和分裂的层次聚类算法
agglomerative 和divisive ),也可以理解为自下而上法
bottom-up )和自上而下法(top-down )。自下而上法就是
开始每个个体(object )都是一个类,然后根据linkage 寻找同类,最后形成一个“类” 。自上而下法就是反过来,
开始所有个体都属于一个“类”,然后根据linkage 排除异己,劣之分,只是在实际应用的时候要根据数据特点以及你想要的“类”的个数,来考虑是自上而下更快还是自下而上更快。
最后每个个体都成为一个“类” 。这两种路方法没有孰优孰
至于根据Linkage 判断“类”的方法就是最短距离法、最长
距离法、中间距离法、类平均法等等(其中类平均法往往被
认为是最常用也最好用的方法,一方面因为其良好的单调性,另一方面因为其空间扩张/浓缩的程度适中)。为弥补分解与合并的不足,层次合并经常要与其它聚类方法相结合,如循环定位。
2)Hierarchical methods 中比较新的算法有BIRCH( Balanced
Iterative Reducingand Clustering Using Hierarchies 利用层次方
法的平衡迭代规约和聚类)主要是在数据量很大的时候使用,而且数据类型是numerical 。首先利用树的结构对对象集进行划分,然后再利用其它聚类方法对这些聚类进行优化;
ROCK ( A
Hierarchical ClusteringAlgorithm for Categorical Attributes )主要用在categorical 的数据类型上;Chameleon(A Hierarchical
Clustering AlgorithmUsing Dynamic Modeling )里用到的linkage 是kNN (k-nearest-neighbor)算法,并以此构建一个graph,Chameleon 的聚类效果被认为非常强大,比BIRCH 好用,但运算复杂度很高,0(22)。
2、层次聚类的流程
凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。绝大多数层次聚类属于凝聚
型层次聚类, 它们只是在簇间相似度的定义上有所不同。
里给出采用最小距离的凝聚层次聚类算法流程:
(1) 将每个对象看作一类,计算两两之间的最小距离;
(2) 将距离最小的两个类合并成一个新类;
(3) 重新计算新类与所有类之间的距离;
(4) 重复 (2)、(3) ,直到所有类最后合并成一类。
聚类的效果如下图,黑色是噪音点:另外我们可以看出凝聚
部极小问题或是很难选择初始点的问题。合并的操作往往是 最终的,一旦合并两个簇之后就不会撤销。当然其计算存储 的代价是昂贵的。 3、层次聚类的优缺点
类成其它形状 缺点: 1,计算复杂度太高; 2,奇异值也能产生很大影响; 3,算法很可能聚类成链状 r 语言中使用 hclust(d,method = "complete", members=NULL) :进行层次聚类。 d 为距离矩阵; method
表示类的合并方法, single 最短距离法, complete
的层次聚类并没有类似基本
K 均值的全局目标函数, 没有局
优点: 1,距离和规则的相似度容易定义,限制少;
2,不需 要预先制定聚类数; 3,可以发现类的层次关系;
4,可以聚
最长距离
法,median 中间距离法,mcquitty 相似法,average 类平均法,centroid重心法,ward离差平方和法;members为NULL 或d长度的矢量。
、划分聚类法k-means
基于划分的方法(Partition-based methods):其原理简单来说
就是,想象你有一堆散点需要聚类,想要的聚类效果就是“类内的点都足够近,类间的点都足够远” 。首先你要确定这堆散点最后聚成几类,然后挑选几个点作为初始中心点,再然后依据预先定好的启发式算法
( heuristicalgorithms )给数据点做迭代重置
( iterativerelocation ),直到最后到达“类内的点都足够近,类间的点都足够远”的目标效果。
Partition-based methods 聚类多适用于中等体量的数据集,但数据集越大,越有可能陷入局部最小。
我们也不知道“中等”到底有多“中” ,所以不妨理解成,
1、Kmeans 算法的原理
k-means 算法以k 为参数,把n 个对象分成k 个簇,使簇内具有较高的相似度,而簇间的相似度较低。k-means 算法的处理过程如下:首先,随机地选择k 个对象,每个对象初始地代表了一个簇的平均值或中心,即选择K 个初始质心;对
剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛,直到质心不发生明显的变化。通常,采用