【机器学习基础】层次聚类-BIRCH聚类

🚀个人主页:为梦而生~ 关注我一起学习吧!
💡专栏:机器学习 欢迎订阅!相对完整的机器学习基础教学!
特别提醒:针对机器学习,特别开始专栏:机器学习python实战 欢迎订阅!本专栏针对机器学习基础专栏的理论知识,利用python代码进行实际展示,真正做到从基础到实战!
💡往期推荐
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
【机器学习基础】多元线性回归(适合初学者的保姆级文章)
【机器学习基础】决策树(Decision Tree)
【机器学习基础】K-Means聚类算法
【机器学习基础】DBSCAN
【机器学习基础】支持向量机
【机器学习基础】集成学习
💡本期内容:BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies)是一种用于大规模数据集的层次聚类算法。它采用一种多层次的聚类方法,首先利用一种称为“聚类特征树(CF Tree)”的数据结构来压缩数据集,然后通过逐步分裂每个节点以形成聚类。


文章目录

  • 1 引言
    • 1.1 聚类分析的重要性和应用场景
    • 1.2 层次聚类和BIRCH聚类的发展背景
  • 2 层次聚类概述
    • 2.1 层次聚类的定义及其基本思想
    • 2.2 层次聚类的优缺点分析
  • 3 BIRCH聚类算法介绍
    • 3.1 BIRCH算法的基本概念
    • 3.2 BIRCH算法的核心思想:使用树状结构(CF Tree)存储和聚类数据
    • 3.3 聚类特征树(CF Tree)的生成
  • 4 BIRCH聚类算法的优势和局限性
  • 5 BIRCH聚类算法的应用实例


1 引言

1.1 聚类分析的重要性和应用场景

聚类分析是一种重要的数据分析技术,其重要性和应用场景主要体现在以下几个方面:

重要性

  1. 发现隐藏模式与规律:聚类分析能够帮助我们从大量数据中发现隐含的模式和规律,从而提高数据的利用价值。
  2. 数据预处理:聚类分析经常作为数据挖掘的预处理步骤,将数据转化为更适合分类或回归的形式。
  3. 自动分组:它是一种无监督学习方法,能够自动对数据进行分组,将相似的数据归为同一组,不相似的数据归为不同的组。

应用场景

  1. 商业智能分析:聚类分析可以将客户群体分成不同的类别,从而帮助企业开展更有针对性的营销活动。例如,市场分析人员可以通过聚类分析从客户数据库中识别出不同的客户群,并使用购买模式来描述这些客户群的特征。
  2. 电商购物推荐:聚类分析可以将相似的用户或商品聚类在一起,使得推荐系统能够提供更精准的推荐服务。
  3. 生物信息学:聚类分析可以用于推导植物和动物的分类,对基因进行分析,从而帮助科学家获得对种群中固有结构的认识。
  4. 图像分析:聚类分析可以用于图像分割和识别,帮助我们从复杂的图像中识别出不同的对象或特征。
  5. 社会网络分析:聚类分析可以帮助我们识别社会网络中的不同群体或社区,从而更好地理解网络结构。
  6. 时序数据分析和复杂网络社团发现:聚类分析也可以应用于时序数据分析和复杂网络的社团发现,帮助我们从大量数据中提取有用的信息。

1.2 层次聚类和BIRCH聚类的发展背景

层次聚类(Hierarchical Clustering)是一种聚类分析方法,它的基本思想是将数据集中的样本看作一棵树的叶子,然后通过不断合并或分裂叶子节点,形成一棵聚类树。

这棵树的每一个内部节点表示一个聚类,而叶子节点表示单个的样本。根据聚类方式的不同,层次聚类可以分为凝聚的层次聚类和分裂的层次聚类

凝聚的层次聚类自底向上的方法,开始时将每个样本看作一个聚类,然后不断合并最近的聚类,直到满足某个终止条件;而分裂的层次聚类则是自顶向下的方法,开始时将所有样本看作一个聚类,然后不断分裂最远的样本,直到满足某个终止条件。

在这里插入图片描述

BIRCH算法是在1996年由Tian Zhang提出来的,它是一种基于距离的层次聚类方法,综合了层次凝聚和迭代的重定位方法。层次凝聚是采用自底向上策略,将每个对象作为一个原子簇,然后合并这些原子簇形成更大的簇,减少簇的数目,直到所有的对象都在一个簇中或满足某个终结条件。

