模式识别作业.docx
《模式识别作业.docx》由会员分享,可在线阅读,更多相关《模式识别作业.docx(24页珍藏版)》请在冰豆网上搜索。
![模式识别作业.docx](https://file1.bdocx.com/fileroot1/2023-8/5/eaee697b-c951-45cd-bab2-906bb2b9bbaf/eaee697b-c951-45cd-bab2-906bb2b9bbaf1.gif)
模式识别作业
模式识别作业
模糊C-均值聚类分析的应用
学院、系电子信息工程学院自动化系
专业名称模式识别与智能系统
年级2009级
学生姓名郭佳
学号30956028
目录
1.前言1
2.模糊C均值算法2
2.1FCM算法准则2
2.2模糊C均值算法步骤3
2.2.1简介3
2.2.2FCM算法具体步骤4
3.模糊C均值聚类算法的Matlab实现5
3.1实验数据5
3.2模糊C均值聚类程序分析7
3.3Matlab实现及结果分析7
3.3.1前29组数据的聚类分析7
3.3.249组数据的聚类分析15
总结20
参考文献21
模糊C-均值聚类分析的应用
1.前言
聚类就是按照一定的要求和规律对事物进行区分和分类的过程,在这一过程中没有任何关于类分的先验知识,仅靠事物间的相似性作为类属划分的准则,因此属于无监督分类的范畴。
聚类分析则是指用数学的方法研究和处理给定对象的分类。
“人以群分,物以类聚”,聚类是一个古老的问题,它伴随着人类社会的产生和发展而不断深化,人类要认识世界就必须区别不同的事物并认识事物间的相似性。
传统的聚类分析是一种硬划分,它把每个待辨识的对象严格地划分到某个类中,同一事物属于且仅属于所划定类别中的某一类,具有非此即彼的性质。
例如在描述人的很多特征之一——性别的时候,很容易就可以对人进行分类,因为性别只有男性和女性之分,因此这种分类的类别界限是分明的、清晰的、不含糊的,属于普通集合理论的范畴。
而实际上大多数对象并没有严格的属性,它们在形态和类属方面存在着中介性,适合进行软划分,用普通集合的理论往往不能完全解决具有模糊性的分类问题。
例如:
将人按身高分为:
高个子、中等个子、矮个子;图1-1所示经典硬聚类无法解决的聚类问题示意图,I部分代表高个子,II部分代表矮个子,但是他们的交集部分,用传统的硬聚类分析方法就无法解决。
图1-1经典硬聚类无法解决的聚类问题示意图
在此基础上,Zadeh提出的模糊集理论为这种软划分提供了有力的分析工具,人们开始用模糊的方法来处理聚类问题,并称之为模糊聚类分析。
应该指出,基于模糊集理论的模糊逻辑本身并不是模糊的,而是用来对“模糊”进行处理以达到消除模糊的逻辑。
事实上,模糊逻辑是一种精确地解决不精确、不完全信息的方法,其最大的特点就是用它可以比较自然的处理人类的概念。
具体地说,模糊逻辑是通过模糊集合来工作的,模糊集合与传统集合的本质区别在于:
(1)传统集合对集合中的元素关系进行严格区分,一个元素要么属于此集合,要么不属于此集合,并且不存在介于二者之间的情况;
(2)模糊集合则具有灵活的隶属关系,允许元素在一个集合中部分隶属。
元素在模糊集合中的隶属度可以是从0到1之间的任何值,而不像在传统集合中要么是0要么是1,这样模糊集合可以从“不隶属”到“隶属”逐级的过渡。
正是由于模糊聚类具有样本属于各个类别的不确定性程度,表达了样本类属的中介性,即建立起了样本对于类别的不确定性的描述,能更客观地反映现实世界,从而成为聚类分析研究的主流。
为了优化聚类分析的目标函数,人们提出了现在相当流行和应用广泛的模糊C-均值FCM(FuzzyC-means)聚类算法。
该算法是从硬C-均值HCM(HardC-means)聚类算法发展而来的。
2.模糊C均值算法
2.1FCM算法准则
给定数据集
,其中每个元素包含s个属性。
模糊聚类就是要将X划分为c个类,
为C个类的聚类中心在模糊划分中,每一个样本点不能严格地被划分到某一类,而是以一定的隶属度属于某一类。
令
表示第j个样本点第i个类的隶属度。
且满足下式:
(2.1)
(2.2)
(2.3)
FCM算法的目标函数为:
(2.4)
其中,
为样本点
与聚类中心
之间的距离
则FCM算法就是要求满足
的情况下目标函数J的最小值,J的条件
极值可以由拉格朗日乘数法求得。
首先,J在(2.4)式下的条件极值可以表示成(2.5)
式,其中函数
为常数:
(2.5)
对
求偏导经过计算后得:
,用同样的方法
为最小值时
的值为:
(i=1,2…c)
2.2模糊C均值算法步骤
2.2.1简介
FCM算法有五个参数(
,A,c,m,ε),改变任何一个参数都将影响到FCM聚类的最终结果。
(1)
为初始隶属度矩阵,它直接影响到聚类中心的初始值,隶属度可以看做是数据对聚类中心作用力强度的表征,隶属度越大,数据对类中心的吸引力就越大,类中心的下一次迭代值受它的影响也就越大,从而影响到算法的迭代次数,也就影响了算法的计算时间。
(2)对称矩阵A,对称矩阵A也是一个重要参数,当A=I时,聚类类似于球状分布,当聚类形状为球状时,可给A赋予不同的矩阵形式,以适应不同的聚类要求,例如,聚类近似于条状或带形分布时。
(3)聚类数目c,c是影响聚类精度和聚类速度的参数,若c较大,就会使原本密集的簇分开;若c值较小则会使原本是比较分离的簇合并,使聚类结果不能满足客户的需要,计算所需要的系统内存和时间也要成倍的增加,这有时候是不能容忍的。
(4)加权指数m,Zadeh认为“加权指数m控制着模糊类间的分享程度”。
参数m控制着FCM聚类结果的模糊性,m值越大,所得到的分类矩阵模糊程度就越大。
当m→∞时,U中所有的元素接近1/c,距离就失去了意义。
所以要使用FCM算法分析数据就必需选取合适的m值。
当然这并不意味着小的m值就对应好的聚类结果,因为较大的加权指数m还具有抑制噪声的功能,在噪声污染的数据中模糊聚类有着重要的作用。
因此在不同的应用领域,m值的选取也有其不同的范围。
(5)收敛阈值ε,ε也是影响聚类精度和聚类速度的参数。
数值过大时,会导致算法过早收敛,聚类结果不稳定,特别是在初始参数不确定的条件下,这种现象更为普遍和明显。
当阈值过小时,则可能会导致过度计算,既浪费时间,又可能发生无法收敛的问题。
2.2.2FCM算法具体步骤
初始化:
取模糊加权指数m=2,聚类的类别数c(2≤c≤n),n为数据样本点的个数,迭代停止阈值ε,初始的聚类中心值
,以及迭代次数b=0;
步骤一:
用公式(2-7)计算由隶属度的值所组成的划分矩阵
:
当
当
(2-7)
步骤二:
用公式(2-8)更新聚类中心。
(2-8)
步骤三:
若v(b)-v(b+1)<ε,则算法停止并输出划分U和聚类中心V,否则令b=b+1,转向执行步骤一。
3.模糊C均值聚类算法的Matlab实现
3.1实验数据
_Record_
X
Y
Z
Type
Record_#1
1739.94
1675.15
2395.96
3
Record_#2
373.3
3087.05
2429.47
4
Record_#3
1756.77
1652
1514.98
3
Record_#4
864.45
1647.31
2665.9
1
Record_#5
222.85
3059.54
2002.33
4
Record_#6
877.88
2031.66
3071.18
1
Record_#7
1803.58
1583.12
2163.05
3
Record_#8
2352.12
2557.04
1411.53
2
Record_#9
401.3
3259.94
2150.98
4
Record_#10
363.34
3477.95
2462.86
4
Record_#11
1571.17
1731.04
1735.33
3
Record_#12
104.8
3389.83
2421.83
4
Record_#13
499.85
3305.75
2196.22
4
Record_#14
2297.28
3340.14
535.62
2
Record_#15
2092.62
3177.21
584.32
2
Record_#16
1418.79
1775.89
2772.9
1
Record_#17
1845.59
1918.81
2226.49
3
Record_#18
2205.36
3243.74
1202.69
2
Record_#19
2949.16
3244.44
662.42
2
Record_#20
1692.62
1867.5
2108.97
3
Record_#21
1680.67
1575.78
1725.1
3
Record_#22
2802.88
3017.11
1984.98
2
Record_#23
172.78
3084.49
2328.65
4
Record_#24
2063.54
3199.76
1257.21
2
Record_#25
1449.58
1641.58
3405.12
1
Record_#26
1651.52
1713.28
1570.38
3
Record_#27
341.59
3076.62
2438.63
4
Record_#28
291.02
3095.68
2088.95
4
Record_#29
237.63
3077.78
2251.96
4
Record_#30
1702.8
1639.79
2068.74
Record_#31
1877.93
1860.96
1975.3
Record_#32
867.81
2334.68
2535.1
Record_#33
1831.49
1713.11
1604.68
Record_#34
460.69
3274.77
2172.99
Record_#35
2374.98
3346.98
975.31
Record_#36
2271.89
3482.97
946.7
Record_#37
1783.64
1597.99
2261.31
Record_#38
198.83
3250.45
2445.08
Record_#39
1494.63
2072.59
2550.51
Record_#40
1597.03
1921.52
2126.76
Record_#41
1598.93
1921.08
1623.33
Record_#42
1243.13
1814.07
3441.07
Record_#43
2336.31
2640.26
1599.63
Record_#44
354
3300.12
2373.61
Record_#45
2144.47
2501.62
591.51
Record_#46
426.31
3105.29
2057.8
Record_#47
1507.13
1556.89
1954.51
Record_#48
343.07
3271.72
2036.94
Record_#49
2201.94
3196.22
935.53
其中前29组数据为已分类好的数据,用于学习及验证,看是否与已给出的聚类结果一致。
后20组数据为待识别的数据。
3.2模糊C均值聚类程序分析
Matlab中自带有模糊C均值聚类的程序,所以直接调用就可实现聚类,该程序为:
[Center,U,obj_fcn]=fcm(data,cluster_n)
其中Center代表聚类中心
U代表由隶属度组成的划分矩阵
obj_fcn代表在迭代过程中的目标函数值
data代表待聚类数据
cluster_n为聚类的组数
程序中还用到了如下语句:
1.通过[Center,U,obj_fcn]=fcm(data,cluster_n)得到的聚类中心和隶属度,将各个点分类。
maxU=max(U);%寻找最大隶属度
index1=find(U(1,:
)==maxU)%找到属于第一类的点
index2=find(U(2,:
)==maxU)%找到属于第二类的点
index3=find(U(3,:
)==maxU)%找到属于第三类的点
index4=find(U(4,:
)==maxU)%找到属于第四类的点
2.直观的观察四组聚类结果
line(data(index1,1),data(index1,2),data(index1,3),'linestyle','none','marker','*','color','g');
line(data(index2,1),data(index2,2),data(index2,3),'linestyle','none','marker','*','color','r');
line(data(index3,1),data(index3,2),data(index3,3),'linestyle','none','marker','+','color','b');
line(data(index4,1),data(index4,2),data(index4,3),'linestyle','none','marker','+','color','y');
3.3Matlab实现及结果分析
3.3.1前29组数据的聚类分析
1.前29组数据的聚类程序
clearall
data=[1739.941675.152395.96
373.33087.052429.47
1756.7716521514.98
864.451647.312665.9
222.853059.542002.33
877.882031.663071.18
1803.581583.122163.05
2352.122557.041411.53
401.33259.942150.98
363.343477.952462.86
1571.171731.041735.33
104.83389.832421.83
499.853305.752196.22
2297.283340.14535.62
2092.623177.21584.32
1418.791775.892772.9
1845.591918.812226.49
2205.363243.741202.69
2949.163244.44662.42
1692.621867.52108.97
1680.671575.781725.1
2802.883017.111984.98
172.783084.492328.65
2063.543199.761257.21
1449.581641.583405.12
1651.521713.281570.38
341.593076.622438.63
291.023095.682088.95
237.633077.782251.96
];
[center,U,obj_fcn]=fcm(data,4)
plot3(data(:
1),data(:
2),data(:
3),'o');
grid;
maxU=max(U);
index1=find(U(1,:
)==maxU)
index2=find(U(2,:
)==maxU)
index3=find(U(3,:
)==maxU)
index4=find(U(4,:
)==maxU)
line(data(index1,1),data(index1,2),data(index1,3),'linestyle','none','marker','*','color','g');
line(data(index2,1),data(index2,2),data(index2,3),'linestyle','none','marker','*','color','r');
line(data(index3,1),data(index3,2),data(index3,3),'linestyle','none','marker','+','color','b');
line(data(index4,1),data(index4,2),data(index4,3),'linestyle','none','marker','+','color','y');
title('模糊C均值聚类分析图');
xlabel('第一特征坐标');
ylabel('第二特征坐标');
zlabel('第三特征坐标');
2.实验结果及分析
Iterationcount=1,obj.fcn=15682616.695522
Iterationcount=2,obj.fcn=11653961.331769
Iterationcount=3,obj.fcn=9119718.776584
Iterationcount=4,obj.fcn=6749981.025963
Iterationcount=5,obj.fcn=5568174.608885
Iterationcount=6,obj.fcn=5172439.796387
Iterationcount=7,obj.fcn=4868367.892072
Iterationcount=8,obj.fcn=4473302.792618
Iterationcount=9,obj.fcn=4283336.750297
Iterationcount=10,obj.fcn=4152104.975270
Iterationcount=11,obj.fcn=4048650.988456
Iterationcount=12,obj.fcn=3992027.823158
Iterationcount=13,obj.fcn=3970326.734500
Iterationcount=14,obj.fcn=3963611.524872
Iterationcount=15,obj.fcn=3961736.224221
Iterationcount=16,obj.fcn=3961236.668319
Iterationcount=17,obj.fcn=3961106.553349
Iterationcount=18,obj.fcn=3961073.041430
Iterationcount=19,obj.fcn=3961064.459819
Iterationcount=20,obj.fcn=3961062.268852
Iterationcount=21,obj.fcn=3961061.710351
Iterationcount=22,obj.fcn=3961061.568098
Iterationcount=23,obj.fcn=3961061.531881
Iterationcount=24,obj.fcn=3961061.522662
Iterationcount=25,obj.fcn=3961061.520316
Iterationcount=26,obj.fcn=3961061.519719
Iterationcount=27,obj.fcn=3961061.519567
Iterationcount=28,obj.fcn=3961061.519528
Iterationcount=29,obj.fcn=3961061.519518
%Iterationcount代表迭代次数,观察这组数据,当迭代了29次时,迭代过程中的目标函数值趋于稳定时,此时停止迭代,计算出聚类中心,隶属度等结果
center=
1.0e+003*
1.20201.78922.9333
2.33613.17470.9674
1.72341.73611.8822
0.30783.18552.2762
%迭代完成后四类数据的聚类中心
U=
Columns1through14
0.28820.01390.05370.79890.02660.84340.09420.08080.00860.03040.02700.02440.01660.0209
0.03670.00610.04250.02220.01650.01960.02210.59020.00570.01840.01300.01380.01130.9096
0.63590.00920.87870.12080.02280.06960.86420.26470.00710.02200.94940.01740.01360.0415
0.03920.97090.02500.05810.93410.06740.01950.06420.97860.92920.01060.94440.95850.0279
Columns15through28
0.02250.89670.14120.01200.03870.06750.02850.13450.00980.02540.81800.04500.01450.0129
0.89930.01080.03860.94800.84370.01820.01390.52290.00470.88710.02750.03130.00620.0077
0.04750.07360.78720.02470.07590.89730.94730.23720.00690.05320.10410.90290.00950.0107
0.03060.01890.03310.01540.04170.01700.01030.10540.97860.03420.05040.02080.96980.9687
Column29
0.0055
0.0028
0.0041
0.9876
%每组数据对应四个聚类中心的隶属度,第n列代表第n组数据,分别对应四个聚类中心的隶属度值。
obj_fcn=
1.0e+007*
1.5683
1.1654
0.9120
0.6750
0.5568
0.5172
0.4868
0.4473
0.4283
0.4152
0.4049
0.3992
0.3970
0.3964
0.3962
0.3961
0.3961
0.3961
0.3961
0.3961
0.3