关于确定聚类类数的一种方法的初步探讨,本文主要内容关键词为:方法论文,聚类类数论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
聚类分析是一种原理简单、用途广泛的多元统计分析方法。随着多元统计分析知识、高性能计算机和通用统计分析软件的推广普及,聚类分析日益为更多的人更多地应用于自己的研究和工作中。然而,由于使用聚类分析处理数据者不再局限于那些(统计或非统计的)专业研究人士,大量入门者甚至门外汉——例如大学本科生或咨询机构中的初中级研究人员-构成其规模庞大的用户子群体,聚类分析理论原本讨论不够,因而SPSS等统计分析软件也无定制处理功能,而对专业研究人士而言并不足以妨害大局的一些细节,却将可能给这个用户群体造成相当的困难,并肯定会影响到聚类分析的正确应用与应有效果。聚类分析中如何确定聚类类数K就属于这样一个细节。
本文将围绕这个问题进行探讨,并提出一种具体处理方法。
一、问题的提出
1)对于形如[案例1]的连续数据的聚类问题,最终可以给出所有可能类数的最优分割点以及对应的目标函数值,并可据此画出类似主成分分析中碎石图(Scree Plot)那样的平面函数图形。
[案例1]为了了解儿童的生长发育规律, 今统计了男孩从出生至十一岁,每年平均增长的重量如下:
年龄 1234567891011
增加公斤 9.3 1.8 1.9 1.7 1.5 1.3 1.4 2
1.9 2.32.1
使用聚类分析如何划分年龄段?
使用Fisher算法,首先计算出量度类内变差和的所有可能类的直径:
1 2
3
45 6 7 8 9 10
2
28.125
3
37.007 0.005
4
42.208 0.02 0.02
5
45.992 0.0880.080.02
6
49.128 0.2320.2 0.080.02
7
51 0.28 0.232
0.008
0.02
0.005
8
51.529 0.4170.393
0.308
0.29
0.287 0.18
9
51.98 0.4690.454
0.393
0.388 0.37
0.207 0.005
10 52.029 0.0802
0.8 0.774
0.773 0.708 0.42 0.087 0.08
11 52.182 0.9090.909
0.895
0.889 0.793 0.452 0.088 0.08
0.02
其次计算与各种条件下最优分割相联系的最小目标函数:
2 34
5 6
7 8
910
3 0.005
(2)
4 0.02
0.005
(2)
(4)
5 0.088 0.2 0.005
(2)
(5) (5)
6 0.232 0.04 0.02 0.005
(2)
(5) (6) (6)
7 0.28
0.04 0.0250.01
0.005
(2)(5) (6) (6) (6)
8 0.417 0.28 0.04 0.025
0.01
0.005
(2) (8) (8) (8) (8)(8)
9 0.469 0.2850.0450.030.015 0.01
0.005
(2) (8) (8) (8) (8)(8)(8)
10 0.802 0.3670.1270.045
0.03
0.015 0.010.005
(2) (8) (8) (10)(10)
(10)
(10)(10)
11 0.909 0.3680.1280.065
0.045 0.03
0.015
0.01
0.005
(2) (8) (8) (10)(11)
(11)
(11)(11)
(11)
最后以上表最后一行的目标函数值为纵坐标,聚类类数为横坐标画出曲线。
那么,最后究竟应该选择几类作为答案?
2)对于如[案例2]的普通数据进行系统聚类时,最终可以给出所有可能分类谱系的树形图。特别地,如果使用Ward方法,可以得到对应于各种可能类数的局部最优解。
[案例2]设抽取六个样品,每个样品只测了一个指标, 它们的数值依次是1,2,5,7,9,10,试用Ward方法进行聚类。
首先,利用Spss可以得到树形图:
其次可以算出每次并类后增加的类内离差平方和:
分类数目类的构成 S D[,u](1)D[,u](2)
6{1}{2}{5}{7}{9}{10}0
5{1,2}{5}{7}{9}{10} 0.5 2 0.87
4{1,2}{5}{7}{9,10} 1
3.05 0.61
3{1,2}{5,7}{9,10} 3
5.42 0.44
2{1,2}{5,7,9,10}15.25
4.61 0.43
1{1,2,5,7,9,10}
67.33
然后,以上表第三列的类内平方和为纵坐标,第一列的聚类类数为横坐标画出线图:
问题依然是,最后究竟应该选择几类作为答案?
二、通常的因应方法
1)交由统计以外的专业科学或专业人士解决,例如[案例1]中一般认为从生理学角度定出k最为理想。
2)依据理论上逻辑合理,实际上不易界定的道理或准则, 例如在“拐弯处”或“曲线趋于平缓处”的对应类数。
对于1), 问题是使用聚类分析的通常场合往往存在两个前提:一是不存在确定的划类标准;二是不知道到底应该划几类。因此,第一种因应办法不免有属于推卸责任之嫌,且在大多数场合也并非有效。
对于2),问题是理论上逻辑合理,实际上不易界定的东西, 我们通常成为定性的,其缺陷是可操作性差;而只有定量的东西,才真正具有操作性,才能真正解决问题。
总而言之,在这个细节上,统计学似乎江郎才尽,无能为力。
三、本文提出的方法
方法1:寻求使D=→max的k
首先要构造一个函数,使它能够很好反映和描述曲线拐弯处或曲线趋于平缓处的数学性质。为此,考虑a)单调下降, 因而不存在方向相反的拐弯:b)曲线拐弯处左邻右舍之间的相对差异要显著大于别处。 借鉴函数的弹性和拐点概念,构造,然后整合简化为
D[,u]=(δe[,i-1]-δe[,i])/e[,i]
其中,右边分式的分子反映任意点与左右相邻点的“绝对差值”的差,分母e[,k]则具有类似标准化的作用, 它的存在可以抵消式中分子具有的k越小越大的趋势影响,并可避免总有k=2 这种无意义的极端情况发生,使拐弯点与左邻右舍相对差异最为明显的性质清晰暴露出来。
这样构造出来的指标函数当取最大值时,恰好说明该点左邻右舍之间的相对差异要大于别处。
为了验证指标函数的这一性质,利用一些实际数据进行比较:
[案例1]使D[,u]=(δe[,i-1]-δe[,i])/e[,i]→max的是k=3
k2 3 4
56 7 8 9
10
e 0.909 0.368 0.128 0.065 0.045 0.03 0.015 0.010.005
[案例2]使D[,u]=(δe[,i-1]-δe[,i])/e[,i]→max的是k=3
[案例3]使D[,u]=(δe[,i-1]-δe[,i])/e[,i]→max的是k=3(或k=6)
[案例4]使D[,u]=(δe[,i-1]-δe[,i])/e[,i]→max的是k=5
仔细比较,可以看出这些答案直观上都是很合理的。
[案例3]第廿六届奥运会所获奖牌数排在前16 位的国家和地区及奖牌数见下表,试据此使用Ward方法进行聚类分析,将它们归到不同的类别里去。
Case
8 7 6 5 43 2
Clusters Clusters Clusters Clusters Clusters
Clusters
Clusters
1:美国 97 1 1 11
1 1
1
2:俄罗斯88 2 2 21
1 1
1
3:中国 59 3 3 32
2 2
1
4:澳洲 58 3 3 32
2 2
1
5:德国 57 3 3 32
2 2
1
6:法国 38 4 4 43
3 3
2
7:意大利34 4 4 43
3 3
2
8:荷兰 25 5 5 54
3 3
2
9:古巴 29 6 5 54
3 3
2
10:英国 28 6 5 54
3 3
2
11:罗马尼亚 26 5 5 54
3 3
2
12:韩国 28 6 5 54
3 3
2
13:匈牙利
17 7 6 65
4 3
2
14:波兰 14 8 7 65
4 3
2
15:日本 18 7 6 65
4 3
2
16:保加利亚 13 8 7 65
4 3
2
平方和聚类类数KD[,u](1)D[,u](2)
10.83
8
0.48
12.77
2.150.42
17.37
6
4.060.36
57.87
5
1.490.35
68.74
4
2.410.3
107.57 3
4.660.3
433.77 2
1.750.73
653.83 1
[案例4]:第廿六届奥运会97个参加国家和地区所获奖牌数见下表,试据此使用Ward方法进行聚类分析,将它们归到不同的类别里去。
原始数据与类数为3~8的类属结果如下:
名次 国家或地区奖牌数
8 76
54 3
Clusters Clusters Clusters Clusters Clusters Clusters
1美国97 11 1
1 11
2俄罗斯 88 11 1
1 11
3中国59 22 2
2 21
4澳洲58 22 2
2 21
5德国57 22 2
2 21
6法国38 33 3
3 32
7意大利 34 33 3
3 32
8荷兰25 44 3
3 32
9古巴29 44 3
3 32
10
英国28 44 3
3 32
11
罗马尼亚26 44 3
3 32
12
韩国28 44 3
3 32
13
匈牙利 17 55 4
4 32
14
波兰14 65 4
4 32
15
日本18 55 4
4 32
16
保加利来13 65 4
4 32
17
希腊13 65 4
4 32
18
瑞典12 65 4
4 32
19
挪威10 65 5
4 32
20
埃塞俄比亚 8
76 5
5 43
21
乌克兰 23 44 3
3 32
22
哈萨克斯坦 7
76 5
5 43
23
白俄罗斯17 55 4
4 32
24
加拿大 14 65 4
4 32
25
西班牙 11 65 4
4 32
26
伊朗4
76 5
5 43
27
土耳其 4
76 5
5 43
28
捷克8
76 5
5 43
29
肯雅7
76 5
5 43
30
丹麦6
76 5
5 43
31
芬兰4
76 5
5 43
32
奥地利 3
76 5
5 43
33
立陶宛 5
76 5
5 43
34
阿塞拜疆3
76 5
5 43
35
斯洛文尼亚 2
87 6
5 43
36
瑞士9
65 4
4 32
37
印尼6
76 5
5 43
38
斯洛伐克5
76 5
5 43
39
墨西哥 6
76 5
5 43
40
阿尔及利亚 5
76 5
5 43
41
乌兹别克4
76 5
5 43
42
拉脱维亚3
76 5
5 43
43
南斯拉夫3
76 5
5 43
44
巴哈马 2
87 6
5 43
45
新西兰 4
76 5
5 43
46
爱沙尼亚3
76 5
5 43
47
泰国3
76 5
5 43
48
克罗地亚2
87 6
5 43
49
喀麦隆 1
87 6
5 43
50
哥伦比亚1
87 6
5 43
51
莫桑比克1
87 6
5 33
52
巴西12 65 4
5 43
53
牙买加 7
76 5
5 43
54
尼日利亚3
76 5
5 43
55
比利时 5
76 5
5 43
56
南非5
76 5
5 43
57
阿根廷 4
76 5
5 43
58
中国台北5
76 5
5 43
59
摩洛哥 5
76 5
5 43
60
朝鲜4
76 5
5 43
61
摩尔多瓦2
87 6
5 43
62
沙特阿拉伯 2
87 6
5 43
63
特立尼达2
87 6
5 43
64
爱尔兰 1
87 6
5 43
65
乌拉圭 1
87 6
5 43
66
越南1
87 6
5 43
67
格鲁吉亚6
76 6
5 43
68
哥斯达黎加 2
87 6
5 43
69
葡萄牙 2
87 6
5 43
70
亚美尼亚1
87 6
5 43
71
巴巴多斯1
87 6
5 43
72
智利1
87 6
5 43
73
冰岛1
87 6
5 43
74
印度1
87 6
5 43
75
以色列 1
87 6
5 43
76
科威特 1
87 6
5 43
77
吉尔吉斯1
87 6
5 43
78
马其顿 1
87 6
5 43
79
卡塔尔 1
87 6
5 43
80
斯里兰卡1
87 6
5 43
81
缅甸0
87 6
5 43
82
马来西亚0
87 6
5 43
83
厄瓜多尔0
87 6
5 43
84
新加坡 0
87 6
5 43
85
百慕达 0
87 6
5 43
86
巴基斯坦0
87 6
5 43
87
阿尔巴尼亚 0
87 6
5 43
88
中国香港0
87 6
5 43
89
波黑0
87 6
5 43
90
蒙古0
87 6
5 43
91
土库曼斯坦 0
87 6
5 43
92
圣基茨 0
87 6
5 43
93
海地0
87 6
5 43
94
博茨瓦纳0
87 6
5 43
95
委内瑞拉0
87 6
5 43
96
多米尼加0
87 6
5 43
97
波多黎各0
87 6
5 43
不同类数的类内平方和及D[,u](1)、D[,u](2)数据:
聚类类数 类内平方和e[,k] D[,u](1) D[,u](2)
280.5
2 0.28
271 2 0.27
261.5
2.11 0.26
252.17 2 0.25
242.83 2 0.24
233.5
2.09 0.23
224.5
2.04 0.22
215.7
2.05 0.21
207.2
2.14 0.2
199.74 2.1
0.19
1813.25 2.05 0.18
1717.41 2.07 0.17
1622.85 2.01 0.16
1528.49 2.08 0.15
1436.49 2.17 0.14
1350.74 2.04 0.13
1266.94 2.02 0.12
1184.57 2.03 0.11
10104.742.19 0.09
9 145.242.04 0.08
8 191.912.09 0.08
7 255.912.28 0.07
6 391.282.39 0.06
5 677.993.29 0.056
4 1837.39
2.15 0.09
3 3265.69
2.96 0.14
2 7830.66
4.02 0.29
1 28247.81
系列2的数值=D[,u](1),系列3的数值=4D[,u](2)
方法2:寻求D[,u]=(e[,k]/e[,1]-k-1/n-1)→min成立的k
这个方法的思想来自日本著名统计学家赤田的在回归分析选择自变量时很有效的AIC法。实际上,考虑到e[,k]/e[,1]与k-1/n-1 具有相反趋势,且拥有同样的极值(min=0、max=1)和极差(R=1),那么仿照经济学中具有相反趋势的供给曲线和需求曲线决定成交价格的办法,就不难得到合乎中庸之道的e[,k]/e[,1]=k-1/n-1的结论。由于等号可能不成立,可取近似值。不过,应当指出,这个方法的效率与上一种是不可比拟的,因为k-1/n-1只取决于n和k两个参数,与e 的序列无关,所以仅仅可以作为寻找最佳类数的一个起点,对于n 比较大的场合,由于目前SPSS等统计软件中尚未见到e对k的平面曲线图功能,这个接近最佳类数的起点将大大提高效率。
此外,由于对于n较大的分类而言,k=2和k=n-1基本上属于极端情形,为了避免出现极端情况,有必要限定k界于两者之间。 可以想像,如此规定不会影响我们对象[案例4]那样的例外情形的判断。
e[,k]是k的单调递减函数,注意将上述关系在新裂为两类的类中应用即可证得。
四、方法的评价
优点:
上述两个方法都是在类属局部最优的基础上进一步寻找某种意义上的最优聚类类数,所以沿此方向将有可能导致最优聚类问题的根本解决。
上述两个方法都兼顾了两个合理但实际上互相矛盾的原则:1 )类间平方和与类内平方和之比最大;2)聚类类数k尽可能小。
上述两个方法都能够避免k=n-1的极端情况发生,但不能避免k=2的情况。
以述两个方法都具有使k与n成正比的优良性质,事实上对方法2 来说,很明显,n越大,以1/n-1速度增加的k-1/n-1值增速就越缓,其曲线不象小的n那样陡峭。
缺点:
唯一性缺乏有力的理论证明。
上述两个方法都需要额外计算类内平方和,由于类内平方和计算复杂,这就大大增加了计算量。
两种方法的答案有时不能保持一致,但相隔不远。