数据分析挖掘或者说机器学习中,有聚类与分类的概念,这是两个大类的问题,有人平时可能没有过多的去关注两者的区别。认为,聚类就是分类,分类就是聚类?显然,是不对的。
分类是根据一些给定的已知类别标号的样本,训练某种学习机器(即得到某种目标函数),使它能够对未知类别的样本进行分类。属于监督学习。
分类算法是有局限性的,需要事先知道样本的所有类别信息,并且断言待分类项都有一个类别与之对应。很多情况下,上述条件可能不能满足,比如大数据量下,需要大量的计算资源。
聚类指事先并不知道任何样本的类别标号,希望通过某种算法来把一组未知类别的样本划分成若干类别,聚类的时候,我们并不关心某一类是什么,我们需要实现的目标只是把相似的东西聚到一起,属于无监督学习。
分类与聚类的比较
聚类分析是研究如何在没有训练的条件下把样本划分为若干类。
在分类中,对于目标数据库中存在哪些类是知道的,要做的就是将每一条记录分别属于哪一类标记出来。
聚类需要解决的问题是将已给定的若干无标记的模式聚集起来使之成为有意义的聚类,聚类是在预先不知道目标数据库到底有多少类的情况下,希望将所有的记录组成不同的类或者说聚类,并且使得在这种分类情况下,以某种度量(例如:距离)为标准的相似性,在同一聚类之间最小化,而在不同聚类之间最大化。
与分类不同,无监督学习不依赖预先定义的类或带类标记的训练实例,需要由聚类学习算法自动确定标记,而分类学习的实例或数据样本有类别标记。
SVM算法与K-Means算法
聚类算法也可以用作分类,这个说法没问题,确实可以。相比之下,聚类是使用聚类结果的类来给每个数据打上标签,属于无监督学习;而分类,是利用已知类别的数据样本训练模型,使用这个模型来给待分类数据分类,属于监督学习。
这里拿SVM算法和K-Means算法举例说明。
SVM算法有训练数据,每个样本都有对应的类别,属于一种有监督分类算法。
K-Means算法事先不知道数据的类别,通过某种”度量“训练来达到聚类的目的,属于无监督分类。
有监督和无监督学习
监督学习,就是人们常说的分类,通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的,也就具有了对未知数据进行分类的能力。比如,我们从小就有生活常识,放一只猫在我们面前,我就知道这是只猫,它的名字叫猫;放一个苹果,我就知道这是苹果,它的名字叫苹果。监督学习里典型的例子就是KNN、SVM。
无监督学习则是另一种研究的比较多的学习方法,它与监督学习的不同之处,在于我们事先没有任何训练样本,而需要直接对数据进行建模。这听起来似乎有点不可思议,但是在我们自身认识世界的过程中很多处都用到了无监督学习。比如,假设我们不知道猫、苹果这些名词,放几只猫,几个苹果在我们面前,我们不知道猫是啥怪物;但是,我们可以根据各自特征把猫归为一类记为“A类”,苹果归为一类记为“B类”,虽然在我们的认知里,完全没听过猫、苹果这些名词,没有这种概念,但是我们能根据外表分辨出他们是有区别的,达到了分类目的,虽然我们不知道这是猫和苹果,因为假设我们没听过这个名词。无监督学习里典型的例子就是聚类了。聚类的目的在于把相似的东西聚在一起,而我们并不关心这一类是什么。因此,一个聚类算法通常只需要知道如何计算相似度就可以开始工作了。
猜你可能喜欢