Canopy
Canopy是一种用于数据预处理和初步聚类的快速算法。它通过创建粗略的簇(称为 canopy)来加速后续的聚类过程,使得大规模数据集的预处理更加高效。
Canopy的基本原理
基本概念
Canopy是一种层次聚类方法,用于快速生成初步的簇。它通过设定两个阈值(threshold1 和 threshold2)来确定哪些样本属于同一个 canopy。
算法步骤
- 初始化:选择一个初始样本作为第一个 canopy 的质心。
- 分配阶段:对于每个后续样本,计算其与当前 canopy 中所有质心的距离。如果该距离小于 threshold2,则将该样本分配到最近的 canopy 中。
- 更新阶段:如果某个样本被分配到当前 canopy,并且其与当前 canopy 的质心之间的距离大于 threshold1,则将该样本作为新的质心,并创建一个新的 canopy。
质心更新公式
重新计算每个 canopy 中所有样本的均值,将该均值作为新的质心。可以表示为:
其中, 是样本 是否被分配到第 个 canopy 的质心 ,1 表示是,0 表示否。
合并阶段
如果某个 canopy 的大小小于预设的最小点数(min_points),则将其合并到最近的 canopy 中。
Canopy计算过程的详细步骤
初始化
选择一个初始样本作为第一个 canopy 的质心。例如,我们可以随机选择一个样本 :
分配阶段
对于每个后续样本 ,计算其与当前 canopy 中所有质心的距离。如果该距离小于 threshold2,则将该样本分配到最近的 canopy 中。
假设我们已经有 个 canopy,每个 canopy 的质心为 。对于样本 ,计算其与每个 canopy 质心的距离:
如果 ,则将 分配到第 个 canopy 中。
更新阶段
如果某个样本被分配到当前 canopy,并且其与当前 canopy 的质心之间的距离大于 threshold1,则将该样本作为新的质心,并创建一个新的 canopy。
假设样本 被分配到第 个 canopy,并且 ,则将 作为新的质心,并创建一个新的 canopy :
合并阶段
如果某个 canopy 的大小小于预设的最小点数(min_points),则将其合并到最近的 canopy 中。
假设 canopy 的大小为 ,并且 。我们需要找到最近的 canopy ,并将 合并到 中。
选择最近的 canopy 的质心 ,计算 中所有样本与 的距离:
将 中的所有样本分配到最近的 canopy ,并更新 的质心 。
重复上述步骤
重复上述步骤,直到所有样本都被分配到 canopy 中,并且所有的 canopy 的大小都大于或等于最小点数。
应用场景
Canopy算法常用于大规模数据集的聚类前处理。它可以帮助快速生成初步的簇,为后续的聚类算法(如DBSCAN或HDBSCAN)提供输入,从而提高聚类效率。