层次聚类算法

对聚类算法有一点点入门的时候就知道,几乎所有的“平面型”聚类算法都有一个共同的弱点-难以确定类别数(聚类停止条件),而层次聚类在一定程度上解决了这个问题(它算一种比较古老比较通用的聚类算法吧)。谈到层次这个词,很容易想象到聚类的过程是线性分阶段进行的。

1. 层次聚类两种基本方法:凝聚的和分裂的

  • 凝聚的:从点作为个体簇开始,每一步合并两个最接近的簇。这里需要定义簇的邻近性概念,如图所示。

层次聚类算法

  • 分裂的:从包含所有点的某个簇开始,每一步分裂一个簇,直到仅剩下单个点簇。这种情况比较复杂,我们需要确定每一步分裂哪个簇,以及如何分裂。

层次聚类算法

2. 常用的基于凝聚的层次聚类

下面探讨两个问题:

1) 定义簇之间的邻近性(需要注意的是两个点的距离可以根据自己的需要去定义,这里说的是如何根据簇内多个点与其他点或者簇计算两个簇之间的邻近性)

源于簇的基于图的术语,有MIN、MAX、和组平均三种方法。MIN定义簇之间的邻近度为不同簇的两个最近的点之间的邻近度(图的术语表示:不同的结点子集中两个结点之间的最短边)。MAX取不同簇中两个最远的点之间的邻近度。通常我们使用单链(single link)和全链(complete link)来分别表示这两种方法。组平均定义簇邻近度为取不同簇的所用点对邻近度的平均值(平均变长)。三种方法如图所示。

层次聚类算法

当然,簇也可用质心代表,这样邻近度的定义为质心之间的距离就更加自然。还有一种方法Ward,该方法试图最小化点到其簇质心的距离的平方和。

2) 时间和空间复杂性

需要存储m2/2个邻近度,其中m是数据点的个数。因此空间复杂度为O(m2)。

需要O(m2)时间计算邻近度矩阵,之后步骤3和4涉及m-1次迭代,如果某个簇到其他所有簇的距离存放在一个有序表或堆中,则查找两个最近簇的开销可能为O(m-i+1).总时间为O(m2logm)。

3. 问题及优缺点

层次聚类的主要问题主要包括

1) 缺乏全局目标函数,使用各种标准在每一步局部地确定哪些簇应当合并,成功避开了解决困难的组合优化问题。但是这样的方法没有局部极小问题或很难选择初始点。

2) 处理不同大小簇的能力,若想平等地对待不同大小的簇,必须赋予不同簇中的点不同的权值。

3) 合并决策是不可逆的,一旦做出决策,就不能撤销了。

优点与缺点:

比较适合那些需要层次结构的应用,通常情况下,层次聚类会产生较高质量的聚类结果并可以根据邻近度阈值等相关指标确定聚类个数。然而计算量和存储代价是昂贵的,高维数据可能会出现较大问题。由于是不可逆的,对于噪声比较敏感。有些研究先使用其他聚类算法进行部分聚类,然后利用之前聚好的簇再进行层次聚类往往可以解决上述问题。

 

张晗

2015.1.28

原创文章,作者:admin,如若转载,请注明出处:https://www.isclab.org.cn/2015/01/28/%e5%b1%82%e6%ac%a1%e8%81%9a%e7%b1%bb%e7%ae%97%e6%b3%95/

赞 (2)
adminadmin
上一篇 2015年1月28日
下一篇 2015年1月28日

相关推荐

  • 梯度消失和梯度爆炸的原因及解决方案

          在训练层数较多的神经网络的过程中,使用基于反向传播的梯度优化算法来优化参数有可能会遇到梯度消失或梯度爆炸的问…

    2018年5月21日
    4.4K
  • 多标签学习

    每天都有大量的数据生成,这导致人们越来越需要新的努力来应对大数据给多标签学习带来的巨大挑战。例如,极端多标签分类是一个活跃且快速发展的研究领域,它处理的分类任务具有极其大量的类别或…

    2021年8月22日
    3.9K
  • 操作系统与内核安全基础

    本次报告从计算机的总体结构切入,介绍的了计算机系统的分层体系结构;对操作系统及其内核的做了详细说明,包括操作系统与操作系统内核的关系,以及操作系统内核的主要功能等内容;报告还分析了…

    2019年11月14日
    4.3K
  • 大模型支持的程序崩溃故障定位方法

    本次报告聚焦大模型支持下的程序崩溃故障定位方法,介绍了AutoFL与FlexFL两个代表性算法,重点讲解了函数交互在大模型中的创新应用,并比较开源与闭源模型在定位精度与效率上的表现…

    2025年6月16日
    4.6K
  • 软件定义网络拓扑发现技术

    软件定义网络,作为一种可编程的新型网络架构,相比于传统网络具有许多的优点,在网络可视化、流量监控、访问控制等网络管理和运维领域中具有得天独厚的优势。而由于软件定义网络的控制器要求对…

    2020年7月26日
    3.9K
  • 加密代理流量识别

    本次报告围绕加密代理流量展开,首先阐述了代理流量识别的基本概念、研究背景和研究意义,然后介绍了代理识别或检测的研究现状。接着详细介绍了ProxyKiller和EO-EPTC两种现有…

    2026年8月24日
    715
  • 神经网络模型的覆盖测试

    人工智能系统在近年来取得丰硕的成果,其中神经网络在自动驾驶领域等图像处理方向应用较为广泛。但是神经网络存在安全隐患,容易受到攻击导致决策错误,比如对抗样本攻击和后门攻击。如何测试神…

    2022年1月4日
    3.8K
  • 语义级代码克隆检测

    代码克隆(Code Clone),是指存在于代码库中两个及两个以上相同或者相似的源代码片段, 是软件开发中的常见现象。近年来,针对Ⅳ型克隆即语义级克隆的检测技术受到了广泛关注。主要…

    2022年10月11日
    4.2K
  • Spectre攻击及检测

    2018年初,推测执行攻击Spectre的出现表明,一些软件尽管通过了如模糊测试、符号执行等技术的安全检测,但是在执行过程中,攻击者还是可以通过推测执行窃取重要信息。而且,推测执行…

    2022年8月12日
    4.6K
  • App个人隐私安全检测技术

    本报告主要介绍了隐私数据类型,以及基本的隐私风险检测方法。第一篇论文侧重于分析APP整体的隐私数据泄露,并根据隐私泄露的风险程度给相应的App进行风险评级;第二篇侧重于研究APP中…

    2022年4月11日
    4.5K