随着大数据时代的到来,处理大规模数据集成为了聚类算法的重要挑战之一。BIRCH算法作为一种高效的层次聚类方法,在处理大规模数据集时具有显著的优势。它能够有效地利用有限的内存资源完成高质量的聚类,并且可以通过单遍扫描数据集来最小化I/O代价。因此,BIRCH算法在各个领域得到了广泛的应用和研究。

总之,BIRCH算法是一种基于层次的聚类方法,通过使用聚类特征和聚类特征树来概括和存储聚类信息,从而实现了高效且高质量的聚类。它在处理大规模数据集时具有显著的优势,并且可以广泛应用于各个领域的聚类分析问题中。


2 层次聚类概述

2.1 层次聚类的定义及其基本思想

层次聚类的定义

层次聚类(Hierarchical Clustering)是一种聚类算法,它的核心思想是通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在这棵聚类树中,不同类别的原始数据点是树的最低层,而树的顶层是一个聚类的根节点。这种聚类方法可以看作是一个树状的聚类结构,数据点或聚类从下到上不断被合并,或者从上到下不断被分裂。

层次聚类的基本思想

层次聚类通过某种相似性测度计算节点之间的相似性,并按相似度由高到低排序。根据聚类方式的不同,可以分为凝聚的层次聚类和分裂的层次聚类。

  1. 凝聚的层次聚类(自下而上的方法):开始时,每个样本或数据点都被视为一个单独的聚类。然后,算法计算所有聚类之间的距离或相似度,并选择最近或最相似的两个聚类进行合并。这个过程不断重复,直到所有的聚类合并为一个,或者达到预设的聚类数目,或者聚类之间的距离超过某个阈值。
  2. 分裂的层次聚类(自上而下的方法):与凝聚的方法相反,开始时,所有的样本或数据点都被视为一个单一的聚类。然后,算法选择距离最远或最不相似的样本对,并将它们分别分裂为新的聚类。这个过程不断重复,直到每个聚类中只有一个样本,或者达到预设的聚类数目,或者样本之间的距离小于某个阈值。

层次聚类的优点在于它可以随时停止划分,并且能够形成层次结构,使用户可以观察和理解数据的不同层次的结构。然而,由于它需要计算所有样本或聚类之间的距离或相似度,因此在处理大规模数据集时可能会变得非常耗时。

2.2 层次聚类的优缺点分析

优点

  1. 能够发现类的层次关系:层次聚类可以通过合并或分裂操作,逐步构建或细化聚类结构,从而展示数据点之间的层次关系。这对于理解数据的组织结构非常有帮助。
  2. 对样本输入顺序不敏感:与一些其他聚类算法相比,层次聚类对样本的输入顺序不太敏感,这意味着即使改变样本的输入顺序,聚类结果也可能保持相对稳定。
  3. 能够处理任意形状的聚类:层次聚类不依赖于数据的分布假设,因此它可以处理各种形状的聚类,包括非凸形状和复杂结构。

缺点

  1. 计算复杂度较高:层次聚类需要计算所有样本或聚类之间的距离或相似度,这导致它在处理大规模数据集时可能变得非常耗时。此外,合并或分裂操作也可能导致计算量的增加。
  2. 可能形成链状聚类:在某些情况下,层次聚类可能会形成链状结构,即一些聚类在合并过程中可能会成为其他聚类的子聚类,这可能导致聚类结果的不稳定或难以解释。
  3. 聚类终止条件难以确定:层次聚类需要指定一个终止条件来确定何时停止合并或分裂操作。然而,确定这个条件可能是一个困难的任务,因为不同的终止条件可能会导致不同的聚类结果。

3 BIRCH聚类算法介绍

3.1 BIRCH算法的基本概念

BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)聚类是一种增量式的层次聚类方法。

它通过使用一个叫做CF Tree(聚类特征树)的树结构来概括聚类特征,从而实现有效的聚类和规约。

BIRCH聚类的主要优点是它可以处理大规模的数据集,并且对异常值有很好的鲁棒性。它通过将数据集中的点进行聚类,将分布在稠密区域中的点聚为一类,而将分布在稀疏区域中的点视为异常点进行移除。

