数学建模————统计问题之分类/聚类(二) 8 Y# u& Y: a/ ]8 D' Z 首先要弄明白分类和聚类的区别:% A! d6 ?* d+ @9 S* A. m8 s/ i2 {3 E# F
分类(判别):数据包含数据特征部分和样本标签部分,分类的目的就是判别新的数据特征到其应有的样本标签(类别)中。+ m1 @; J$ Q* b" a
# ?/ @3 [( A& q8 P7 h4 b4 g
比方说,现在告诉大家一个教室里面其中一半人每个人的性别(男女),现在需要大家将另一半人中每个人的性别判断出来,因此大家首先要做的的找到区分性别的特征,然后应用到另一半人身上,将其归类。 6 S) I$ N# [8 y) f- ^3 }" ^% X- }1 Z 3 K7 n t" p4 U9 Z& N+ | 聚类:数据中只有数据特征,需要根据某一标准将其划分到不同的类中。: J f6 ]/ O7 H4 D0 J
, c2 s$ n; e9 D2 e3 P5 ?1 u
同样的,现在一个教室里面所有人都没什么标签,现在需要你将整个教室的人分为两类,那么你可以从性别、体型、兴趣爱好、位置等等角度去分析。( q7 {! ~% E% t& z
) I {' W: g$ ^ ; d$ e; ~, H( K d& h3 w; J; U+ P
可以看到,分类其实跟预测差不多,只不过输出是一维的,并且还是整数,所以可以用预测中的机器学习方法来解决分类问题。而聚类则不同,一般来说,聚类需要定义一种相似度或者距离,从而将相似或者距离近的样本归为一类,常见的有:kmeans算法、分层聚类、谱聚类等。 8 |) f: g1 l9 h. i- m' j) v9 G z
对于聚类来说,除了相似性的度量之外,还有一个比较重要的是终止条件,即需要聚成多少类,一般来说,基本都是在聚类之前就设定好需要聚成多少类,其中kmeans就是先设定几个类中心,然后将与类中心相近的数据归到那一类,然后不断更新类中心,直至所有数据聚类完毕,而分层聚类则是相反,先将所有数据各自为一类,然后将相似的类合并,直至达到k类为止... 8 o, I& Z# ^2 { z# k 当然,也可以将终止条件改为当最小的距离大于某一阈值时,不再合并类(适用于分层聚类),除了这些算法,还有机器学习方法,如:自组织竞争网络(SOM),可以自行了解。# m. P4 a4 \( w0 N, `, O' a2 y( d8 z
* r0 |! ^3 x% K# R 接下来我们以分层聚类为例进行讲解,这一部分例子来自于《数学建模算法与应用》,用以辅助说明。通常来说,分层聚类有两类,一类是从上到下的分裂(即现将所有个体看做一个类,然后利用规则一步步的分裂成多个类),另一类是从下到上的合并(即先将每个个体看作一个类,然后依据规则一步步合并为一个类)。因此分层聚类最终可以得到一个金字塔结构,每一层都有不同的类别数量,我们可以选取需要的类别数量。& L9 Y7 @; p4 d4 w
--------------------- , x" \7 g( Q1 h- O( z 例子:设有5个销售员w1,w2,w3,w4,w5,他们的销售业绩由二维变量(v1,v2)描述:( l0 \0 V0 l2 E$ h0 ^/ T: h
5 O9 u& C+ U9 s8 } f
* U9 d2 Z0 K$ F& z4 M# Z- G