🚀个人主页 :为梦而生~ 关注我一起学习吧!
💡专栏 :机器学习 欢迎订阅!相对完整的机器学习基础教学!
⭐特别提醒 :针对机器学习,特别开始专栏:机器学习python实战 欢迎订阅!本专栏针对机器学习基础专栏的理论知识,利用python代码进行实际展示,真正做到从基础到实战!
💡往期推荐 :
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
【机器学习基础】多元线性回归(适合初学者的保姆级文章)
【机器学习基础】决策树(Decision Tree)
【机器学习基础】K-Means聚类算法
【机器学习基础】DBSCAN
【机器学习基础】支持向量机
【机器学习基础】集成学习💡本期内容:BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies)是一种用于大规模数据集的层次聚类算法。它采用一种多层次的聚类方法,首先利用一种称为"聚类特征树(CF Tree)"的数据结构来压缩数据集,然后通过逐步分裂每个节点以形成聚类。
文章目录
- [1 引言](#1 引言)
-
- [1.1 聚类分析的重要性和应用场景](#1.1 聚类分析的重要性和应用场景)
- [1.2 层次聚类和BIRCH聚类的发展背景](#1.2 层次聚类和BIRCH聚类的发展背景)
- [2 层次聚类概述](#2 层次聚类概述)
-
- [2.1 层次聚类的定义及其基本思想](#2.1 层次聚类的定义及其基本思想)
- [2.2 层次聚类的优缺点分析](#2.2 层次聚类的优缺点分析)
- [3 BIRCH聚类算法介绍](#3 BIRCH聚类算法介绍)
-
- [3.1 BIRCH算法的基本概念](#3.1 BIRCH算法的基本概念)
- [3.2 BIRCH算法的核心思想:使用树状结构(CF Tree)存储和聚类数据](#3.2 BIRCH算法的核心思想:使用树状结构(CF Tree)存储和聚类数据)
- [3.3 聚类特征树(CF Tree)的生成](#3.3 聚类特征树(CF Tree)的生成)
- [4 BIRCH聚类算法的优势和局限性](#4 BIRCH聚类算法的优势和局限性)
- [5 BIRCH聚类算法的应用实例](#5 BIRCH聚类算法的应用实例)
1 引言
1.1 聚类分析的重要性和应用场景
聚类分析是一种重要的数据分析技术,其重要性和应用场景主要体现在以下几个方面:
重要性:
- 发现隐藏模式与规律:聚类分析能够帮助我们从大量数据中发现隐含的模式和规律,从而提高数据的利用价值。
- 数据预处理:聚类分析经常作为数据挖掘的预处理步骤,将数据转化为更适合分类或回归的形式。
- 自动分组:它是一种无监督学习方法,能够自动对数据进行分组,将相似的数据归为同一组,不相似的数据归为不同的组。
应用场景:
- 商业智能分析:聚类分析可以将客户群体分成不同的类别,从而帮助企业开展更有针对性的营销活动。例如,市场分析人员可以通过聚类分析从客户数据库中识别出不同的客户群,并使用购买模式来描述这些客户群的特征。
- 电商购物推荐:聚类分析可以将相似的用户或商品聚类在一起,使得推荐系统能够提供更精准的推荐服务。
- 生物信息学:聚类分析可以用于推导植物和动物的分类,对基因进行分析,从而帮助科学家获得对种群中固有结构的认识。
- 图像分析:聚类分析可以用于图像分割和识别,帮助我们从复杂的图像中识别出不同的对象或特征。
- 社会网络分析:聚类分析可以帮助我们识别社会网络中的不同群体或社区,从而更好地理解网络结构。
- 时序数据分析和复杂网络社团发现:聚类分析也可以应用于时序数据分析和复杂网络的社团发现,帮助我们从大量数据中提取有用的信息。
1.2 层次聚类和BIRCH聚类的发展背景
层次聚类(Hierarchical Clustering)是一种聚类分析方法,它的基本思想是将数据集中的样本看作一棵树的叶子,然后通过不断合并或分裂叶子节点,形成一棵聚类树。
这棵树的每一个内部节点表示一个聚类,而叶子节点表示单个的样本。根据聚类方式的不同,层次聚类可以分为凝聚的层次聚类和分裂的层次聚类。
凝聚的层次聚类 是自底向上 的方法,开始时将每个样本看作一个聚类,然后不断合并最近的聚类,直到满足某个终止条件;而分裂的层次聚类 则是自顶向下的方法,开始时将所有样本看作一个聚类,然后不断分裂最远的样本,直到满足某个终止条件。
BIRCH算法是在1996年由Tian Zhang提出来的,它是一种基于距离的层次聚类方法,综合了层次凝聚和迭代的重定位方法。层次凝聚是采用自底向上策略,将每个对象作为一个原子簇,然后合并这些原子簇形成更大的簇,减少簇的数目,直到所有的对象都在一个簇中或满足某个终结条件。
随着大数据时代的到来,处理大规模数据集成为了聚类算法的重要挑战之一。BIRCH算法作为一种高效的层次聚类方法,在处理大规模数据集时具有显著的优势。它能够有效地利用有限的内存资源完成高质量的聚类,并且可以通过单遍扫描数据集来最小化I/O代价。因此,BIRCH算法在各个领域得到了广泛的应用和研究。
总之,BIRCH算法是一种基于层次的聚类方法,通过使用聚类特征和聚类特征树来概括和存储聚类信息,从而实现了高效且高质量的聚类。它在处理大规模数据集时具有显著的优势,并且可以广泛应用于各个领域的聚类分析问题中。
2 层次聚类概述
2.1 层次聚类的定义及其基本思想
层次聚类的定义:
层次聚类(Hierarchical Clustering)是一种聚类算法,它的核心思想是通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。在这棵聚类树中,不同类别的原始数据点是树的最低层,而树的顶层是一个聚类的根节点。这种聚类方法可以看作是一个树状的聚类结构,数据点或聚类从下到上不断被合并,或者从上到下不断被分裂。
层次聚类的基本思想:
层次聚类通过某种相似性测度计算节点之间的相似性,并按相似度由高到低排序。根据聚类方式的不同,可以分为凝聚的层次聚类和分裂的层次聚类。
- 凝聚的层次聚类(自下而上的方法):开始时,每个样本或数据点都被视为一个单独的聚类。然后,算法计算所有聚类之间的距离或相似度,并选择最近或最相似的两个聚类进行合并。这个过程不断重复,直到所有的聚类合并为一个,或者达到预设的聚类数目,或者聚类之间的距离超过某个阈值。
- 分裂的层次聚类(自上而下的方法):与凝聚的方法相反,开始时,所有的样本或数据点都被视为一个单一的聚类。然后,算法选择距离最远或最不相似的样本对,并将它们分别分裂为新的聚类。这个过程不断重复,直到每个聚类中只有一个样本,或者达到预设的聚类数目,或者样本之间的距离小于某个阈值。
层次聚类的优点在于它可以随时停止划分,并且能够形成层次结构,使用户可以观察和理解数据的不同层次的结构。然而,由于它需要计算所有样本或聚类之间的距离或相似度,因此在处理大规模数据集时可能会变得非常耗时。
2.2 层次聚类的优缺点分析
优点:
- 能够发现类的层次关系:层次聚类可以通过合并或分裂操作,逐步构建或细化聚类结构,从而展示数据点之间的层次关系。这对于理解数据的组织结构非常有帮助。
- 对样本输入顺序不敏感:与一些其他聚类算法相比,层次聚类对样本的输入顺序不太敏感,这意味着即使改变样本的输入顺序,聚类结果也可能保持相对稳定。
- 能够处理任意形状的聚类:层次聚类不依赖于数据的分布假设,因此它可以处理各种形状的聚类,包括非凸形状和复杂结构。
缺点:
- 计算复杂度较高:层次聚类需要计算所有样本或聚类之间的距离或相似度,这导致它在处理大规模数据集时可能变得非常耗时。此外,合并或分裂操作也可能导致计算量的增加。
- 可能形成链状聚类:在某些情况下,层次聚类可能会形成链状结构,即一些聚类在合并过程中可能会成为其他聚类的子聚类,这可能导致聚类结果的不稳定或难以解释。
- 聚类终止条件难以确定:层次聚类需要指定一个终止条件来确定何时停止合并或分裂操作。然而,确定这个条件可能是一个困难的任务,因为不同的终止条件可能会导致不同的聚类结果。
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)的生成
- 从根节点root 开始递归往下,计算当前CF条目与要插入数据点之间的距离,寻找距离最小的那个路径,直到找到与该数据点最接近的叶节点中的条目。
- 比较计算出的距离是否小于阈值T,如果小于则当前CF条目吸收该数据点,并更新路径上的所有CF三元组;反之,进行第三步。
- 判断当前条目所在叶节点的CF条目个数是否小于λ,如果是,则直接将数据点插入作为该数据点的新条目,否则需要分裂该叶节点。分裂的原则是寻找该叶节点中距离最远的两个CF条目并以这两个CF条目作为种子,其他剩下的CF条目根据距离最小原则分配到这两个簇中,并更新整个CF树。
- 依次向上检查父节点是否也要分裂,如果需要按和叶子节点分裂方式相同。
先定义好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聚类算法的优势和局限性
算法优点
- 节省内存。叶子节点放在磁盘分区上,非叶子节点仅仅是存储了一个CF值,外加指向父节点和孩子节点的指针。
- 快, 计算两个簇的距离只需要用到(N,LS,SS)这三个值足矣。
- 只需扫描一遍数据集即可建树。
- 可识别噪声点。建立好CF树后把那些包含数据点少的子簇剔除。
算法缺点
- 结果依赖于数据点的插入顺序。
- 对非球状的簇聚类效果不好。
5 BIRCH聚类算法的应用实例
- 社交网络分析:在社交网络中,用户的行为和关系可以形成大规模的数据集。使用BIRCH聚类算法,可以有效地识别出社交网络中的不同群体或社区,从而帮助研究人员或企业更好地理解用户行为,优化产品设计或服务。
- 电商推荐系统:在电商领域,用户的历史购买记录、浏览记录等行为数据可以形成大规模的数据集。通过应用BIRCH聚类算法,可以将相似的用户或商品聚类在一起,从而实现更精准的推荐服务。同时,算法还可以帮助商家发现潜在的客户群体和市场趋势。
- 金融风险管理:在金融领域,大量的交易数据、客户信息等数据需要进行有效的分析和处理。BIRCH聚类算法可以帮助金融机构识别出异常交易或客户行为,从而及时发现和防范金融风险。
- 图像分割和识别:在图像处理领域,BIRCH聚类算法可以用于图像分割和识别。算法可以将图像中的像素或区域聚类在一起,从而形成不同的对象或特征。这有助于实现更准确的图像识别和目标检测。