FNN:利用均值和方差构造欧式距离下界
2017-03-25 14:58
423 查看
在做NN算法的时候遇到了一个有意思的论文。通过向量自身的均值和方差构建的高维点间的距离下界。实现了快速的线性NN搜索。
文中发现的这一下界公式觉得很有意思,特来详细介绍一下。
其利用的手段常常就是构造距离下界(lower bound, LB)。具体见如下公式:
dist(xc,q)<LB(x,q)≤dist(x,q)
其中dist(⋅)代表两个点间的欧式距离。q是查询点,xc是当前的近邻候选点(亦即目前为止找到的距离q最近的点),x是当前遍历到的数据点。LB(x,q)表示x,q两点间的距离下界,距离下界一定是小于等于原始距离。
过滤的原理是:如果x,q两点间的距离下界大于当前的近邻半径(即近邻候选点到q的距离),那么x就不再可能是近邻,可以被排除。
这里,大家PK的就是LB的质量。好的LB就是要用更少的计算量实现更大程度地接近原始距离。
LB(x,y)=d⋅dist2(πx,πy)
其中π是一个二维向量,πx=(μx,δx)
文中发现的这一下界公式觉得很有意思,特来详细介绍一下。
背景
高维向量间的欧式距离计算是十分昂贵的。在高维欧式空间进行近邻搜索,最差的算法是线性扫描,一个一个计算欧氏距离,来筛选。快速NN算法的目的是保持线性扫描的性质不变,但是利用一些过滤机制快速过滤掉一些质量较差的邻居,最终昂贵的计算只留给一些无法区分的邻居。其利用的手段常常就是构造距离下界(lower bound, LB)。具体见如下公式:
dist(xc,q)<LB(x,q)≤dist(x,q)
其中dist(⋅)代表两个点间的欧式距离。q是查询点,xc是当前的近邻候选点(亦即目前为止找到的距离q最近的点),x是当前遍历到的数据点。LB(x,q)表示x,q两点间的距离下界,距离下界一定是小于等于原始距离。
过滤的原理是:如果x,q两点间的距离下界大于当前的近邻半径(即近邻候选点到q的距离),那么x就不再可能是近邻,可以被排除。
这里,大家PK的就是LB的质量。好的LB就是要用更少的计算量实现更大程度地接近原始距离。
基于均值和标准差的LB
论文[1]构造了如下一种下界:LB(x,y)=d⋅dist2(πx,πy)
其中π是一个二维向量,πx=(μx,δx)
相关文章推荐
- 利用递推快速计算方差和均值
- 利用matlab求图像均值和方差的几种方法
- 利用matlab求图像均值和方差的几种方法
- C#利用Random得随机数求均值、方差、正态分布的方法
- MATLAB中均值、方差、均方差的计算方法
- Scala 深入浅出实战经典 第81讲:Scala中List的构造是的类型约束逆变、协变、下界详解
- Scala 深入浅出实战经典 第81讲:Scala中List的构造是的类型约束逆变、协变、下界详解
- POJ 1703 Find them, Catch them 利用并查集的长度关系(我现在不敢说是不是距离了)
- Access利用%5c构造一级目录暴库
- 两个单位向量的 夹角余弦 加上 欧式距离平方的一半 等于 1
- 概率论:均值、方差与协方差矩阵
- Matlab - 求方差-均值-均方差-协方差的函数
- 利用JS实现的根据经纬度计算地球上两点之间的距离
- 利用Java反射机制输出一个类的内部构造
- 统计学基础知识-欧式距离与其他
- 利用connect by rownum构造日期列表
- 利用语法树,构造回文
- 反距离权重法生成DEM(利用KD-tree实现KNN算法)
- (原)欧式距离变换
- DPDK之(二)——如何利用 mTCP 和 DPDK 构造千万百万并发TCP连接