一、层次聚类
层次聚类是无监督学习方法,可对给定的N个待聚类的样本进行层次的分类,直到某种条件(类的个数、类间的距离超过某个阈值)满足为止。
1、层次聚类的划分
对于层次聚类,可具体分为:
a. 凝聚的(agglomerative)层次聚类:
采用自底向上的策略:先将每个样本作为一个簇(类),然后不断地计算各个类之间的相似度/距离、并合并最相近的两个类成一个大类,直到某个终止条件满足为止。(可与哈夫曼编码算法作类比)
b. 分裂的(divisive)层次聚类:
采用自顶向下的策略,先将所有样本置于一个簇(类)中,然后根据一些原则逐渐细分为越来越小的类,直到某个终止条件满足为止。(可与决策树算法作类比)
2、类间的距离
在整个聚类的过程中,往往需要计算两个类的距离来进行凝聚/分隔的操作或者停止迭代的操作。判断两个类之间的距离/相似度可有以下三种方法:
a. SingleLinkage/Nearest-Neighbor:
取两个类中距离最近的两个样本的距离作为这两个类的距离。即最近两个样本之间的距离越小,这两个类的距离就越小。这种计算方法可能导致聚类的结果比较松散,且这种松散的效应会越来越大。比如当两个类总体上离得比较远,但却有对个别的点比较接近的情况。
b. CompleteLinkage:
取两个集合中距离最远的两个点的距离作为这两个类的距离,是SingleLinkage的反面极端情况。这种计算方法可能