目录
- 聚类的介绍
- 层级聚类
- 单连通与全连通聚类
- 平均连通聚类
- 自顶向下聚类
- 非层级聚类
- K平均算法
- EM算法
1.聚类的介绍
聚类算法的目的是将一组对象划分为若干组或类别,简单的说就是相同元素相同组,相异元素不同组的划分过程。聚类算法与分类算法的区别在于:聚类算法是无监督学习,分类算法是一个有监督学习的过程。
聚类算法很多,目前主要可以分为两类:层级聚类和非层级聚类。在非层级聚类中类别结构很简单,并且类别之间的关系没有层级聚类中的结构那么清晰。大多数非层级聚类算法都是一个迭代过程,算法首先要初始聚类,然后通过不断的迭代重新分配样本数据类型。层级聚类中,每个节点都是父类的一个类(根节点除外),因此聚类可以看做一颗树,如下图:我们可以看到叶子节点表示初始的样本数据,中间节点都是所聚的一个类,所有子节点都是类中的元素。
根据聚类方法的不同,聚类可分为:“软聚类”和“硬聚类”。“硬”聚类是指每个样本有且只能属于一个类别,“软”聚类是指每个样本可以同时属于多个类别,但是属于各个类别的概率有所不同。 层级聚类通常是硬聚类,非层级聚类“软”聚类和“硬”聚类都有可能。
2.层级聚类
层级聚类分为自顶向上和自顶向下两种。自顶向上有称为合聚类,实际是一种贪心算法。先将每个对象初始化为一个类,然后不断调整,每次合并相似度的最大的两个类。算法如下:
相反,自顶向下开始以全体对象为一个类,也称为分割算法。