海量数据索引与近似最近邻随记

最近邻问题(NN)

将次数看成向量,然后我们就可以比对向量的距离(欧式距离,余弦距离)。数据中会有一些异常点,这些异常点会导致结果的不稳定。

这种思想非常的不稳定,因为他只基于一个样本来做最后类别的判定。

K最近邻算法(NN => KNN)

少数服从多数。

距离准则

Jaccard:并不是每个人都会点击或者购买这么高强度的行为,因为购买是需要花钱的。我们能采集到的数据量比较的数据,实际上是用户的一些隐性的行为,比如他在这个页面停留了多久(时间阈值,比如30秒),超过阈值我就认为他有兴趣。它不像打分数据一样有严格的连续值,比如0-10这样一个严格的连续取值,它只有0,1(有或没有)的这种行为,看过或没看过,感兴趣或不感兴趣。Jaccard是算两个向量共同是1的部分或者共同是0的部分。

近似最近邻算法(KNN => ANN)

预先对数据做划分会面临一个问题,可能会划分错误,无论怎么划分都有可能将本身比较接近的一些点给划分开。所以他会损失掉一部分准确度,当然这部分损失在你的承受范围内的。在损失一些准确度的情况下,用一部分的空间去提升速度,实际上就是预先对数据做了划分和索引。这种操作在工业界并不是致命的,比如淘宝上的找相似或者找同款功能。

局部铭感度哈希

生成2进制串,保证距离特性

在高维空间比较接近的会落到同一个桶里面。

LSH第一步做哈希,即把这些图片都分完桶了,LSH映射完之后,他会拿到你指定的个数的,例如指定的是k,那它就会拿到kbit的串,意味着你掉到了kbit这样一个串的桶里面。第一步是映射,映射做的事情就是对原始给定的高维向量,做一个映射,得到映射拿到的桶ID号。

第二步检索,检索做的是,首先他会去找桶里面其他的数据,LSHash这个库检索回来的张数是不确定的。当新的数据过来时,通过第一步的映射,一样会拿到一个桶的编号,到这个桶里面看看有多少张图片,将这个桶的图片取出来,计算看满不满足要求,如果桶里的图片不够,LSHash保证不了个数,所以这个库解决不了这个问题。在不够的情况下,通过计算二进制串的汉明距离,将与他汉明距离为1的这些桶编号全都拿回来。如果汉明距离为1的不够怎么办,它再取汉明距离为2的桶。、

注意:你要小心的设置LSH 他映射到的空间维度,你要根据你的样本量大致的估一下或者做测试。

lSH的直观理解

像左图中的c点划分错误的情况下,你想让你的检索尽量的准确怎么办,这个事情是可以做的,需要付出的代价是你计算资源或时间的成本,可以采用多次划分的方式,然后根据这几个超平面的检索结果,取他们的并集。

LSH之相似网页查找

词(特征)的权重是指这个词对这句话的重要度(tf-idf)。乘以权重时,原来是1的位置直接乘以权重,原来是0的位置用-1乘以权重。

有用的理由:如果现在去掉灰色这个词,对最后的结果的正负性没有影响,只有你去掉那些词的时候对结果的正负性可能会有影响呢?是不是w权重比较大的词!!就是说,如果在原来的文本中剔除一些或者加入一些不是那么重要的字的话,那我认为没有影响,除非你剔除或加入额外分词重要的词,那这个时候可能就会认为这是不同的句子。

SimHash可用库

LSH常用库

ANN之K-means Tree

每个非叶子节点都是一个簇的聚类中心点。

如果你现在要找回Top 2T,如果不满足他会怎么做呢?他会回溯回去,回溯到上一级大团,然后去找聚类中心第二接近的,因为聚类中心他们总会有一个远近,所以他会对他们做一个排序(rank),拿出来那些比较接近的小的簇,然后再去求并。

ANN之K-D Tree

