层次聚类

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

有可能使比较大的簇破裂。距离公式如下所示。
d (c , c ) min
max i j pci , p ' j
p p
'
(3)组平均方法(grou Paverage linkage),定义距离为数据两两距离的
平均值。这个方法倾向于合并差异小的两个类,产生的聚类具有相对
的鲁棒性。距离公式如下所示。 d (c , c )
对于复杂的数据来说这个是很难事先判定的。尽管层次聚类的方法实现的 很简单,但是偶尔会遇见合并或分裂点的抉择的困难。这样的抉择是特别 关键的,因为只要其中的两个对象被合并或者分裂,接下来的处理将只能 在新生成的簇中完成。已形成的处理就不能被撤消,两个聚类之间也不能 交换对象。如果在某个阶段没有选择合并或分裂的决策,就非常可能会导 致不高质量的聚类结果。而且这种聚类方法不具有特别好的可伸缩性,因 为他们合并或分裂的决策需要经过检测和估算大量的对象或簇。
一.层次聚类方法简介
2. 分裂的层次聚类
分裂的层次聚类与凝聚的层次聚类相反,采用自顶向下的策略。它从把所有 对象置于一个簇中开始,该簇是层次结构的根。然后,它把根上的簇划分成多个 较小的簇,并且递归地把这些簇划分成更小的簇,划分过程继续,直到最底层的 簇都足够凝聚或者仅包含一个对象,或者簇内的对象都充分相似。分裂的层次聚 类算法过程如图所示:
四.层次聚类的MATLAB实现
plot3(X1(:,1),X1(:,2),X1(:,3),'*','MarkerSize',8); grid; %变颜色 hold on; for t=1:length(T1) if(T1(t)==1)
plot3(X1(t,1),X1(t,2),X1(t,3),'Marker','*','Color' ,'r'); elseif(T1(t)==2) plot3(X1(t,1),X1(t,2),X1(t,3),'Marker','*','Color' ,'b'); elseif(T1(t)==3) plot3(X1(t,1),X1(t,2),X1(t,3),'Marker','*','Color' ,'g'); elseif(T1(t)==4) end end hold on; xlabel ('X'); ylabel ('Y'); zlabel ('Z'); title('训练数据'); xlabel('样本'); ylabel('类间距离'); title('训练数据'); X2=[1702.8 1877.93 1860.96 867.81 2334.68 1831.49 1713.11 460.69 3274.77 2374.98 3346.98 2271.89 3482.97 1783.64 1597.99 198.83 3250.45 1494.63 2072.59 1597.03 1921.52
plot3(X1(t,1),X1(t,2),X1(t,3),'Marker','*','Color' ,'y');
1639.79 1975.3 2535.1 1604.68 2172.99 975.31 946.7 2261.31 2445.08 2550.51 2126.76
2068.74
四.层次聚类的MATLAB实现
二.簇间距离度量方法
d (c , c ) min
min i j
pci , p j
'
p p
'
二.簇间距离度量方法
( 2 ) 全 连 锁 ( comlpete linkage ) , 又 称 最 wenku.baidu.com 邻 ( furthest
neighbor)方法。指两个不一样的簇中任意的两点之间的最远的距离。 它面对噪声和孤立点很不敏感,趋向于寻求某一些紧凑的分类,但是,
1598.93 1921.08 1623.33 1243.13 1814.07 3441.07 2336.31 2640.26 1599.63 354 3300.12 2373.61 2144.47 2501.62 591.51 426.31 3105.29 2057.8 1507.13 1556.89 1954.51 343.07 3271.72 2036.94 2201.94 3196.22 935.53 2232.43 3077.87 1298.87 1580.1 1752.07 2463.04 1962.4 1594.97 1835.95 1495.18 1957.44 3498.02 1125.17 1594.39 2937.73 24.22 3447.31 2145.01 1269.07 1910.72 2701.97 1802.07 1725.81 1966.35 1817.36 1927.4 2328.79 1860.45 1782.88 1875.13]; figure; %数据转化 %将数据进行标准化变换 Q2=zscore(X2); %计算样本间的距离 Y2=pdist(Q2,'euclid')%欧拉距离 D1=squareform(Y2) Z2=linkage(Y2,'centroid');%用两类间距离定义为类重 心间的距离 T2=cluster(Z2,4) %形成聚类 plot3(X2(:,1),X2(:,2),X2(:,3),'*','MarkerSize',8); grid; %变颜色 hold on; for t=1:length(T2) if(T2(t)==1) plot3(X2(t,1),X2(t,2),X2(t,3),'Marker','*','Color','r'); elseif(T2(t)==2) plot3(X2(t,1),X2(t,2),X2(t,3),'Marker','*','Color','b'); elseif(T2(t)==3)
avg i j
pci

