层次聚类

层次聚类分为:凝聚法和分裂法。

凝聚法:

假设有N个待聚类的样本,对于层次聚类来说,基本步骤就是:

       1、(初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度(杰卡德距离)

       2、寻找各个类之间最近的两个类,把他们归为一类(这样类的总数就少了一个);

       3、重新计算新生成的这个类与各个旧类之间的相似度;

       4、重复2和3直到所有样本点都归为一类,结束。

整个聚类过程其实是建立了一棵树,在建立的过程中,可以通过在第二步上设置一个阈值,当最近的两个类的距离大于这个阈值,则认为迭代可以终止。另外关键的一步就是第三步,如何判断两个类之间的相似度有不少种方法。可以采用计算两个类中的距离。

相似度量:杰卡德距离 http://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html

但是计算复杂度比较高,为了寻找距离最近/远和均值,都需要对所有的距离计算个遍,需要用到双重循环。另外从算法中可以看出,每次迭代都只能合并两个子类,这是非常慢的。

 

分裂法:

另外有一种聚类方法叫做divisive hierarchical clustering(自顶而下),过程恰好是相反的,一开始把所有的样本都归为一类,然后逐步将他们划分为更小的单元,直到最后每个样本都成为一类。在这个迭代的过程中通过对划分过程中定义一个松散度,当松散度最小的那个类的结果都小于一个阈值,则认为划分可以终止。这种方法用的不普遍,原文也没有做更多介绍。

        由于这种层次结构,普通的k-means也被称为一种flat clustering。


---------------------
作者:姜文晖
来源:CSDN
原文:https://blog.csdn.net/jwh_bupt/article/details/7685809
版权声明:本文为博主原创文章,转载请附上博文链接!

posted @ 2019-03-25 15:44  luxliy  阅读(1020)  评论(0编辑  收藏  举报