DT决策树,它在做的事情是去找一个波动最大的维度,为什么要找方差最大的维度?方差最大的维度,意味着这个维度上的熵比较大或者是他的不确定性比较高,他的信息增益比较大,也就是他能够给我带来减小不确定的可能性最大。

二维用线做切分

三维用面做切分,从三个维度中找哪个是波动/方差最大的。

假设现在要与(6,1)最接近的3个点,首先是第一个维度6,在7的左侧,然后顺着左侧往下走,紧接着第二个维度1,判断在4的左侧还是右侧?在左侧,找到了(2,3)是离她最接近的点。然后沿着(2,3)这个叶子节点回溯到父节点(5,4),计算加上父节点满不满足3个,不满足,父节点还有一侧(4,7),再计算加上这个节点满不满足3个,发现满足,就不再回溯到上一个父节点。

K-means Tree VS K-D Tree

工程经验之ANN库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL时间格式TIMESTAMP和DATETIME的区别

时区,timestamp会跟随设置的时区变化而变化,而datetime保存的是绝对值不会变化 自动更新,insert、update数据时,可以设置timestamp列自动以当前时间(CURRENT_TIMESTAMP)填充/更新 占用存储空间不同,timestamp储存占用…

python c 选择_C和Python,小白应该选择学习哪门语言?

首先,需要对两门语言进行初步认识,C语言是一门通用性的编程原因,为什么说通用呢?是因为它能够做很多低级、底层的处理,同时具有良好的跨平台性,C语言可以按照一定的标准在多种计算机平台上进行编译,包含嵌…

WaitForSingleObject的用法

WaitForSingleObject的用法 1.WaitForSingleObject 的用法 DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds ); 参数 hHandle 是一个事件的句柄,第二个参数 dwMilliseconds 是时间间隔。如果时间是有信…

pom.xml里发布和下载包

1.下载包 在<project>标签中 <repositories><repository><id>nexus</id><url>http://10.39.93.105:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots>&l…

智能云改-docker云迁移实战

本次安装的linux版本是centos7.4&#xff0c;docker安装不依赖任何环境&#xff0c;但是必须要连接网络&#xff0c;满足这一点就可以进行docker安装了。 一、安装&#xff1a; 1.删除就版本的docker输入命令&#xff1a;yum -y remove docker \docker-common \docker-selinux …

python词频统计代码_python统计词频

一、程序分析 &#xff08;1&#xff09;将文件读入缓冲区&#xff08;dst指文本文件存放路径&#xff0c;设置成形参&#xff0c;也可以不设&#xff0c;具体到函数里设置&#xff09; def process_file(dst): # 读文件到缓冲区try: # 打开文件 txtopen(dst,"r") ex…

关于wpf,datagrid,双向数据绑定用法解决方案

参考&#xff1a;http://www.myexception.cn/c-sharp/1446457.html 核心内容&#xff0c;在绑定数据的地方添加双向绑定&#xff1a; {Binding BB, ModeTwoWay,UpdateSourceTriggerPropertyChanged} 转载于:https://www.cnblogs.com/Mindy-hym/p/11431069.html

部署zookeeper分布式节点

用2台服务器&#xff0c;低资源&#xff0c;部署3个zookeeper分布式节点&#xff1a; 1.准备环境系统已经配置好了JAVA环境&#xff1b;下载某个版本的zookeeper压缩包&#xff0c;下载链接&#xff1a;http://apache.claz.org/zookeeper/zookeeper-3.5.3-beta/zookeeper-3.5.3…

Oracle的resouce、unlimited tablespace 及如何把数据导入不同的表空间

resouce是角色&#xff0c;unlimited tablespace是权限。 很多人在进行数据迁移时&#xff0c;希望把数据导入不同于原系统的表空间&#xff0c;在导入之后却往往发现&#xff0c;数据被导入了原表空间。本例举例说明解决这个问题:1.如果缺省的用户具有DBA权限那么导入时会按照…

MySQL导入导出远程访问命令

1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql3.导出一个数据库结…

