将HDBSCAN标签与软群集结果进行比较

时间:2017-07-05 22:44:30

标签: python machine-learning cluster-analysis dbscan unsupervised-learning

我使用HDBSCAN从数据集中获取软群集,如下所示:

clusterer = hdbscan.HDBSCAN(min_cluster_size=10, prediction_data=True)
clusterer.fit(data)
soft_clusters = hdbscan.all_points_membership_vectors(clusterer)
closest_clusters = [np.argmax(x) for x in soft_clusters]

soft_clusters是数据点属于每个群集的概率的二维数组,因此closest_clusters应该是一个数据点最可能属于的数组。但是,当我将closest_clustersclusterer.labels_(HDBSCAN分配数据点的标签)进行比较时,我发现几乎没有任何群集与具有标签的数据点匹配,即数据点标签3有4个最近的集群。

我不确定我是否误解了软群集的工作方式或代码是否有问题。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

HDBSCAN的作者试图解决这个问题,但它看起来似乎只是如何运作,如果没有一些重大的重组,就没有办法解决它。以下是他的评论:

  

深入研究这个问题我觉得答案(不幸的是?)就是这个问题"它是如何工作的#34;软聚类考虑距样本的距离,以及点与每个聚类之间树中的合并高度。这些点最终导致错误"是位于树中的分裂点 - 它们与自己的群集具有相同的合并高度(可能这是一个错误,我将进一步研究它)。这意味着我们不能区分它们,并且就纯粹的环境距离而言,它们更接近于错误的"群集,因此得到错误分类。这有点奇怪,但软聚类最终与硬聚类有点不同,因此理论上可以发生像这样的极端情况。