4 Z, B7 `3 v& A) z% A 同样的,现在一个教室里面所有人都没什么标签,现在需要你将整个教室的人分为两类,那么你可以从性别、体型、兴趣爱好、位置等等角度去分析。/ A. ~1 F* V9 T+ h* m- f( [1 r& D5 b
6 M2 t ?& }, q* R8 M
; e. U8 \4 ^; c. M1 \ r+ P. h
/ C9 P& k* z% A2 o 可以看到,分类其实跟预测差不多,只不过输出是一维的,并且还是整数,所以可以用预测中的机器学习方法来解决分类问题。而聚类则不同,一般来说,聚类需要定义一种相似度或者距离,从而将相似或者距离近的样本归为一类,常见的有:kmeans算法、分层聚类、谱聚类等。% R% b; m* u6 ?" i
/ P4 {; U7 ^' J- @4 x5 K
对于聚类来说,除了相似性的度量之外,还有一个比较重要的是终止条件,即需要聚成多少类,一般来说,基本都是在聚类之前就设定好需要聚成多少类,其中kmeans就是先设定几个类中心,然后将与类中心相近的数据归到那一类,然后不断更新类中心,直至所有数据聚类完毕,而分层聚类则是相反,先将所有数据各自为一类,然后将相似的类合并,直至达到k类为止...( C6 z) |0 K' f3 F( Y9 e
当然,也可以将终止条件改为当最小的距离大于某一阈值时,不再合并类(适用于分层聚类),除了这些算法,还有机器学习方法,如:自组织竞争网络(SOM),可以自行了解。6 u- X! ]6 ?! {5 k
' l7 g& O0 i9 m( c 接下来我们以分层聚类为例进行讲解,这一部分例子来自于《数学建模算法与应用》,用以辅助说明。通常来说,分层聚类有两类,一类是从上到下的分裂(即现将所有个体看做一个类,然后利用规则一步步的分裂成多个类),另一类是从下到上的合并(即先将每个个体看作一个类,然后依据规则一步步合并为一个类)。因此分层聚类最终可以得到一个金字塔结构,每一层都有不同的类别数量,我们可以选取需要的类别数量。! _( F% F, I4 r; I/ B( U# T8 X
--------------------- 0 G' J, K0 [2 b$ }/ v 例子:设有5个销售员w1,w2,w3,w4,w5,他们的销售业绩由二维变量(v1,v2)描述: 0 J0 b$ R8 i8 D3 ~, @ $ T% H3 ]) l% `. z2 F $ g3 s( _, h+ H. O0 H* @) e& i5 Y q/ ]& v% I
将5个人的两种数据看作他们的指标,首先,我们简单定义任意两组数据的距离为: 6 B5 K1 z+ Q2 l% k: | ; {8 u( c3 T% j" c+ _8 {) Q1 R 5 Y; a9 f0 q: C9 P5 X" S 2 s7 _/ d8 |/ F4 z; V4 ^' I9 a6 Q y
0 I1 j* f, [+ i f" E
/ ]8 c y( J8 K5 b* N* v n# `/ ^" L8 ~* |) o
与此相对应的,当有样本归为一类后,我们要计算类间距离就又得需要一个计算方式,我们定义任意两类间的距离为两类中每组数据距离的最小值:9 ]( d9 }; Y; x% y' T/ }8 v8 J+ U2 e
; j' `% g! _' \1 b, N) F$ U 6 b; I! \6 J# r: L t7 [4 k5 b( y' \
: S( X; N# i- a