假设我有一个多维向量空间, 和一个集合矢量图,它们在. 我正在寻找这些是很好的代表,或者换句话说,它们彼此之间的距离大致相等。
我怎样才能找到这些代表?我可以使用什么算法(希望有可用的 Python 实现)?K-Medoids 会是一个不错的选择吗?
假设我有一个多维向量空间, 和一个集合矢量图,它们在. 我正在寻找这些是很好的代表,或者换句话说,它们彼此之间的距离大致相等。
我怎样才能找到这些代表?我可以使用什么算法(希望有可用的 Python 实现)?K-Medoids 会是一个不错的选择吗?
您可以将每个向量视为线性空间中的一个点。因此,我们可以使用简单的四叉树/八叉树算法将您的点映射到盒子中,将“附近”向量分配给相同或相邻的盒子。和总向量向量到框映射成本,一旦完成,您可以选择框并选择最接近框质心的向量以获得您的“多样化”向量集。
听起来您想在数据密集的地方精简数据,并了解数据点汇总的数据的支持。如果你没有太多的点,你可以生成一个距离矩阵,并用最近的邻居修剪这些点。(我不认为这种方法有名字。)
否则,如果您试图找到极值点,那么原型分析可能是一个更好的方向。
将集群中心初始化为您的子集, 在哪里. 然后运行几个 K-mediods 迭代。之后,您会看到某些向量会更接近,本质上是试图表示相似的峰值。然后可以合并它们。
另一种方法是mean-shift algorithm,其中模式正在更新(我认为你想找到模式)。您从过度聚类和最能代表模式的动态数量的聚类(已发现)开始。对于像您这样的离散数据,确实存在中间体变化。
在聚类方向上的另一种选择可能是 k-Maxoids 聚类:
另一个答案可能是(增长的)神经毒气。