LSH是我同学的名字,平时我会亲切的称呼他为离骚,老师好,左移(leftshift),小骚骚之类的,最近他又多了一个新的外号:局部敏感哈希(Locally sensitive hashing)。

  好了,废话不多说直接转入正题:

『写在前面』局部敏感哈希是一种NOIP禁用的算法(因为使用了随机数),若不感兴趣就无需往下看了。


『什么是LSH?』

  LSH就是局部敏感哈希,听着名字就知道和普通的哈希不一样,具体哪里不一样,就先吊吊你的胃口,稍后再说。先来了解LSH的各方面性能:

  首先先来思考一个问题:

如果给你一堆数字,然后查找一个数是否在这堆数中存在或者找到一个最相似的数字,你会怎么办?

  Answer:

1)首先,我们一定会想到线性查找,直白的来说,这简直就是最慢的一种方法,直接用数组存好后,一个一个来判断,当数据规模小的时候还好,但是,到了规模很大的时候,比如说有1亿个数据时,还能在规定的时间内找到吗?

2)其次,我们会想到二分查找,这种算法运用了分治的思想,将O(n)的时间复杂度降低到了O(log n)的时间复杂度,不过还需要排一次序,但是也费不了多少时间,这种方法相对来说是很可观的,但是有时还满足不了我们的需求。

3)这种想法也和 2)差不了多少,但是功能更强大,能够实现维护,插入,删除等一系列操作,没错,它就是二叉查找树,一种用树结构存储的方法,但是有时却很慢,放张图,细细体会吧~

比如说要查找4,那么就一定会全部遍历一遍,显然还是二分查找更快。

4)红黑树&其他平衡树:平衡树的种类很多,这些树能有效避免上图的情况,小编曾写过一篇红黑树博客,想看戳这里,里面也有详细的二叉查找树讲解。

5)好用的当然在后面——哈希算法,这种算法只要操作一遍数后,就可以做到O(1)的速度查找,但是问题却在于如何处理哈希冲突(有关哈希的讲解戳这里),适当的mod正是关键,但是往往我们处理不好这个问题,引起很多问题,比如2000和1000同时对10取模后将都是0,原本差别很大,但是现在没有了差别;再比如1008和1000对10取模后分别是8和0,原本差别不大,但是现在差别相对变大了很多,因此便请出了局部敏感哈希。

  局部敏感哈希最大的特点在于保留原来的特性,虽然不一定能完全避免哈希冲突,但是能比一般哈希保留的更好,保持最大可能的相似度。

『哈希思想及实现』小编表示这是一个高冷的话题,离我太遥远,等我学的更好时会自己写的;现在就先放上大牛的博客吧:局部敏感哈希。

【期外】 (一)关于LSH :局部敏感哈希算法的更多相关文章

  1. R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(二,textreuse介绍)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 上一篇(R语言实现︱局部敏感哈希算法(LSH) ...

  2. [Algorithm] 局部敏感哈希算法(Locality Sensitive Hashing)

    局部敏感哈希(Locality Sensitive Hashing,LSH)算法是我在前一段时间找工作时接触到的一种衡量文本相似度的算法.局部敏感哈希是近似最近邻搜索算法中最流行的一种,它有坚实的理论 ...

  3. 大规模异常滥用检测:基于局部敏感哈希算法——来自Uber Engineering的实践

    uber全球用户每天会产生500万条行程,保证数据的准确性至关重要.如果所有的数据都得到有效利用,t通过元数据和聚合的数据可以快速检测平台上的滥用行为,如垃圾邮件.虚假账户和付款欺诈等.放大正确的数据 ...

  4. 局部敏感哈希算法(Locality Sensitive Hashing)

    from:https://www.cnblogs.com/maybe2030/p/4953039.html 阅读目录 1. 基本思想 2. 局部敏感哈希LSH 3. 文档相似度计算 局部敏感哈希(Lo ...

  5. 从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论

    1. 引言 - 近似近邻搜索被提出所在的时代背景和挑战 0x1:从NN(Neighbor Search)说起 ANN的前身技术是NN(Neighbor Search),简单地说,最近邻检索就是根据数据 ...

  6. 海量数据挖掘MMDS week2: 局部敏感哈希Locality-Sensitive Hashing, LSH

    http://blog.csdn.net/pipisorry/article/details/48858661 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  7. 局部敏感哈希LSH

    之前介绍了Annoy,Annoy是一种高维空间寻找近似最近邻的算法(ANN)的一种,接下来再讨论一种ANN算法,LSH局部敏感哈希. LSH的基本思想是: 原始空间中相邻的数据点通过映射或投影变换后, ...

  8. 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍

    局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍 本文主要介绍一种用于海量高维数据的近似近期邻高速查找技术--局部敏感哈希(Locality-Sensitive ...

  9. 局部敏感哈希(Locality-Sensitive Hashing, LSH)

    本文主要介绍一种用于海量高维数据的近似最近邻快速查找技术——局部敏感哈希(Locality-Sensitive Hashing, LSH),内容包括了LSH的原理.LSH哈希函数集.以及LSH的一些参 ...

随机推荐

  1. 基于Python爬虫采集天气网实时信息

      相信小伙伴们都知道今冬以来范围最广.持续时间最长.影响最重的一场低温雨雪冰冻天气过程正在进行中.预计,今天安徽.江苏.浙江.湖北.湖南等地有暴雪,局地大暴雪,新增积雪深度4-8厘米,局地可达10- ...

  2. vue中引入jq的步骤--以及注意事项

  3. Mybatis——@MapperScan原理

    @MapperScan配置在@Configuration注解的类上会导入MapperScannerRegistrar类. 而MapperScannerRegistrar实现了ImportBeanDef ...

  4. 《闲扯Redis六》Redis五种数据类型之Hash型

    一.前言 Redis 提供了5种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要. ...

  5. 云上自动化 vs 云上编排

    1 摘要 本文介绍了为什么在一个好的公有云或私有云中必须要有一个编排系统来支持云上自动化,以及实现这个编排系统的困难和各家的努力.同时提供了一套实现编排系统的原型,它包括了理论分析及主体插件框架,还给 ...

  6. jmeter接口测试 -- Base64加密(函数助手添加自定义函数)

    图片转码 base64 致谢参考博客: https://www.cnblogs.com/qiaoyeye/p/7218770.html https://www.cnblogs.com/lasdaybg ...

  7. Go语言的跳跃表(SkipList)实现

    之所以会有这篇文章,是因为我在学习Go语言跳表代码实现的过程中,产生过一些困惑,但网上的大家都不喜欢写注释- - 我的代码注释一向是写的很全的,所以发出来供后来者学习参考. 本文假设你已经理解了跳表的 ...

  8. sed 指定行范围匹配

    sed -n '5,10{/pattern/p}' file sed是一个非交互性性文本编辑器,它编辑文件或标准输入 导出的文件拷贝.标准输入可能是来自键盘.文件重定向.字符串或变量,或者是一个管道文 ...

  9. 图解 JVM 核心知识点(面试版)

    一.基本概念 1.1 OpenJDK 自 1996 年 JDK 1.0 发布以来,Sun 公司在大版本上发行了 JDK 1.1.JDK 1.2.JDK 1.3.JDK 1.4.JDK 5,JDK 6 ...

  10. Python os.lchmod() 方法

    概述 os.lchmod() 方法用于修改连接文件权限.高佣联盟 www.cgewang.com 只支持在 Unix 下使用. 语法 lchmod()方法语法格式如下: os.lchmod(path, ...