/wentingtu/archive//01/04/2311533.html
基本工作原理
给定要聚类的N的对象以及N*N的距离矩阵(或者是相似性矩阵),层次式聚类方法的基本步骤(参看S.C. Johnson in 1967)如下:
1.将每个对象归为一类,共得到N类,每类仅包含一个对象.类与类之间的距离就是它们所包含的对象之间的距离.
2.找到最接近的两个类并合并成一类,于是总的类数少了一个.
3.重新计算新的类与所有旧类之间的距离.
4.重复第2步和第3步,直到最后合并成一个类为止(此类包含了N个对象).
根据步骤3的不同,可将层次式聚类方法分为几类: single-linkage, complete-linkage以及average-linkage聚类方法等.
single-linkage聚类法(也称connectedness或minimum方法):
类间距离等于两类对象之间的最小距离,若用相似度衡量,则是各类中的任一对象与另一类中任一对象的最大相似度。
complete-linkage聚类法(也称diameter或maximum方法):
组间距离等于两组对象之间的最大距离。
average-linkage聚类法:
组间距离等于两组对象之间的平均距离。
average-link聚类的一个变种是R. D'Andrade (1978)的UCLUS方法,它使用的是median距离,在受异常数据对象的影响方面,它要比平均距离表现更佳一些.
这种层次聚类称为“凝聚"法,由于它迭代合并所有分类。也有一种“划分”层次聚类法,与“凝聚”相反,它先将所有对象放在同一类中,并不断划分成更小的类,划分法一般很少使用。
MATLAB提供了两种方法进行聚类分析:
一种是利用clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法;
另一种是分步聚类:(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离;(2)用linkage函数定义变量之间的连接;(3)用cophenetic函数评价聚类信息;(4)用cluster函数创建聚类。
1.Matlab中相关函数介绍
1.1pdist函数
调用格式:Y=pdist(X,’metric’)
说明:用‘metric’指定的方法计算X数据矩阵中对象之间的距离。’
X:一个m×n的矩阵,它是由m个对象组成的数据集,每个对象的大小为n。
metric’取值如下:
‘euclidean’:欧氏距离(默认);‘seuclidean’:标准化欧氏距离;
‘mahalanobis’:马氏距离;‘cityblock’:布洛克距离;
‘minkowski’:明可夫斯基距离;‘cosine’:
‘correlation’:‘hamming’:
‘jaccard’:‘chebychev’:Chebychev距离。
1.2squareform函数
调用格式:Z=squareform(Y,..)
说明:强制将距离矩阵从上三角形式转化为方阵形式,或从方阵形式转化为上三角形式。
1.3linkage函数
调用格式:Z=linkage(Y,’method’)
说明:用‘method’参数指定的算法计算系统聚类树。
Y:pdist函数返回的距离向量;
method:可取值如下:
‘single’:最短距离法(默认);‘complete’:最长距离法;
‘average’:未加权平均距离法;‘weighted’: 加权平均法;
‘centroid’:质心距离法;‘median’:加权质心距离法;
‘ward’:内平方距离法(最小方差算法)
返回:Z为一个包含聚类树信息的(m-1)×3的矩阵。
1.4dendrogram函数
调用格式:[H,T,…]=dendrogram(Z,p,…)
说明:生成只有顶部p个节点的冰柱图(谱系图)。
1.5cophenet函数
调用格式:c=cophenetic(Z,Y)
说明:利用pdist函数生成的Y和linkage函数生成的Z计算cophenet相关系数。
1.6cluster函数
调用格式:T=cluster(Z,…)
说明:根据linkage函数的输出Z创建分类。
1.7clusterdata函数
调用格式:T=clusterdata(X,…)
说明:根据数据创建分类。
T=clusterdata(X,cutoff)与下面的一组命令等价:
Y=pdist(X,’euclid’);
Z=linkage(Y,’single’);
T=cluster(Z,cutoff);
如果觉得《机器学习 改进的层次聚类算法》对你有帮助,请点赞、收藏,并留下你的观点哦!