HDBScan

简述

DBScan可以识别噪声,但是由于MinPts簇最少数目和Eps邻域半径变量是全局的, DBScan无法发现不同密度的簇。 

OPTICS

核心思想是记录每个点的核心距离和可达距离,以一种可视化方式展示不同的簇. OPTICS不需要固定Eps参数,但是对参数MinPts敏感,可达距离有局限性(一点到另一点,不对称)

  • 核心距离:到第MinPts的距离 (临域点 >= MinPts),无穷大(临域点 < MinPts)
  • 点B相对于点A可达距离:Max(ab欧式距离,a核心距离)

然后画图查看簇的密度与个数 (波谷越低密度越高,波谷越高密度越低)

Screenshot 2025-09-04 at 10.33.21 PM

 

HDBScan

HDBScan结合了密度类和层次类的思想,其核心在于一个密度分层树,来表征数据的聚类结构。

  • HDBSCan考虑相对密度,而非绝对密度Eps
  • 通过计算互达距离来定义点之间的连接关系
  • HDBscan 通过对密度的降低进行跟踪,生成一个密度分层树
  • 叶子结点代表高密度的簇,根节点代表整个数据集
  • 通过定义稳定性指标来评估每个簇的持久性,并自动选择最稳定的簇作为最终聚类结果

核心距离&互达距离

针对点x参数为k的核心距离 (当前点到第k近点的距离):

Screenshot 2025-09-04 at 10.57.58 PM

互达距离。(放大了稀疏区域, 高密度区域不受影响)

Screenshot 2025-09-04 at 10.51.26 PM

Screenshot 2025-09-04 at 11.03.46 PM

建立最小生成树

基于所有数据点间的互达距离生成最小生成树。Prime算法

 

构建层次聚类树

  • 将MST中每条边按照权重进行排序
  • 构建层次结构,1)该边连接的两个点属于不同的簇则合并到一个新簇 2)该边连接的两个点在在同一个簇内,则不进行合并

  

                Screenshot 2025-09-05 at 14.01.53           Screenshot 2025-09-05 at 14.01.35

上图是简单的画了一条直线,将树分为了不同的簇。这种画法存在一些问题,比如将噪声画进了簇内等

 

压缩层次聚类树

  1. 自顶向下,顶点时一个大的簇
  2. 对于当前簇,如果其包含的数据点数量小于min_cluster_size, 则认为是噪声点不考虑
  3.  1)如果所有子簇都 < min_cluster_size, 则认为当前簇是稳定的保留下来, 2)如果存在一个子簇大小 >= min_cluster_size,则递归 2,3
  4. 重复步骤2,3,直到没有可拆分的簇为止
  5. 最终,层次树被拆为多个不相交的子树,每个子树的根节点都 < min_cluster_size。

 

簇的稳定性

  • r = 1 / distance.
  • r_birth, 当前簇作为独立簇,最大的r 值
  • r_death,  当前簇不再作为一个,开始分裂为更小子簇的 r 值
  • r_p, 簇中数据点p脱离簇时的 r值,r_death <= r_p <= r_birth
  • s = sum(r_p - r_birth)
  • 计算该点稳定性总和
  • 计算直接子簇稳定性总和
  • 子簇 > 该簇稳定性总和,保留子簇,放弃本簇,
  • 该簇 >= 子簇稳定性总和,则保留父放弃子
  • 遍历完之后,稳定簇为选定簇

 

参数:

  • min_cluster_size: 形成一个簇所需要的最小样本数
  • min_samples:一个点周围有多少邻居才认为是密集的
  • 等。。。

 

参考:

HDBSCAN

https://www.biaodianfu.com/hdbscan.html

 

posted @ 2025-09-04 17:56  ylxn  阅读(17)  评论(0)    收藏  举报