上篇博客我们粗略讲解了一下kmeans聚类算法,其中牵涉到了新的聚类算法:层次聚类算法,本篇博客我们着重讲一下这种聚类算法。
kmeans聚类算法可以看做top-down结构,而层次聚类算法则可以视为bottom-up结构,而且极其类似于霍夫曼编码这种贪心结构算法,不过不同之处在于霍夫曼编码每次找的是分离的两个值最小的两个节点,然后合并成一个节点,而层次聚类算法则找的是两个节点(集合)相似度最小的,同样可以找到两个节点(集合),然后进行合并!下面我们来看一下具体的步骤吧!
思路分析(霍夫曼编码):
1)计算不同节点之间的相似度,找到两个相似度最小的节点进行合并;
2)并将原来的节点/集合从原来的节点中去掉;
3)重新计算新的集合的相似度,找出相似度小的两个节点(集合)进行合并,重复步骤2),直到最后集合中只有一个集合则停。
重点解析:
1)计算不同节点之间的相似度,如果说有n个节点/集合的话则形成的n*n的二维矩阵,相似度(欧几里得距离)计算公式分为:
2)节点/集合的合并方法:找到两个相似度最小的节点/集合(节点和节点,节点和集合,集合和集合)进行合并,组合成一个新的集合,放入新的集合,将原来的节点/集合去掉,进行新的相似度计算(是不是很像霍夫曼编码啊)。
参考:层次聚类算法的原理及实现