分层聚类法就是对给定数据对象的集合进行层次分解,根据分层分解采用的分解策略,分层聚类法又可以分为凝聚的(agglomerative)和分裂的(divisive)分层聚类。
凝聚的分层聚类
它采用自底向上的策略,首先将每一个对象作为一个类,然后根据某种度量(如2个当前类中心点的距离)将这些类合并为较大的类,直到所有的对象都在一个类中,或者是满足某个终止条件时为止,绝大多数分层聚类算法属于这一类,它们只是在类间相似度的定义上有所不同。
分裂的分层聚类
它采用与凝聚的分层聚类相反的策略——自顶向下,它首先将所有的对象置于一个类中,然后根据某种度量逐渐细分为较小的类,直到每一个对象自成一个类,或者达到某个终止条件(如达到希望的类个数,或者2个最近的类之间的距离超过了某个阈值)。
分层聚类虽然比较简单,但经常会遇到选择合并点或者分裂点的问题。这种选择非常关键,因为一旦一组对象被合并或者分裂,下一步的工作就是在新形成的类上进行,已做的处理不能撤销,类之间也不能交换对象。如果合并或者分裂的决定不合适,就可能得出低质量的聚类结果。而且,分层聚类算法没有很好的可伸缩性,在决定合并或者分裂之前需要检查和估算大量的对象和类。