此外,BIRCH聚类是一种增量式的聚类方法,这意味着它可以在处理新数据时,基于已经处理过的数据点进行聚类决策,而不是重新计算所有的数据点。

在这里插入图片描述

3.2 BIRCH算法的核心思想:使用树状结构(CF Tree)存储和聚类数据

BIRCH算法的核心思想使用树状结构(CF Tree,即聚类特征树)来存储和聚类数据。这种树状结构的设计使得算法能够有效地处理大规模数据集,同时保持聚类的质量和效率。

CF Tree中的每个节点都由一个或多个聚类特征(CF)组成,这些CF是算法用于概括和存储聚类信息的关键。CF是一个三元组,包括簇中样本点的数量、各特征维度的和向量以及各特征维度的平方和,它用于存储关于簇的基本信息,同时实现了数据的压缩。

在这里插入图片描述

通过CF Tree,BIRCH算法可以在有限的内存资源下进行高质量的聚类。算法通过不断插入新的数据点,并根据CF Tree的结构进行聚类的合并和分裂,从而逐步构建出完整的聚类结构。此外,由于CF Tree的高度平衡性,算法可以在对数时间内完成聚类操作,进一步提高了聚类的效率。

因此,使用树状结构(CF Tree)来存储和聚类数据是BIRCH算法的核心思想,这种思想使得算法在处理大规模数据集时具有显著的优势,并且广泛应用于各个领域的聚类分析问题中。

3.3 聚类特征树(CF Tree)的生成

  1. 从根节点root 开始递归往下,计算当前CF条目与要插入数据点之间的距离,寻找距离最小的那个路径,直到找到与该数据点最接近的叶节点中的条目。
  2. 比较计算出的距离是否小于阈值T,如果小于则当前CF条目吸收该数据点,并更新路径上的所有CF三元组;反之,进行第三步。
  3. 判断当前条目所在叶节点的CF条目个数是否小于λ,如果是,则直接将数据点插入作为该数据点的新条目,否则需要分裂该叶节点。分裂的原则是寻找该叶节点中距离最远的两个CF条目并以这两个CF条目作为种子,其他剩下的CF条目根据距离最小原则分配到这两个簇中,并更新整个CF树。
  4. 依次向上检查父节点是否也要分裂,如果需要按和叶子节点分裂方式相同。

在这里插入图片描述

先定义好CF Tree的参数: 即枝平衡因子β(内部节点的最大CF数), 叶平衡因子λ(叶子节点的最大CF数),空间阈值τ( 叶节点每个CF的最大样本半径或直径)

在最开始的时候,CF Tree是空的,没有任何样本,我们从训练集读入第一个样本点,将
它放入一个新的CF三元组A,这个三元组的N=1,将这个新的CF放入根节点

在这里插入图片描述
继续读入第二个样本点,我们发现这个样本点和第一个样本点A,在半径为T的超球体范围内,也就是说,他们属于一个CF,我们将第二个点也加入CF A,此时需要更新A的三元组的值。此时A的三元组中N=2,如下图一

在这里插入图片描述
读入第三个样本点,若我们发现这个点不能融入刚才前面的样本点形成的超球体内,就需要
一个新的CF三元组B。此时根节点有两个CF三元组A和B,如上图二

读入第四个样本点,若发现和B在半径小于T的超球体内,继续更新

在这里插入图片描述

什么时候CF Tree的节点需要分裂呢?

假设我们现在的CF Tree 如下图, 节点LN1有三个CF, LN2和LN3各有两个CF。我们的叶子节点的最大CF数λ=3。此时一个新的样本点来了,计算得出它离LN1中的叶子节点最近,那么开始判断它是否在sc1,sc2,sc3。这3个CF对应的超球体之内,因不在,故需要建立一个新的CF,即sc8来容纳它。

但我们的λ=3,也就是说LN1的CF个数已经达到最大值了,不能再创建新的CF了,此时就要将LN1节点一分为二了

在这里插入图片描述
将LN1里所有CF元组中,找到两个最远的CF做为种子CF,然后将LN1节点里所有CF 即sc1, sc2, sc3,以及新样本点的新元组sc8划分到两个新的节点上。将LN1节点划分后的CF Tree如下图

