HBSCAN 成员概率
HBSCAN membership probability
我正在研究聚类算法之间的比较,我想知道 R 中的 DBSCAN 如何计算所谓的 成员资格 'probability' ?
在 dbscan
包中,hdbscan()
函数对作为输入传递的对象进行一些有效性检查,然后使用 k
计算到其最近邻居的距离矩阵 dbscan::kNNdist()
函数。 k
的值设置为传递给 dbscan()
函数的参数 minPts
减去 1.
core_dist <- kNNdist(x, k = minPts - 1)
然后它使用核心距离作为密度的度量,并使用以下算法(来自 hdbscan.R 来源)计算成员概率:
## Generate membership 'probabilities' using core distance as the measure of density
prob <- rep(0, length(cl))
for (cid in sl){
ccl <- res[[as.character(cid)]]
max_f <- max(core_dist[which(cl == cid)])
pr <- (max_f - core_dist[which(cl == cid)])/max_f
prob[cl == cid] <- pr
}
对于显着簇对象sl
中的每个簇id,算法计算最大核心距离,然后通过从最大距离中减去每个元素的距离,将结果除以最大距离来构建概率转换成比例。
然后将这些覆盖概率插入到 hdbscan()
函数作为 membership_prob
对象输出的列表中。
我正在研究聚类算法之间的比较,我想知道 R 中的 DBSCAN 如何计算所谓的 成员资格 'probability' ?
在 dbscan
包中,hdbscan()
函数对作为输入传递的对象进行一些有效性检查,然后使用 k
计算到其最近邻居的距离矩阵 dbscan::kNNdist()
函数。 k
的值设置为传递给 dbscan()
函数的参数 minPts
减去 1.
core_dist <- kNNdist(x, k = minPts - 1)
然后它使用核心距离作为密度的度量,并使用以下算法(来自 hdbscan.R 来源)计算成员概率:
## Generate membership 'probabilities' using core distance as the measure of density
prob <- rep(0, length(cl))
for (cid in sl){
ccl <- res[[as.character(cid)]]
max_f <- max(core_dist[which(cl == cid)])
pr <- (max_f - core_dist[which(cl == cid)])/max_f
prob[cl == cid] <- pr
}
对于显着簇对象sl
中的每个簇id,算法计算最大核心距离,然后通过从最大距离中减去每个元素的距离,将结果除以最大距离来构建概率转换成比例。
然后将这些覆盖概率插入到 hdbscan()
函数作为 membership_prob
对象输出的列表中。