数学建模————统计问题之分类/聚类(二) 0 W7 \( M, W; i* s% R2 n& ]8 | 首先要弄明白分类和聚类的区别: $ o' K) O& v. r$ U 分类(判别):数据包含数据特征部分和样本标签部分,分类的目的就是判别新的数据特征到其应有的样本标签(类别)中。% p* N3 k c; x% k% x
$ ^4 ]* U2 ^% o; H- ^ { 比方说,现在告诉大家一个教室里面其中一半人每个人的性别(男女),现在需要大家将另一半人中每个人的性别判断出来,因此大家首先要做的的找到区分性别的特征,然后应用到另一半人身上,将其归类。 9 K2 B8 R- t! a& @5 E' [" l" L5 ?% o9 M1 ?- y8 R
聚类:数据中只有数据特征,需要根据某一标准将其划分到不同的类中。 6 p& d# y4 p4 X8 D( T$ }" n8 w& Q3 Y2 y8 Z- |' y% Q8 V
同样的,现在一个教室里面所有人都没什么标签,现在需要你将整个教室的人分为两类,那么你可以从性别、体型、兴趣爱好、位置等等角度去分析。 ) ?# M/ F. Q* `7 `3 S9 n8 d! F4 }7 x9 a& G& G) @7 A- P
. D. X7 H/ v% j( i: B5 v6 Q: k
$ T* f8 X6 O, {" J* ?3 j6 B3 m$ ^) r
可以看到,分类其实跟预测差不多,只不过输出是一维的,并且还是整数,所以可以用预测中的机器学习方法来解决分类问题。而聚类则不同,一般来说,聚类需要定义一种相似度或者距离,从而将相似或者距离近的样本归为一类,常见的有:kmeans算法、分层聚类、谱聚类等。8 q" o$ B5 Q9 }, O! v$ o
* O: a" J( m$ E. w5 A1 r 对于聚类来说,除了相似性的度量之外,还有一个比较重要的是终止条件,即需要聚成多少类,一般来说,基本都是在聚类之前就设定好需要聚成多少类,其中kmeans就是先设定几个类中心,然后将与类中心相近的数据归到那一类,然后不断更新类中心,直至所有数据聚类完毕,而分层聚类则是相反,先将所有数据各自为一类,然后将相似的类合并,直至达到k类为止... \ n. p- W% H4 s/ r
当然,也可以将终止条件改为当最小的距离大于某一阈值时,不再合并类(适用于分层聚类),除了这些算法,还有机器学习方法,如:自组织竞争网络(SOM),可以自行了解。* C& F- Z# g# n& w. c( w0 ?
/ G" g4 E3 |6 \0 l; S* t 接下来我们以分层聚类为例进行讲解,这一部分例子来自于《数学建模算法与应用》,用以辅助说明。通常来说,分层聚类有两类,一类是从上到下的分裂(即现将所有个体看做一个类,然后利用规则一步步的分裂成多个类),另一类是从下到上的合并(即先将每个个体看作一个类,然后依据规则一步步合并为一个类)。因此分层聚类最终可以得到一个金字塔结构,每一层都有不同的类别数量,我们可以选取需要的类别数量。8 O& h5 O0 n) Q& i5 }
--------------------- % {) f1 o' D9 { ?' L7 m
例子:设有5个销售员w1,w2,w3,w4,w5,他们的销售业绩由二维变量(v1,v2)描述:! S: t m2 }4 s1 ?* F: b
* Y4 x, f! f F& Y, c