2

我有需要聚类的 4 维数据,以便为每个聚类构建最小体积边界椭球。我不希望有单点集群,或者至少,尽可能少的单点集群,因为我们不能用单点建立一个椭圆形置信区域。在我的问题中,没有预先给出集群的数量。所以我使用 Scikit-learn 的 Affinity Propagation - http://scikit-learn.org/stable/modules/clustering.html#affinity-propagation来估计集群的数量并从数据中执行集群。但是这种方法给了我这么多单点集群。您能否就如何解决此问题提供见解?

PS:为了给你更多信息,我正在研究用于贝叶斯证据计算的椭圆嵌套采样。

4

2 回答 2

1

我不知道您是否坚持Affinity Propagation,但是使用DBSCAN,您可以通过算法参数eps和minPts来实现您想要的。

更大的 eps 意味着可以检测到密度较小的集群,并且附近的集群也将被合并。

更大的 minPts 意味着您会将更多数据标记为噪声。

于 2014-07-09T13:12:23.867 回答
0

Affinity Propagation 没有椭球的概念,所以我不确定它是否符合您的要求。

MultiNest 使用 X 均值聚类的变体解决了这个问题。基本上,您首先制作一个覆盖所有点的包裹椭球。然后,您确定最重要的轴,并在每一端放置两个 k 均值椭球,然后将它们收敛。现在您可以决定两个椭球体使用的体积是否比单个椭球体少得多。然后递归地重复该过程。雀巢是一个开源实现,代码非常清晰:https ://github.com/kbarbary/nestle/

或者,您也可以在每个点周围放置一个椭圆体,并使用 K-folding 或 bootstrapping 确定半径。这就是 MLFriends 使用的;实现、解释和动画在:https ://johannesbuchner.github.io/UltraNest/method.html 这里可以首先使用样本协方差来选择椭球协方差,当检测到簇时,它们可以是同心的,并且是共同的确定的样本协方差。为了确定半径,您省略了一些测试点,并确保训练点周围的椭球足够大以恢复测试点。这是相当稳定且无参数的。

DBSCAN 也可能很有趣。但是,最终您需要硬而不是模糊的建议曲面来进行嵌套采样。

于 2020-12-24T08:25:47.080 回答