• 基于Hash算法的高维数据的最近邻检索


    一.摘要

      最紧邻检索:一种树基于树结构,一种是基于hash
      a.随机投影算法,需要产生很多哈希表,才能提高性能。
      b.基于学习的哈希算法在哈希编码较短时候性能不错,但是增加编码长度并不能显著提高性能。

      随机投影:实际上就是随机的,实际上需要挖掘使用数据的内部结构,结合最大熵原理。
      基于密度的哈希就是依据数据分布产生最合理的投影。
      数据稀疏:稀疏编码+ 压缩感知

      GIST1M数据集2.55G,这个是专门做最近邻检索的。

    二.绪论

    2.1 课题背景

      最近邻检索的主要问题是如何建立高效索引。
      数据集是n*d。
      d = 1,先排序,然后二分查找,空间复杂度是o(n),时间复杂度是o(nlgn);各种平衡树也行。
      d = 2时,用voronoi图(泰森多边形或者狄利克雷图),这个我刚开始看k-means得时候找到过,来自于GIS的技术。时空同上。
      d>3时候找不到空间线性、时间对数的算法了。
      d<20时,利用KD树(1975年提出)。

      提出近似(最优解的宇普西龙邻域内的点都可以返回)的概念,这个理念的思想是许多情况下近似解和最优解差别不大。

      k分类算法,近朱者赤、近墨者黑,判断一个点属于哪一类就看他周围的点多数属于哪一类。如果k太小,容易受噪声点影响,k太大,会因为很远的点包含进来而影响算法性能。
    k-means算法的一个计算瓶颈是为每个数据点找最近类心。

    2.2 算法基础

      主流的哈希算法可以看做是降维,因此先介绍降维算法。
      降维包括特征提取和特征选择。特征提取是选择某几维,比如研究基因对XXX的影响,就研究某几个基因就行了,感觉有点像物理实验中的控制变量法。
      特征提取是构造了原有的特征,比如随机投影、PCA,LDA(线性判别(discriminant)分析)。这些降维算法都可以转换为哈希算法。
      随机投影基于Johnson-Lindenstrauss定理。

      笔者注:Johnson–Lindenstrauss 定理是我在今晚的一个学术报告里听说的一个非常令人惊讶的定理。简单说来,它的结论是这样的:一个一百万维空间里的随便一万个点,一定可以几乎被装进一个几十维的子空间里!

      严格说来是这样:在 M 维空间中的 N 个点,几乎总是被包含在一个 D 维子空间里的。这里的 D 按照直觉应当等于 N 的阶,可是实际上我们只需要让 D 是 log(N) 的阶就可以了。这里「几乎被包含在」的确切含义是它在这个子空间上的投影几乎是等距的(允许有一个 ε 的误差,而常数 D/log(N) 就依赖于 ε)。很显然,这件事情在高维数据降维时有极重要的意义。

      这个定理的证明很初等。它依赖于这样的一个基本概率事实:一个随机的 M 维单位向量到一个随机的 D 维子空间上的投影的长度几乎一定约等于 D/M。这件事情本身也有点不同寻常,虽然它可以通过简单的计算来证实。这是概率论计算中常常出现的由于高维度而导致的反直觉现象的一例。

      这让我想起另一个高维度导致的悖论,是我在学大数定律时了解到的。在 M 维单位立方体中随机取一个点,当 M 充分大时根据大数定理容易算出这个点到立方体中心的距离几乎一定等于 √(M/3)/2。于是这就说明 M 维实心单位立方体几乎就完全位于一个半径为 √(M/3)/2 的球壳上。这里没有任何捣鬼之处,事实上就是如此。

      http://imaginary.farmostwood.net/573.html

      PCA如果映射为一个点的话,那么丢失休息,所以,映射后的数据要方差最大,保证数据比较离散,尽可能地保留多的信息。

      LDA是有监督的线性降维方法,和PCA不同,他要求尽可能使数据被容易区分,即同一类数据点尽可能拷进,不同类的尽可能分散。
      还有就是保留局部投影,这就是谱方法。

    三.相关工作

      在实际应用中,我们往往不一定需要用到真实的最近邻,许多时候我们都只需要在很短的时间内得到近似的最近邻即可,这也给了研究学者一个新的研究的方向。
      超平面分割的哈希随着编码长度的增加性能并不能显著增加。
      迭代量化哈希能提升二值哈希的均衡性,从而提升性能。
      谱哈希挖掘数据的内部结构。
      球哈希能显著增加准确度。

    四.密度哈希算法

      先用k-means算法对数据分组,不过大量数据下k-means运行时间很长,所以需要让算法P次后停止迭代(P=5)。假设产生了k个组,那么就以每个组内的中心点作为投影向量。

      www.zjucadcg.cn/dengcai/Data/DSH.html
      www.zjucadcg.cn/dengcai/Data/NNSData.html
      www.zjucadcg.cn/dengcai/Data/DimensionReduction.html

    五.基于压缩感知的哈希算法

      据Jonson Lindenstrauss定理为了使一个含有个点的数据点集在投影到低维空间后依然很好地保持着点对距离,我们必须构建大约O(ln n/ε^2)个随机投影向量,其中ε(Epsilon)参数是距离估计的相对误差。

      在这一章,针对前面所提到的目前主流哈希算法所存在的问题,我们将提出一个新的哈希算法:基于压缩感知的哈希算法(这个算法结合了稀疏编码技术和压缩感知理论。这个算法的主要思想是基于压缩感知理论中的一个重要的性质受限等距性质。这个性质强调了对于任意一个稀疏的向量,随机投影保持这些高维稀疏向量之间的欧氏距离的概率都是非常大的。

      根据J-L定理,我们可以想到的最直接的方法就是把高维数据投影到低维空间,然后用一些高效的能在低维空间快速检索最近邻的方法(如kd-tree树)来处理查询。这个方法的主要问题在于为了使得每个点的最近邻都能以很大的概率在检索的过程中被返回,需要K这么大才可以,显然这是不能令人满意的。

  • 相关阅读:
    NOI2005 维护数列(splay)
    傻子代码行列式
    Matrix-tree定理 spoj HIGH
    Boruvka算法求最小生成树
    Codeforces 521 E cycling city
    欧拉回路 uoj117
    BZOJ1146: [CTSC2008]网络管理Network
    我的OI生涯番外篇
    主席树+dfs SPOJ BZOJ2588 Count on a tree
    动态主席树 优化版
  • 原文地址:https://www.cnblogs.com/hxsyl/p/4618871.html
Copyright © 2020-2023  润新知