找到已知数量的圆心,使固定距离内的点数最大化

机器算法验证 r 聚类 距离
2022-03-20 10:50:46

我有一组二维数据,我想在其中找到指定数量的圆心的中心(N) 最大化指定距离内的点总数 (R)。

例如,我有 10,000 个数据点(Xi,Yi)我想找到N=5在半径范围内捕获尽可能多点的圆R=10. 5个中心和10个半径是预先给出的,不是从数据中得出的。

圆圈内数据点的存在是二元非此即彼的命题。如果R=10,距离 11 个单位和 100 个单位的点的值没有差异,因为它们都 > 10。同样,对于在圆圈内,靠近中心与靠近边缘没有额外的价值。数据点要么在其中一个圆圈内,要么在圆圈外。

有没有很好的算法可以用来解决这个问题?这些似乎与聚类技术有关,但不是最小化平均距离,如果点在范围内,“距离”函数为 0R的任何一个N分,否则为 1。

我的偏好是在 R 中找到一种方法来做到这一点,但任何方法都会受到赞赏。

2个回答

这是一个变分k-means问题。只要假设它们相等,中心的半径就无关紧要。

链接:

它将圆的中心放在点概率最高的位置。

经典 K-means 程序:

  1. 将集群计数设置为 5
  2. 将每个点放在一个随机簇中
  3. 对于每个集群,计算平均位置
  4. 对于每个点,计算到每个新平均位置的距离
  5. 将成员资格与最近的集群相关联
  6. 重复直到完成(迭代、位置变化或其他错误度量)

选项:

  • 您可以在 3 之后使用一些欠放松,将平均位置缓慢地移向新位置。
  • 这是一个离散系统,因此不能完美收敛。有时确实如此,您可以在积分停止更改成员资格时结束,但有时它们只是稍微摆动一下。
  • 如果您正在编写自己的代码(正如大多数人应该做的那样),那么您可以使用上面的 POR k-means 作为起点,并对 EM 做一些变化,这些变化是由圆圈完全包围的点百分比通知的。

为什么 K-means 攻击这个问题:

  • 它相当于拟合高斯混合模型,其中组件的协方差相等。混合成分的中心将位于点的最高期望位置。恒定概率曲线将是圆形的。这是 EM 算法,因此它具有渐近收敛性。会员资格是硬的,而不是软的。
  • 我认为,如果等方差分量混合模型的基本假设合理地“接近”,无论这意味着什么,那么这种方法将适合。如果您只是随机分配点,则不太可能很好地拟合。

应该有一些“零膨胀泊松”的类似物,其中有一个非高斯分量可以拾取均匀分布。

如果您想“调整”您的模型并确信有足够的样本点,那么您可以使用 k-means 进行初始化,然后制作一个增强的 k-means 调整器,从竞争中移除圆半径之外的点。它会稍微扰乱您拥有的圈子,但考虑到数据,它可能会稍微提高性能。

有人可能有更好的形式算法,但这是一种蛮力方法(黑客?)。我会使用其中一种六边形分箱算法来计算二维直方图。就像hexbinR.

我会使用一个六边形大小,大致围绕你的半径 R 的圆,然后在顶部的 N 个 bin 上排序。如果您有N明显的远距离垃圾箱,那就太好了。现在一种方法是从顶部密度六边形的中心以 2*R 的比例(在 x 和 y 方向)在圆上局部移动。计算密度可以大致优化局部位置。这将解释六边形不是相对于固定原点的移动窗口这一事实。

如果所有顶部垃圾箱都在附近,则您必须采用一些更智能的方式在该附近移动您的圈子。

请注意,我可以想到几个极端情况,这种幼稚的策略会严重失败。然而,这只是一个起点。

同时,我希望有人有更好的算法。