层次聚类,层次聚类和树状图(WPGMA和UPGMA方法)(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

层次聚类是一种将数据点逐步分组形成层次结构的聚类方法,可以通过树状图(树状图表示法)来展示不同聚类级别的关系。WPGMA(加权平均法)和UPGMA(未加权平均法)是常见的层次聚类算法,它们基于距离或相似性度量来计算不同聚类之间的距离,并逐步合并最相似的聚类。这些方法在生物学、社会科学和信息检索等领域得到广泛应用,帮助理解数据集内部的结构和关系。

层次聚类,层次聚类和树状图(WPGMA和UPGMA方法),此函数定义了任意矩阵的层次聚类,并显示相应的树状图。
根据以下选项执行层次聚类:
- 方法:WPGMA或UPGMA
- 度量:由用户定义的任意匿名函数,用于衡量向量的不相似度
- 聚类参数:簇的数量或不相似度限制
该函数返回连接树、聚类、排名项目列表,并可选择基于不相似度矩阵计算的树状图。

层次聚类是一种基于相似度或距离的聚类算法,它将数据点逐渐合并成越来越大的簇。在层次聚类中,每个数据点最初被视为一个单独的簇,然后根据它们之间的相似度或距离逐渐合并成更大的簇,最终形成一个包含所有数据点的完整的聚类结果。

层次聚类方法中,WPGMA(Weighted Pair Group Method with Arithmetic Mean)和UPGMA(Unweighted Pair Group Method with Arithmetic Mean)是两种常用的树状图方法。

在WPGMA方法中,每次簇的合并是通过计算两个簇中所有点之间的平均距离来实现的,然后依据这个距离来确定最佳的合并方式。

在UPGMA方法中,每次簇的合并也是通过计算两个簇中所有点之间的平均距离来实现的,但在这种情况下,被合并的两个簇的点数被视为有相同的权重。

树状图是一种用来可视化数据点之间的相似度或距离的图形表达方式,层次聚类方法产生的结果通常可以通过树状图来展示。在树状图中,数据点被表示为叶节点,簇的合并过程则通过连接节点的方法来呈现。

通过研究层次聚类和树状图,我们可以更好地了解数据点之间的相似性和联系,有助于我们发现数据集中的潜在模式和结构。此外,层次聚类和树状图的研究也为我们提供了一种有效的数据可视化和分析方法,有助于我们更好地理解复杂数据之间的关系。

层次聚类及树状图(WPGMA与UPGMA方法)研究

一、层次聚类概述

层次聚类(Hierarchical Clustering)是一种通过逐步合并或分割数据点形成层次结构的聚类方法。其核心原理为:

  1. 初始化:将每个数据点视为独立簇;
  2. 相似度计算:采用欧氏距离、曼哈顿距离等度量簇间相似性;
  3. 合并/分割策略
    • 凝聚法(自底向上):合并相似度最高的簇对;
    • 分裂法(自顶向下):从整体簇中逐步分割出子簇;
  4. 迭代更新:重复合并或分割操作,直至满足终止条件(如簇数量或距离阈值);
  5. 结果输出:生成包含所有数据点的层次结构树。

该方法的优势在于无需预先指定簇数量,且能通过树状图直观展示数据关系,广泛应用于生物学、社会科学及信息检索等领域。

二、WPGMA与UPGMA方法详解

WPGMA(加权平均法)和UPGMA(未加权平均法)是层次聚类中基于距离度量的经典算法,二者均通过计算簇间平均距离实现合并,但在权重分配上存在差异。

1. WPGMA(加权平均组群法)
  • 合并规则:计算两个簇中所有点对的平均距离,合并后新簇与其他簇的距离通过加权平均确定,权重与簇中点数相关。
  • 数学表达:若簇A有m个点,簇B有n个点,则新簇AB与簇C的距离为:

  • 特点:考虑簇规模对距离的影响,适用于数据点分布不均衡的场景。
2. UPGMA(未加权平均组群法)
  • 合并规则:同样计算簇间平均距离,但合并后新簇与其他簇的距离采用未加权平均,即忽略簇中点数差异。
  • 数学表达:新簇AB与簇C的距离为:

  • 特点:假设所有点对贡献均等,适用于数据点分布均匀的场景,但可能因忽略簇规模导致偏差。
3. 方法对比
维度WPGMAUPGMA
权重分配考虑簇中点数,加权平均忽略簇规模,未加权平均
适用场景数据点分布不均衡数据点分布均匀
计算复杂度较高(需加权计算)较低(简单平均)
结果偏差较小(权重调整)较大(可能忽略簇规模影响)
三、树状图(Dendrogram)可视化

树状图是层次聚类结果的直观展示工具,其核心要素包括:

  1. 叶节点:代表原始数据点;
  2. 内部节点:表示簇合并事件;
  3. 分支长度:反映簇间距离,长度越长表示相似性越低;
  4. 层次结构:自底向上展示合并过程,顶层为根节点(包含所有数据点)。

通过树状图,用户可快速识别数据中的潜在模式和结构,例如在生物学中用于分析物种亲缘关系,在市场研究中用于客户细分。

四、研究进展与应用案例
1. 算法优化
  • 并行化改进:针对大规模数据集,研究者提出基于MPI的并行层次聚类算法,通过机群系统降低计算复杂度,实验表明其执行效率显著提升且结果与串行算法一致。
  • 混合策略:结合最小生成树算法(如Kruskal算法)优化层次聚类,通过排序类间距离减少重复计算,进一步提高算法可伸缩性。
2. 应用领域
  • 生物学:UPGMA方法广泛用于构建系统发生树,推断物种进化关系。例如,通过分析DNA序列相似性,重建物种树状结构。
  • 遗传多样性分析:在农业研究中,层次聚类用于分析作物表型性状遗传多样性。例如,对福建山药地方品种的表型性状进行聚类,揭示其遗传背景及分类关系。
  • 文本挖掘:在多文档自动摘要中,层次聚类用于发现子主题,提高摘要信息覆盖度。例如,结合语义层次聚类与密度聚类算法,优化句子聚类效果。
3. 局限性及改进方向
  • UPGMA的假设限制:该方法假设进化速率恒定,可能导致大型数据集或进化速率差异显著时的结果偏差。改进方向包括引入可调容差参数(如UMGMA方法)或结合其他距离法(如邻接法)。
  • 计算复杂度:传统层次聚类时间复杂度为O(n3),难以直接应用于海量数据。未来研究可聚焦于近似算法或分布式计算框架的优化。
  • 参数说明
    • n_clusters:最终簇数量;
    • affinity:距离度量方式(如欧氏距离);
    • linkage:合并策略(average对应UPGMA,weighted对应WPGMA)。
2. 工具推荐
  • MATLAB:内置linkage函数支持WPGMA/UPGMA,dendrogram函数用于可视化。
  • Geneious:生物信息学软件,提供UPGMA聚类工具用于系统发生树构建。
五、总结与展望

层次聚类通过树状图直观展示数据层次结构,WPGMA与UPGMA作为经典方法,在生物学、遗传学及文本挖掘等领域发挥重要作用。未来研究可聚焦于以下方向:

  1. 算法优化:结合并行计算、近似算法降低计算复杂度;
  2. 混合模型:融合层次聚类与其他方法(如K-means、谱聚类)提升性能;
  3. 可解释性:开发可视化工具辅助用户理解聚类结果,例如交互式树状图。

随着数据规模持续增长,层次聚类的改进与应用将进一步推动跨学科研究发展。

📚2 运行结果

部分代码:

function varargout = Hierarchical_clustering(Matrix,Method,Metric,Parameter,Value,Colormap)

% Data control
Matrix = Data_control(Matrix,Method,Metric,Parameter,Value,Colormap);

if nargout == 4    

    % Creation of the bars corresponding to values
    [Figure, Axes, Bars] = Creation_bars(Matrix,Colormap);
    
end

% Linkage
Tree = Linkage(Matrix,Method,Metric);

% Analysis of tree
[Roots, Clusters, Number] = Analysis(Tree,Parameter,Value);

if nargout == 4
    
    % Creation of the dendrogram
    Axes = Creation_dendrogram(Axes,Bars,Tree,Roots,Clusters,Matrix,Method,Metric,Number,Colormap);
    
    % X axes link
    linkaxes(Axes,'x');
    
end

% Output arguments
switch nargout
    case 3
        varargout{1} = Tree;
        varargout{2} = Clusters;
        varargout{3} = Roots;
    case 4
        varargout{1} = Figure;
        varargout{2} = Tree;
        varargout{3} = Clusters;
        varargout{4} = Roots;
end

end

% Data control
function Matrix = Data_control(Matrix,Method,Metric,Parameter,Value,Colormap)

% Matrix
[n,m] = size(Matrix);
if n < m
    Matrix = Matrix';
end

% Method
switch upper(Method)
    case {'WPGMA','UPGMA'}
    otherwise, error('Clustering method must be ''WPGMA'' or ''UPGMA''.');
end

% Metric
switch class(Metric)
 

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]杨汉碧,徐克学.中国杜鹃花属高山杜鹃亚组的数量分类研究[J].植物研究, 1983(03):75-86.DOI:CNKI:SUN:MBZW.0.1983-03-003.

[2]淦文燕,李德毅,王建民.一种基于数据场的层次聚类方法[J].电子学报, 2006, 34(2):258-262.DOI:10.3321/j.issn:0372-2112.2006.02.014.

[3]梁斌梅.基于层次聚类识别数据集前n个全局孤立点[J].计算机工程与应用, 2012, 048(009):101-103,107.

🌈4 Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值