在这里插入图片描述
若内部节点的最大CF数β=3,则此时会导致最大CF数超了,也就是说要继续,方法与前面一样,分裂后的CF Tree如下图
在这里插入图片描述


4 BIRCH聚类算法的优势和局限性

算法优点

  1. 节省内存。叶子节点放在磁盘分区上,非叶子节点仅仅是存储了一个CF值,外加指向父节点和孩子节点的指针。
  2. 快, 计算两个簇的距离只需要用到(N,LS,SS)这三个值足矣。
  3. 只需扫描一遍数据集即可建树。
  4. 可识别噪声点。建立好CF树后把那些包含数据点少的子簇剔除。

算法缺点

  1. 结果依赖于数据点的插入顺序。
  2. 对非球状的簇聚类效果不好。

5 BIRCH聚类算法的应用实例

  1. 社交网络分析:在社交网络中,用户的行为和关系可以形成大规模的数据集。使用BIRCH聚类算法,可以有效地识别出社交网络中的不同群体或社区,从而帮助研究人员或企业更好地理解用户行为,优化产品设计或服务。
  2. 电商推荐系统:在电商领域,用户的历史购买记录、浏览记录等行为数据可以形成大规模的数据集。通过应用BIRCH聚类算法,可以将相似的用户或商品聚类在一起,从而实现更精准的推荐服务。同时,算法还可以帮助商家发现潜在的客户群体和市场趋势。
  3. 金融风险管理:在金融领域,大量的交易数据、客户信息等数据需要进行有效的分析和处理。BIRCH聚类算法可以帮助金融机构识别出异常交易或客户行为,从而及时发现和防范金融风险。
  4. 图像分割和识别:在图像处理领域,BIRCH聚类算法可以用于图像分割和识别。算法可以将图像中的像素或区域聚类在一起,从而形成不同的对象或特征。这有助于实现更准确的图像识别和目标检测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/267209.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将视频的声音转换成音频?视频提取音频的小妙招

在数字化时代,视频和音频是我们生活中不可或缺的元素。有时候,我们可能只需要视频中的音频部分,这时就需要将视频的声音转换成音频文件。那么,如何实现这一操作呢?本文将为您介绍几种简单而实用的小妙招。 方法一&…

朱元璋如何处理十万女俘让蒙古人险些灭绝

明太祖朱元璋的铁血手腕:十万女俘与蒙古人的灭顶之灾 在中国历史上,明太祖朱元璋以其卓越的领导才能和深谋远虑的政治智慧,开创了明朝的辉煌篇章。然而,在他登基称帝的背后,却隐藏着一段鲜为人知的残酷往事。今天&…

抽象类、模板方法模式

抽象类概述 在Java中abstract是抽象的意思,如果一个类中的某个方法的具体实现不能确定,就可以申明成abstract修饰的抽象方法(不能写方法体了),这个类必须用abstract修饰,被称为抽象类。 抽象方法定义&…

202435读书笔记|《半小时漫画中国史》——读点经济学与历史,生活更美好,趣味烧脑土地制度、商鞅变法、华丽丽的丝绸之路这里都有

202435读书笔记|《半小时漫画中国史》——读点经济学与历史,生活更美好,趣味烧脑土地制度、商鞅变法、华丽丽的丝绸之路这里都有 1. 土地政策、度量衡及税收2. 商鞅变法3. 西汉经济4. 西汉盐铁大辩论5. 西汉丝绸之路 《半小时漫画中国史:经济…

Day09:基础入门-算法逆向散列对称非对称JS源码逆向AESDESRSASHA

目录 算法加密-概念&分类&类型 加密解密-识别特征&解密条件 解密实例-密文存储&数据传输 思维导图 章节知识点: 应用架构:Web/APP/云应用/三方服务/负载均衡等 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗透命令&am…

2024年2月最新微信域名检测拦截接口源码

这段PHP代码用于检测指定域名列表中的域名是否被封。代码首先定义了一个包含待检测域名的数组 $domainList,然后遍历该数组,对每个域名发送HTTP请求并检查响应内容以判断域名是否被封。 具体步骤如下: 1. 定义待检测的域名列表。 2. 遍历域名…

