【期外】 (一)关于LSH :局部敏感哈希算法
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 :局部敏感哈希算法的更多相关文章
- R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(二,textreuse介绍)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 上一篇(R语言实现︱局部敏感哈希算法(LSH) ...
- [Algorithm] 局部敏感哈希算法(Locality Sensitive Hashing)
局部敏感哈希(Locality Sensitive Hashing,LSH)算法是我在前一段时间找工作时接触到的一种衡量文本相似度的算法.局部敏感哈希是近似最近邻搜索算法中最流行的一种,它有坚实的理论 ...
- 大规模异常滥用检测:基于局部敏感哈希算法——来自Uber Engineering的实践
uber全球用户每天会产生500万条行程,保证数据的准确性至关重要.如果所有的数据都得到有效利用,t通过元数据和聚合的数据可以快速检测平台上的滥用行为,如垃圾邮件.虚假账户和付款欺诈等.放大正确的数据 ...
- 局部敏感哈希算法(Locality Sensitive Hashing)
from:https://www.cnblogs.com/maybe2030/p/4953039.html 阅读目录 1. 基本思想 2. 局部敏感哈希LSH 3. 文档相似度计算 局部敏感哈希(Lo ...
- 从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论
1. 引言 - 近似近邻搜索被提出所在的时代背景和挑战 0x1:从NN(Neighbor Search)说起 ANN的前身技术是NN(Neighbor Search),简单地说,最近邻检索就是根据数据 ...
- 海量数据挖掘MMDS week2: 局部敏感哈希Locality-Sensitive Hashing, LSH
http://blog.csdn.net/pipisorry/article/details/48858661 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 局部敏感哈希LSH
之前介绍了Annoy,Annoy是一种高维空间寻找近似最近邻的算法(ANN)的一种,接下来再讨论一种ANN算法,LSH局部敏感哈希. LSH的基本思想是: 原始空间中相邻的数据点通过映射或投影变换后, ...
- 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍
局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍 本文主要介绍一种用于海量高维数据的近似近期邻高速查找技术--局部敏感哈希(Locality-Sensitive ...
- 局部敏感哈希(Locality-Sensitive Hashing, LSH)
本文主要介绍一种用于海量高维数据的近似最近邻快速查找技术——局部敏感哈希(Locality-Sensitive Hashing, LSH),内容包括了LSH的原理.LSH哈希函数集.以及LSH的一些参 ...
随机推荐
- 高阶Pandas知识图谱-《利用Python进行数据分析》
所有内容整理自<利用Python进行数据分析>,使用MindMaster Pro 7.3制作,emmx格式,源文件已经上传Github,需要的同学转左上角自行下载或者右击保存图片. 其他章 ...
- [spring] -- bean作用域跟生命周期篇
作用域 singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的. prototype : 每次请求都会创建一个新的 bean 实例. request : 每一次HT ...
- 题解 洛谷 P2179 【[NOI2012]骑行川藏】
题意为在满足\(\sum\limits_{i=1}^nk_i(v_i-v_i^\prime)^2s_i\leqslant E_U\)的条件下最小化\(\sum\limits_{i=1}^n\frac{ ...
- 推荐IT经理/产品经理,常用工具和网站
一. 常用必备工具 1)文档工具 石墨文档,在线协作文档工具 https://shimo.im/ 2) 表格工具 麦客,在线问卷调查工具 http://www.mikecrm.com/ 3)脑图工具 ...
- linux实现shell脚本监控磁盘内存达到阈值时清理catalina.out日志
想在服务器上写一个shell脚本,在磁盘使用率达到80%时,自动清理掉一些没有用的日志文件,根据这个想法,在生产环境上写了一个以下脚本,按照该流程,可实现在linux环境做一个定时任务来执行shell ...
- 使用jwt进行token认证
简单说明:最近在搞权限这一块的东西,需要用到jwt进行token认证,才有了如下的demo演示 具体细节可以看gitbug,噗,不是bug是hub github地址:https://github ...
- 高度塌陷与BFC
高度塌陷的产生条件 子元素浮动,脱离文档流 子元素绝对定位或固定定位,脱离文档流 定位产生的高度塌陷只能通过加固定高度或更换其他方案解决塌陷,本文主要讨论浮动产生塌陷的解决方法. 高度塌陷的解决方法 ...
- SpringMV学习之拦截器的简单使用
一.拦截器介绍 我们知道SpringMVC的拦截器(Interceptor)非常重要,尤其在Web应用中使用非常广泛,其功能类似于过滤器,用于拦截用户请求并作相应的处理.我们使用比较多的场景是系统登陆 ...
- PHP fgetc() 函数
定义和用法 fgetc() 函数从打开的文件中返回一个单一的字符. 语法 fgetc(file) 参数 描述 file 必需.规定要检查的文件. 提示和注释 注释:该函数处理大文件非常缓慢,所以它不用 ...
- PHP strstr() 函数
实例 查找 "world" 在 "Hello world!" 中是否存在,如果是,返回该字符串及后面剩余部分: <?php echo strstr(&qu ...
