如何以常规密度选择点的子集?更正式地说,
给定
- 一组不规则间隔的点A,
- 距离度量
dist
(例如,欧几里得距离), - 和目标密度d,
如何选择满足以下条件的最小子集B ?
- 对于A中的每个点x,
- B中有一个点y
- 满足
dist(x,y) <= d
我目前最好的镜头是
- 从A本身开始
- 选出最接近(或特别接近)的几个点
- 随机排除其中之一
- 只要条件成立就重复
并重复整个过程以获得最佳运气。但是有更好的方法吗?
我试图用 280,000 个 18-D 点来做到这一点,但我的问题是一般策略。所以我也想知道如何用二维点来做。而且我真的不需要最小子集的保证。欢迎任何有用的方法。谢谢你。
自下而上的方法
- 选择一个随机点
- 选择未选择
y
的min(d(x,y) for x in selected)
最大的 - 继续!
我将其称为自下而上,我最初发布的自上而下。这在开始时要快得多,所以对于稀疏采样,这应该更好吗?
性能指标
如果不需要保证最优性,我认为这两个指标可能有用:
- 覆盖半径:
max {y in unselected} min(d(x,y) for x in selected)
- 经济半径:
min {y in selected != x} min(d(x,y) for x in selected)
RC 是允许的最小值d,这两者之间没有绝对的不等式。但RC <= RE
更可取。
我的小方法
为了稍微演示一下“性能测量”,我生成了 256 个二维点,这些点均匀分布或按标准正态分布。然后我用他们尝试了我的自上而下和自下而上的方法。这就是我得到的:
RC 为红色,RE 为蓝色。X 轴是选定点的数量。你认为自下而上可以一样好吗?我是这么看动画的,但似乎自上而下的效果要好得多(看看稀疏区域)。尽管如此,考虑到它的速度要快得多,这并不算太可怕。
在这里,我收拾了所有东西。
http://www.filehosting.org/file/details/352267/density_sampling.tar.gz