将法律条文很美观的复制到word上

前言 目前很多法律条款都没有现成的PDF或者word格式的供大家下载,这个时候呢,领导又要求你帮他搞定,这就很。。。。 步骤 复制全部条款到word中使用wps的排版功能,将空格和空段落全部移除 3. 设置好你需要的格式 标题&#xff…

python毕设选题 - 大数据商城人流数据分析与可视化 - python 大数据分析

文章目录 0 前言课题背景分析方法与过程初步分析:总体流程:1.数据探索分析2.数据预处理3.构建模型 总结 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到…

Flink SQL 中的流式概念:状态算子

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

git安装与使用4.3

一、git的安装 1、下载git包 下载git包url:https://git-scm.com/download/win 下载包分为:64位和32位 2、点击安装包 2、选择安装路径 3、 点击下一步 4、点击next 5、点击next 6、点击next 7、 8、 9、 10、 11、 12、在桌面空白处,右键…

k8s 存储卷详解与动静部署详解

目录 一、Volume 卷 1.1 卷类型 emptyDir : hostPath: persistentVolumeClaim (PVC): configMap 和 secret: 二、 emptyDir存储卷 2.1 特点 2.2 用途: 2.3 示例 三、 hostPath存储卷 3.1 特点 3.2 用途 …

137.乐理基础-协和音程、不协和音程

内容参考于: 三分钟音乐社 上一个内容:136.旋律音程、和声音程、自然音程、变化音程 上一个内容里练习的答案: 所有音程都可以分成协和音程与不协和音程两大类 协和音程又分三个小类: 第一个小类叫极完全协和音程,就…

【Linux深入剖析】进程控制 | 进程程序替换--长篇深层次讨论

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.进程创建1.1 fork函…

《汇编语言》- 读书笔记 - 第13章-int 指令

《汇编语言》- 读书笔记 - 第13章-int 指令 13.1 int 指令13.2 编写供应用程序调用的中断例程中断例程:求一 word 型数据的平方主程序中断处理程序执行效果 中断例程:将一个全是字母,以0结尾的字符串,转化为大写主程序中断处理程序…

【JavaEE】_Spring MVC项目之建立连接

目录 1. Spring MVC程序编写流程 2. 建立连接 2.1 RequestMapping注解介绍 2.2 RequestMapping注解使用 2.2.1 仅修饰方法 2.2.2 修饰类与方法 2.3 关于POST请求与GET请求 2.3.1 GET请求 2.3.2 POST请求 2.3.3 限制请求方法 1. Spring MVC程序编写流程 1. 建立连接&…

TCP为什么要三次握手?

TCP三次握手协议是为了在不可靠的互联网环境中可靠地建立起一个连接,三次握手可以确保两端的发送和接收能力都是正常的。 那么,为什么是三次而不是二次或四次握手呢? 为什么不是二次握手? 如果是二次握手,即客户端发…

Qt5.9.9交叉编译(带sqlite3、OpenSSL)

1、交叉编译工具链 这里ARM平台是ARM CortexA9的,一般交叉编译工具链demo板厂商都会提供,若未提供或想更换新版本的交叉编译工具链可参考以下方式获取。 1.1 下载适用于ARM CortexA9的交叉编译工具链 Linaro Releases下载gcc4的最新版xxxx-i686_arm-li…

蓝桥杯-单片机组基础7-存储器映射扩展与PWM脉冲调制(附小蜜蜂课程代码)

蓝桥杯单片机组备赛指南请查看这篇文章:戳此跳转蓝桥杯备赛指南文章 本文章针对蓝桥杯-单片机组比赛开发板所写,代码可直接在比赛开发板上使用。 型号:国信天长4T开发板(绿板),芯片:IAP15F2K6…

蓝桥杯练习系统(算法训练)ALGO-993 RP大冒险

资源限制 内存限制:64.0MB C/C时间限制:200ms Java时间限制:600ms Python时间限制:1.0s 问题描述 请尽情使用各种各样的函数来测试你的RP吧~~~ 输入格式 一个数N表示测点编号。 输出格式 一个0~9的数。 样例输入 0 样…

设计模式-结构型模式-外观模式

外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。[DP] 首先,定义子系统的各个组件接口和具体实现类: // 子系统组件接…