【机器学习基础】层次聚类-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.mfbz.cn/a/421852.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE】_Spring Web MVC简介

目录 1. Spring Web MVC简介 2. MVC简介 3. Spring MVC 1. Spring Web MVC简介 官网对于Spring Web MVC的介绍如下: 链接如下: https://docs.spring.io/spring-framework/reference/web/webmvc.html#https://docs.spring.io/spring-framework/refer…

14.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据包分析工具界面与通信设计

内容参考于: 易道云信息技术研究院VIP课 上一个内容:13.如果没有工具就创造工具 码云地址(master 分支):https://gitee.com/dye_your_fingers/titan 码云版本号:fef5089bd11dfb86ae8b4e26f25cf59e85f896…

缓存穿透解决方案之布隆过滤器

布隆过滤器可以快速判断数据是否存在,避免从数据库中查询数据是否存在,减轻数据库的压力 布隆过滤器是由一个初值为0的bit数组和N个哈希函数,可以用来快速的判断某个数据是否存在 当我们想要标记某个数据是否存在时,布隆过滤器会…

《Spring Security 简易速速上手小册》第6章 Web 安全性(2024 最新版)

文章目录 6.1 CSRF 防护6.1.1 基础知识详解CSRF 攻击原理CSRF 防护机制最佳实践 6.1.2 重点案例:Spring Security 中的 CSRF 防护案例 Demo测试 CSRF 防护 6.1.3 拓展案例 1:自定义 CSRF 令牌仓库案例 Demo测试自定义 CSRF 令牌仓库 6.1.4 拓展案例 2&am…

动态规划(算法竞赛、蓝桥杯)--分组背包DP

1、B站视频链接&#xff1a;E16 背包DP 分组背包_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; const int N110; int v[N][N],w[N][N],s[N]; // v[i,j]:第i组第j个物品的体积 s[i]:第i组物品的个数 int f[N][N]; // f[i,j]:前i组物品&#xff0c;能放…

【如何像网吧一样弄个游戏菜单在家里】

GGmenu 个人家庭版游戏、应用管理 桌面图标管理器

Tomcat概念、安装及相关文件介绍

目录 一、web技术 1、C/S架构与B/S架构 1.1 http协议与C/S架构 1.2 http协议与B/S架构 2、前端三大核心技术 2.1 HTML&#xff08;Hypertext Markup Language&#xff09; 2.2 css&#xff08;Cascading Style Sheets&#xff09; 2.3 JavaScript 3、同步和异步 4、…

day08_分类品牌管理商品规格管理商品管理

文章目录 1 分类品牌管理1.1 菜单添加1.2 表结构介绍1.3 页面制作1.4 品牌列表加载1.4.1 后端接口BrandControllerBrandServiceBrandMapperBrandMapper.xml 1.4.2 前端对接brand.jscategoryBrand.vue 1.5 分类数据加载1.6 列表查询1.6.1 需求说明1.6.2 后端接口需求分析Categor…

高中数学:函数解析式的求法

一、待定系数法 用于&#xff0c;已知函数f(x)类型&#xff0c;求具体解析式的题目 关键解题步骤&#xff1a; 二、换元法 针对f(表达式)&#xff0c;表达式较复杂&#xff0c;且可以被换元表示的情况 关键解题步骤&#xff1a; 三、整体代换法 针对f(表达式1)表达式2…

C++的引用

目录 引用 常引用 指针与引用的关系 小拓展 引用的价值 做形参 传值、传引用的效率比较 做返回值 函数传值返回 函数传引用返回&#xff08;错误示范&#xff09; 野引用&#xff08;错误示范&#xff09; 引用的正常应用 值和引用作为返回值类型的性能比较 引用和…

人才测评系统的作用与应用场景有哪些?

