一.摘要

  最紧邻检索:一种树基于树结构,一种是基于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这么大才可以,显然这是不能令人满意的。

基于Hash算法的高维数据的最近邻检索相关推荐

  1. snm算法_基于SNM算法的大数据量中文商品清洗方法

    基于 SNM 算法的大数据量中文商品清洗方法 ∗ 张苗苗 苏 勇 [摘 要] 摘 要 SNM 算法即邻近排序算法,是英文数据清洗最常用的算法[ 1 ] . 目前为止,因为中英文语义的差异等一些原因,中 ...

  2. snm算法_基于SNM算法的大数据量中文地址清洗方法-计算机工程与应用.PDF

    基于SNM算法的大数据量中文地址清洗方法-计算机工程与应用 108 2014 ,50(5 ) Computer Engineering and Applications 计算机工程与应用 基于SNM ...

  3. 写一篇基于SPEA2算法的高维多目标救灾物资分配的论文

    很抱歉, 我是一个自然语言处理模型,不能写论文.我可以为您提供有关 SPEA2 算法及其在高维多目标救灾物资分配中的应用的一些信息. SPEA2(Strength Pareto Evolutionar ...

  4. 一致性hash算法使用

    一.概述 1.我们的memcache客户端(这里我看的spymemcache的源码),使用了一致性hash算法ketama进行数据存储节点的选择.与常规的hash算法思路不同,只是对我们要存储数据的k ...

  5. 时间窗口算法用matlab,一种基于动态规划算法的时间窗口相关的参与者选择方法与流程...

    本发明涉及一种移动群智感知中时间窗口相关的参与者选择方法,特别地,涉及一种基于动态规划算法的时间窗口相关的参与者选择方法. 背景技术: 在移动群智感知网络中,智能设备中嵌入了麦克风.相机.温度传感器. ...

  6. hash oracle 分表_一致性Hash算法在数据库分表中的实践

    最近有一个项目,其中某个功能单表数据在可预估的未来达到了亿级,初步估算在90亿左右.与同事详细讨论后,决定采用一致性Hash算法来完成数据库的自动扩容和数据迁移.整个程序细节由我同事完成,我只是将其理 ...

  7. 高维数据降维(机器学习)

    目录 一.实验内容 二.实验过程 1.算法思想 2.算法原理 3.算法分析 三.源程序代码 四.运行结果及分析 五.实验总结 一.实验内容 熟知高维数据降维的概念和基本算法思想: 掌握高维数据降维算法 ...

  8. 分布式集群架构场景化解决⽅案(⼀致性Hash算法)

    什么是分布式和集群以及实现 主要内容 ⼀致性Hash算法 集群时钟同步配置 分布式ID解决⽅案 分布式调度问题 Session共享问题 分布式和集群是不⼀样的,分布式⼀定是集群,但是集群不⼀定是分布式 ...

  9. 余弦相似度 高维数据_海量高维数据与近似最近邻

    在实际工程当中,我们常常会遇到海量的数据,那作为一个数据挖掘准从业人员,如何从海量的数据当中挖掘出他们数据之间的关系和规律就显得尤为重要了. 今天我要讲的时海量高维数据及其近似最近邻方案. K-近邻算 ...

最新文章

  1. 复制构造函数(拷贝构造函数)
  2. 博客园是个大金矿,管理员不挖掘有些可惜:给博客园提一些双赢的建议
  3. 实例29:python
  4. linux应用对物理内存映射,深入理解Linux内存映射机制 (1)
  5. 一条汇编指令是如何在计算机的硬件中进行执行的
  6. JavaScript-传值(引用类型,基本类型)
  7. Tableau新手入门教程
  8. 安卓手机屏幕投射电脑能同步声音
  9. Linux 查看日志命令
  10. Scrum敏捷开发框架
  11. Windows server 2012 R2 服务器强制删除文件夹
  12. pip install
  13. 一个app项目如何从想法一步一步落地?有哪些必要的流程?
  14. 距离拿下千亿市场,AR眼镜还缺什么?
  15. 怎么架设魔兽世界服务器?
  16. Win10怎么关闭屏幕保护?Windows10禁用屏保步骤
  17. html table设置行高_单元格的行高怎么设置 html语言怎么设置设置表格行高?
  18. VSCode删除多余空行快捷方法
  19. H3C 路由器交换机模拟器
  20. OpenVINO示例介绍

热门文章

  1. QTP11补丁下载 – 完美支持FIREFOX 9~10
  2. 情境学习理论视野中的成人学习
  3. Mybatis常见的面试题总结
  4. 苹果手机如何恢复联系人呢?快速的恢复
  5. [LUOGU] P2330 [SCOI2005]繁忙的都市
  6. 鸿海拟收购韩国家电企业东洋美吉 价格或达4.5亿美元
  7. Redis主从配置及通过Keepalived实现Redis自动切换高可用
  8. 前端应该了解的颜色的寓意
  9. C#中提供的精准测试程序运行时间的类Stopwatch
  10. centos6.7上使用nginx实现负载均衡!