失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 机器学习 改进的层次聚类算法

机器学习 改进的层次聚类算法

时间:2021-03-16 16:02:22

相关推荐

机器学习 改进的层次聚类算法

/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);

如果觉得《机器学习 改进的层次聚类算法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。