学习数据挖掘的朋友,对分类算法和聚类算法都很熟悉。无论是分类算法还是聚类算法,都有许多具体的算法来实现具体的数据分析需求。很多时候,我们难以判断选择分类或者聚类的场合是什么。我们最直观的概念是,分类和聚类都是把某个被分析的对象划分到某个类里面,所以觉得这两种方法实际上是差不多一回事。然而当我们学习了许多具体算法之后再回来看,分类和聚类所实现的数据分析功能实际上是大相径庭的,他们之间不仅仅有算法上的具体差异,更重要的是,甚至他们的应用领域和所解决的具体问题都不一样。
算法书上往往这样解释二者的区别:分类是把某个对象划分到某个具体的已经定义的类别当中,而聚类是把一些对象按照具体特征组织到若干个类别里。虽然都是把某个对象划分到某个类别中,但是分类的类别是已经预定义的,而聚类操作时,某个对象所属的类别却不是预定义的。所以,对象所属类别是否为事先,是二者的最基本区别。而这个区别,仅仅是从算法实现流程来看的。
分类算法的基本功能是做预测。我们已知某个实体的具体特征,然后想判断这个实体具体属于哪一类,或者根据一些已知条件来估计感兴趣的参数。比如:我们已知某个人存款金额是10000元,这个人没有结婚,并且有一辆车,没有固定住房,然后我们估计判断这个人是否会涉嫌信用欺诈问题。这就是最典型的分类问题,预测的结果为离散值,当预测结果为连续值时,分类算法可以退化为计量经济学中常见的回归模型。分类算法的根本目标是发现新的模式、新的知识,与数据挖掘数据分析的根本目标是一致的。
聚类算法的功能是降维。假如待分析的对象很多,我们需要归归类,划划简,从而提高数据分析的效率,这就用到了聚类的算法。很多智能的搜索引擎,会将返回的结果,根据文本的相似程度进行聚类,相似的结果聚在一起,用户就很容易找到他们需要的内容。聚类方法只能起到降低被分析问题的复杂程度的作用,即降维,一百个对象的分析问题可以转化为十个对象类的分析问题。聚类的目标不是发现知识,而是化简问题,聚类算法并不直接解决数据分析的问题,而最多算是数据预处理的过程。
分类是有监督的算法,而聚类是无监督的算法。有监督的算法并不是实时的,需要给定一些数据对模型进行训练,有了模型就能预测。新的待估计的对象来了的时候,套进模型,就得到了分类结果。而聚类算法是实时的,换句话说是一次性的,给定统计指标,根据对象与对象之间的相关性,把对象分为若干类。分类算法中,对象所属的类别取决于训练出来的模型,间接地取决于训练集中的数据。而聚类算法中,对象所属的类别,则取决于待分析的其他数据对象。
分类算法中,待分析的数据是一个一个处理的,分类的过程,就像给数据贴标签的过程,来一个数据,我放到模型里,然后贴个标签。
聚类算法中,待分析的数据同时处理,来一堆数据过来,同时给分成几小堆。
因此,数据分类算法和数据聚类算法的最大区别是时效性问题。在已有数据模型的条件下,数据分类的效率往往比数据聚类的效率要高很多,因为一次只是一个对象被处理,而对于聚类结果来说,每当加入一个新的分析对象,类别结果都有可能发生改变,因此很有必要重新对所有的待分析对象进行计算处理。
典型的分类算法有:决策树,神经网络,支持向量机模型,Logistic回归分析,以及核估计等等。
聚类的方法有,基于链接关系的聚类算法,基于中心度的聚类算法,基于统计分布的聚类算法以及基于密度的聚类算法等等。
End.
作者:刘通(中国统计网特邀认证作者)
专栏地址:https://www.zhihu.com/people/xiao-nu-43/activities