最远点采样(Farthest Point Sampling)

简介

以下我们将最远点采样(Farthest Point Sampling)简记为FPS。这种采样方法我觉得非常有趣。个人觉得比随机采样得到的数据能够表现更多的“轮廓性”,其次用的数据集也不像随机采样那么多。首先我们来介绍FPS的算法原理。

算法原理

1. 点与集合的距离

假设 S = { x 1 , ⋯   , x N } ⊂ R n S=\left\{x_1,\cdots,x_N\right\}\subset \mathbb{R}^n S={x1,,xN}Rn 中的一个有限点集合。一般情况,这里的 n n n等于1,2, 3。点与点的距离我们知道可以用坐标来表示。比如假设 a = ( a 1 , ⋯   , a n ) , b = ( b 1 , ⋯   , b n ) a=(a_1,\cdots,a_n),b=(b_1,\cdots,b_n) a=(a1,,an),b=(b1,,bn) R n \mathbb{R}^n Rn中的两个点,则 a , b a,b a,b之间的距离 d ( a , b ) d(a,b) d(a,b)可以定义成
d ( a , b ) = ( a 1 − b 1 ) 2 + ⋯ + ( a n − b n ) 2 d(a,b)=\sqrt{(a_1-b_1)^2+\cdots+(a_n-b_n)^2} d(a,b)=(a1b1)2++(anbn)2
类似地,我们可以定义点与集合的距离。假设点的坐标为 y = ( y 1 , ⋯   , y n ) y=(y_1,\cdots,y_n) y=(y1,,yn),则 y y y S S S的距离 d ( y , S ) d(y,S) d(y,S)可以定义成
d ( y , S ) = min ⁡ x i ∈ S d ( y , x i ) d(y,S)=\min_{x_i\in S}d(y,x_i) d(y,S)=xiSmind(y,xi)这其实也很好理解,说白了点到集合的距离就是这个点到这个集合里的点的最短的那个距离。这个这个定义不仅仅局限于有限集合,当 S S S 是一个无限集合时,只需把上面的 min ⁡ \min min改成 inf ⁡ \inf inf即可。比如当S是直线时候,点到直线的距离就被定义成所作垂线段的距离。

2. FPS算法步骤

FPS的目的是希望在有限集合 S S S里面找一个具有m个元素的子集合 { x i 0 , x i 1 , ⋯   , x i m } \left\{x_{i_0},x_{i_1},\cdots,x_{i_m}\right\} {xi0,xi1,,xim}使得 x i j x_{i_j} xij到集合 { x i 0 , x i 1 , ⋯   , x i j − 1 } \left\{x_{i_0},x_{i_1},\cdots,x_{i_{j-1}}\right\} {xi0,xi1,,xij1}的距离最大。这里 x i 0 x_{i_0} xi0可以随意。

  1. 随机取一个点 x i 0 x_{i_0} xi0.
  2. S − x i 0 S-x_{i_0} Sxi0这个集合里选取一点 x i 1 x_{i_1} xi1使得 d ( x i 1 , x i 0 ) d(x_{i_1},x_{i_0}) d(xi1,xi0)达到最大。
  3. 我们已经选好了 x i 0 , x i 1 x_{i_0},x_{i_1} xi0,xi1,下面我们开始选择 x i 2 x_{i_2} xi2.记 S 1 = { x i 0 , x i 1 } S_1=\left\{x_{i_0},x_{i_1}\right\} S1={xi0,xi1} x i 2 x_{i_2} xi2定义成使得 d ( x , S 1 ) d(x,S_1) d(x,S1)最大的 S − S 1 S-S_1 SS1中的点。
  4. 以此类推,我们可以定义 x i 3 , ⋯   , x i m x_{i_3},\cdots,x_{i_m} xi3,,xim.
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值