p j
'
p p /nn
' i
j
二.簇间距离度量方法
d (c , c ) m m
mean i j i
j
c ,c
i
j
三.层次聚类方法存在的不足
在凝聚的层次聚类方法和分裂的层次聚类的所有的方法中,都需要用户提
供所希望所得到的聚类的单个数量和阈值作为聚类分析的终止条件,但是
三.层次聚类方法存在的不足
层次聚类算法由于要使用距离矩阵,所以它的时间和空间复杂性都很高,
几乎不能在大数据集上使用。层次聚类算法只处理符合某静态模型的簇忽 略了不同簇间的信息而且忽略了簇间的互连性(互连性指的是簇间距离较 近数据对的多少)和近似度(近似度指的是簇间对数据对的相似度)。
四.层次聚类的MATLAB实现
一.层次聚类方法简介
1. 凝聚的层次聚类
凝聚的层次聚类是一种自底向上的策略。它从每个对象形成自己的簇开始, 并且迭代的把簇合并成越来越大的簇,直到所有的对象都在一个簇中,或者满足 某个终止条件。该单个簇成为层次结构的根。在合并步骤,它找出两个最接近的 簇,并且合并它们,形成一个簇。因为每次迭代合并两个簇,其中每个簇至少包 含一个对象,因此凝聚方法最多需要n次迭代。 凝聚的层次聚类算法过程如图所示:
五.仿真结果
程序运行完之后,出现如图的聚类结果:
五.仿真结果
程序运行完之后在命令窗口出现如下运行结果:
T1 = 1 3 1 2 3 2 1 4 3 3 1 3 3 4 4 2 1 4 4 1 1 4 3 4 2 1 3 3 3 T2 = 1 1 2 1 4 3 3 1 4 2 1 1 2 3 4 3 4 1 4 3 3 1 1 2
2 4 2 1 1 1
从结果中可以看出聚 类结果完全正确。
六.总结
层次聚类方法是聚类分析中应用很广泛的一种方法,它是根据给定的簇间 距离度量为准则,构造和维护一棵由簇和子簇形成的聚类树,直至满足某个终 结条件为止。其中簇间距离度量方法有最小距离、最大距离、平均值距离和平 均距离四种。层次聚类算法算法简单、而且能够有效地处理大数据集,但是它 一旦一组对象合并或者分裂,它已做的处理便不能撤消和更改,如果某一步没 有很好的做好合并或分裂的决定,则可能会导致低质量的聚类效果。 1. 最大和最小度量代表了簇间距度量的两个极端。它们趋向对离群点和噪声 数据过分敏感。 2. 使用均值距离和平均距离是对最大和最小距离之间的一种折中方法,而且 可以克服离群点敏感性问题。 3. 层次聚类方法尽管简单,但经常会遇到合并或分裂点选择的困难。一旦一 组对象合并或分裂,下一步的处理将对新生成的簇进行。 4. 不具有很好的可伸缩性,因为合并或分裂的决定需要检查和估算大量的对 象或簇。 5. 类间距离的定义方法不同,会使分类结果不太一致.实际问题中常用几种不 同的方法进行计算,比较其分类结果,从而选择一个比较切合实际的分类。
这里使用平均值方法(centroid linkage)来实现酒瓶颜色的聚类。 1.重要代码介绍
(1)数据标准化处理: %将数据进行标准化变换 Q1=zscore(X1); (2)利用欧拉距离函数计算样本间距离 %计算样本间的距离 Y1=pdist(Q1,'euclid')%欧拉距离 (3)用两类间距离定义为类重心间的距离 Z1=linkage(Y1,'centroid');%用两类间距离定义为类重心间的距离
2205.36 3243.74 1202.69 2949.16 3244.44 662.42 1692.62 1867.5 2108.97 1680.67 1575.78 1725.1 2802.88 3017.11 1984.98 172.78 3084.49 2328.65 2063.54 3199.76 1257.21 1449.58 1641.58 3405.12 1651.52 1713.28 1570.38 341.59 3076.62 2438.63 291.02 3095.68 2088.95 237.63 3077.78 2251.96]; %数据转化 %将数据进行标准化变换 Q1=zscore(X1); %计算样本间的距离 Y1=pdist(Q1,'euclid')%欧拉距离 D=squareform(Y1) Z1=linkage(Y1,'centroid');%用两类间距离定义为类 重心间的距离 T1=cluster(Z1,4) %形成聚类
四.层次聚类的MATLAB实现
plot3(X2(t,1),X2(t,2),X2(t,3),'Marker','*','Color','g'); elseif(T2(t)==4)
plot3(X2(t,1),X2(t,2),X2(t,3),'Marker','*','Color','y'); end end hold on; xlabel ('X'); ylabel ('Y'); zlabel ('Z'); title('测试数据'); xlabel('样本1'); ylabel('类间距离1'); title('测试数据'); box on
四.层次聚类的MATLAB实现
2.MATLAB完整程序:
%层次聚类 clear X1=[1739.94 1675.15 373.3 3087.05 1756.77 1652 864.45 1647.31 222.85 3059.54 877.88 2031.66 1803.58 1583.12 2352.12 2557.04 401.3 3259.94 363.34 3477.95 1571.17 1731.04 104.8 3389.83 499.85 3305.75 2297.28 3340.14 2092.62 3177.21 1418.79 1775.89 1845.59 1918.81 2395.96 2429.47 1514.98 2665.9 2002.33 3071.18 2163.05 1411.53 2150.98 2462.86 1735.33 2421.83 2196.22 535.62 584.32 2772.9 2226.49
层次聚类
主 单
讲:周润景 教授 位:电子信息工程学院
目 录
层次聚类方法简介 簇间距离度量方法
层次聚类方法存在的不足
层次聚类的MATLAB实现
仿真结果
结论
一.层次聚类方法简介
层次聚类就是通过对数据集按照某种方法进行层次分解,直到满足 某种条件为止。按照分类原理的不同,可以分为凝聚和分裂两种方法。 层次凝聚的代表是AGNES算法,层次分裂的代表是DIANA算法。一个 完全层次聚类的质量由于无法对已经做的合并或分解进行调整而受到 影响。但是层次聚类算法没有使用准则函数,它所含的对数据结构的 假设更少,所以它的通用性更强。 下面介绍这两种方法。
相关文档
最新文档