在向量集中找到向量空间的代表?

计算科学 优化 Python 向量
2021-12-14 14:27:07

假设我有一个多维向量空间X, 和一个集合n矢量图{xi}i=1nX,它们在X. 我正在寻找m<<n这些xi是很好的代表X,或者换句话说,它们彼此之间的距离大致相等。

我怎样才能找到这些代表?我可以使用什么算法(希望有可用的 Python 实现)?K-Medoids 会是一个不错的选择吗?

4个回答

您可以将每个向量视为线性空间中的一个点。因此,我们可以使用简单的四叉树/八叉树算法将您的点映射到盒子中,将“附近”向量分配给相同或相邻的盒子。n总向量向量到框映射成本O(nlogn),一旦完成,您可以选择m框并选择最接近框质心的向量以获得您的“多样化”向量集。

听起来您想在数据密集的地方精简数据,并了解数据点汇总的数据的支持。如果你没有太多的点,你可以生成一个距离矩阵,并用最近的邻居修剪这些点。(我不认为这种方法有名字。)

否则,如果您试图找到极值点,那么原型分析可能是一个更好的方向。

将集群中心初始化为您的子集VX, 在哪里V={xi}. 然后运行几个 K-mediods 迭代。之后,您会看到某些向量会更接近,本质上是试图表示相似的峰值。然后可以合并它们。

另一种方法是mean-shift algorithm,其中模式正在更新(我认为你想找到模式)。您从过度聚类和最能代表模式的动态数量的聚类(已发现)开始。对于像您这样的离散数据,确实存在中间体变化。

在聚类方向上的另一种选择可能是 k-Maxoids 聚类:

另一个答案可能是(增长的)神经毒气