算法大数据呆鸟的Python数据分析

层次聚类

2016-02-01  本文已影响344人  程sir

层次聚类(hierarchical clustering)算法极为简单:有N多节点,最开始认为每个节点为一类,然后找到距离最近的节点“两两合并”,合并后的两个节点的平均值作为新的节点,继续两两合并的过程,直到最后都合并成一类。

下图表明了聚类的过程,距离最近的节点合并(第一步中,如果有两对节点距离一样,那就同时合并)


层次聚类过程

如果用数据挖掘工具来做(如SPSS),一般会生成一个树形图,那么我们可以根据分析问题的具体情况,选择到底最终要聚成几类:

层次聚类树形图

如果从纯理论上讲,判断聚成几类可以参考每一步合并的“距离”是不是有明显差距,我们的例子中:

第一步:A和B,C和D合并时候,距离很近,就算大概是1(就是肉眼估算,没有什么测量)
第二步:CD和E合并,距离其实也很近,大概2
第三步:CDE和F合并,距离远了,大概8
第四步:CDEF和AB合并,距离大概9

可见,第二步到第三步,距离有了一个质的提升,说明相对接近的都已经合成一推儿,开始远距离“结合”了,因此,就在第二步的地方结束,应该是一个较好的聚类选择,也就是聚成3类。

当然,真正聚成几类一定不要从理论出发,还是要看实际案例中,聚成几类最合理,最好解释,最能说明问题

层次聚类运算速度比较慢,因为要每次都要计算多个cluster内所有数据点的两两距离,处理大量数据时非常吃力,最大的优点,就是它一次性地得到了整个聚类的过程,只要得到了上面那样的聚类树,想要分多少个cluster都可以直接根据树结构来得到结果,改变 cluster数目不需要再次计算数据点的归属。

上一篇下一篇

猜你喜欢

热点阅读