.net开发是做什么的_软件开发是什么, 该怎么做?

软件开发是什么, 该怎么做&#xff1f;1 引子关于什么是软件开发存在很多观点&#xff0c;有的认为软件开发即服务&#xff0c;有的认为软件开发即产品&#xff0c;有的认为软件开发即平台&#xff0c;这些观点各有各的侧重点。这篇文章我们来学习和探讨一下软件开发。2 软件…

虚拟软驱影像文件制作程序下载路径:http://download.csdn.net/source/738137

通过这个程序&#xff0c;可制作一个在虚拟机上运行的Hello China启动软盘&#xff0c;而无需你的计算机具备物理软驱。 If you have not CSDN account or you very care the 3 points will be omitted if you download,please send mail to garryxinyahoo.com.cn, I will send…

css3属性

css3属性 transform动画 transform-origin&#xff1a;设置不动点&#xff0c;以这个点位移transform&#xff1a;translate(x,y):自身偏移量transform:scale(x,y)&#xff1a;缩放&#xff0c;当为负数的时候可以实现反转元素transform&#xff1a;roate&#xff08;xdeg&…

使用HTML5、CSS3和jQuery增强网站用户体验

记得几年前如果你需要添加一些互动元素到你的网站中用来改善用户体验&#xff1f;是不是立刻就想到了flash实现&#xff1f;这彷佛年代久远的事了。使用现在最流行的Web技术HTML5&#xff0c;CSS3和jQuery&#xff0c;同样也可以实现类似的用户体验。而且使用这些特性将会比使用…

python中loop函数_python + Django 的forloop功能试验讲解

一、forloop功能详解记录 遇到一个问题困扰了我好久&#xff0c;结果还是知识盲区造成的。下边记录一下。 通过return forloop可以返回前端循环中的索引值 二、forloop大概功能 forloop是Django模板中一个功能&#xff0c;主要是可以计算循环的对象的索引值&#xff08;大白话大…

帆软报表(finereport)JS实现cpt中详细单元格刷新

1.刷新固定单元格 setInterval(function(){ //获取第二行第 5 列 E2 单元格对象var _changeCell $("tr[tridx1]","div.content-container").children().eq(7);//获取 H2 单元格值var _changeVal _changeCell.text();//给表格赋值 if(_changeVal"…

[导入]源代码版本控制(二)

在VS6.0时代&#xff0c;VSS的版本是6.0&#xff0c;现在VS的版本都到2008了&#xff0c;VSS的版本目前是2005&#xff0c;这回以2005为例。安装就免了。数据库的创建&#xff1a;如果要在局域网内共享这个数据库&#xff0c;那还需要将刚才存放数据库的目录共享出去。为数据库…

javascript 控制弹出窗口

前言:经常上网的朋友可能会到过这样一些网站&#xff0c;一进入首页立刻会弹出一个窗口&#xff0c;或者按一个连接或按钮弹出&#xff0c;通常在这个窗口里会显示一些注意事项、版权信息 、警告、欢迎光顾之类的话或者作者想要特别提示的信息。其实制作这样的页面效果非常的容…

苏宁的Node.js实践:不低于Java的渲染性能、安全稳定迭代快

前端 Node.js 的使用场景大多集中在前端工具上&#xff0c;当前的前端主要把它定位为辅助。苏宁易购使用 Node.js 作为前后端分离的主要手段&#xff0c;经历了从技术引进到全面开花&#xff0c;从边缘功能到核心业务&#xff0c;从纷乱到稳定的过程。同时 Node.js 作为新引入的…

wpf: DataGridTextColumn 数字格式显示,编辑时取消格式(StringFormat)

参考&#xff1a;Format values in a Datagrid 参考&#xff1a;Remove stringFormat while editing cell in datagrid 使用 DataGridTemplateColumn 实现&#xff1a; <DataGridTemplateColumn Header"Cot (k€)"><DataGridTemplateColumn.CellTemplate&g…