人才测评有助于我们对于人才进行量化&#xff0c;例如&#xff1a;专业技能测评&#xff0c;性格的测评&#xff0c;以及智商和情商的测评&#xff0c;那么这些的集合就是一种人才的量化&#xff0c;通过这些属性参数&#xff0c;我们可以客观描述什么是“人才”。 那么人才测…

opencv VideoCapture

videocapture顾名思义视频捕捉&#xff0c;主要是从视频文件、摄像头或网络摄像头获取视频流数据&#xff0c;并将其作为一系列帧进行处理。 我们这里主要实现了获取项目文件夹下的1.mp4视频文件&#xff0c;然后经过灰度变化、均值滤波、边缘检测然后将视频显示出来 #include…

Xcode15与苹果ios17适配以及遇到的问题

大家好&#xff0c;我是你们的好朋友咕噜铁蛋&#xff01;最近&#xff0c;苹果发布了全新的iOS17系统&#xff0c;而作为开发者&#xff0c;我们需要确保我们的应用程序能够与这个新系统完美适配。因此&#xff0c;今天我将和大家分享一些关于Xcode15与苹果17系统适配的经验&a…

回溯例题(leetcode17/37)

文章目录 leetcode37leetcode17 回溯跟枚举差不多。要注意“回溯”&#xff0c;别忘记“回”之前把之前的改动都复原。 leetcode37 leetcode37是解数独问题。本题保证有且仅有唯一解。 思路&#xff1a;先把空格子的位置存下来&#xff0c;然后对每一个空位置挨个枚举1-9。枚…

【OpenGL的着色器03】内置变量(gl_Position等)

目录 一、说明 二、着色器的变量 2.1 着色器变量 2.2 着色器内置变量 三、最常见内置变量使用范例 3.1 常见着色器变量 3.2 示例1&#xff1a; gl_PointSize 3.3 示例2&#xff1a;gl_Position 3.4 gl_FragColor 3.5 渲染点片元坐标gl_PointCoord 3.6 gl_PointCoo…

Python中re模块的使用

正则表达式是一种强大的工具&#xff0c;用于处理字符串的匹配、搜索和替换操作。在Python中&#xff0c;我们可以使用内置的re模块来执行各种正则表达式操作。 1 基本用法 re.match(pattern, string): 从字符串的开头匹配一个模式。返回match对象或None。re.search(pattern,…

张俊将出席用磁悬浮技术改变生活演讲

演讲嘉宾&#xff1a;张俊 空压机销售总监 亿昇(天津)科技有限公司 演讲题目&#xff1a;用磁悬浮技术改变生活 会议简介 “十四五”规划中提出&#xff0c;提高工业、能源领城智能化与信息化融合&#xff0c;明确“低碳经济”新的战略目标&#xff0c;热能产业是能源产业和…

交友社交软件开发-php交友聊天系统-

为了开发一个高效的交友系统&#xff0c;需要一个完善的信息管理和筛选机制。这个系统应该能够根据用户的个人信息、兴趣爱好、价值观等标准进行筛选&#xff0c;并向用户提供符合他们要求心仪的人的信息。为了实现这个目标&#xff0c;系统可以利用人工智能技术&#xff0c;分…

100M服务器能同时容纳多少人访问

100M服务器的并发容纳人数会受到多种因素的影响&#xff0c;这些因素包括单个用户的平均访问流量大小、每个用户的平均访问页面数、并发用户比例、服务器和网络的流量利用率以及服务器自身的处理能力。 点击以下任一云产品链接&#xff0c;跳转后登录&#xff0c;自动享有所有…

Dell R730 2U服务器实践2:VMWare ESXi安装

缘起 刚到手边的一台Dell R730是三块硬盘raid0 &#xff0c;把我惊出一身冷汗&#xff0c;准备把它们改组成raid1 或者raid5 。 但是舍不得里面的ESXi 8 &#xff0c;寻找能否把raid0改成raid1 还不掉WSXi的方法&#xff0c;很遗憾没有找到。那样只能重装ESXi了。 ESXi软件下…