聚类与分类是人工智能领域中的两个经典问题。简单地说,分类算法是通过训练集进行学习,从而具备把未知数据划分到已知类别中的能力,这种通过训练数据进行学习的方法被称为监督学习(supervised learning)。作为一种监督学习方法,分类算法要求必须事先明确类别信息,并且所有待分类的数据都有一个已知类别与之对应。
聚类算法不需要通过具有类别标记的训练数据进行学习,是一种无监督学习(unsupervised learning)的方法,它借助算法把数据对象划分成几个不同的子集,每个子集称为一个簇(cluster)。划分的原则是使得同一簇中的对象彼此相似,而与其他簇中对象的差异尽量大。
虽然分类与聚类最终都是把待处理的对象分成几类,但是它们适用的问题、处理的方法以及对处理结果的解读都是不同的。首先分类问题的类别是事先确定的,而聚类事先并不知道处理对象的类别,而是根据它们内在的特性进行划分。例如,关注的对象是某个人群,一个典型的分类算法是根据人群的身高、体重等生物测量数据把他们划分成青少年、中年、老年三个类别。而聚类是根据这些生物测量数据按照某种相似度把人群分成几类。最终也许划分成了青少年、中年、老年三个类别,也有可能根据性别划分成男性、女性两个类别,还有可能根据其他标准划分成另外的几个类别。这在聚类完成前是未知的,并且需要对聚类结果进行解读。所以分类算法适用于类别或分类体系已经确定的问题,而聚类算法适用于不存在特定的分类体系的问题,聚类是一种探索式的学习方法。
聚类方法在很多领域都有应用,如商务智能、图像识别、网页搜索、生物学等。可供选择的聚类方法有很多种,应根据具体任务和算法的特点进行选择,并没有哪一种方法是适用于所有问题的。因为方法众多、特点不同,很难对聚类方法给出非常明确的分类,所以下面对常见的聚类方法给出一个不是非常严格的划分。