首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏得物技术

    近邻搜索算法浅析

    简介 随着深度学习的发展和普及,很多非结构数据被表示为高维向量,并通过近邻搜索来查找,实现了多种场景的检索需求,如人脸识别、图片搜索、商品的推荐搜索等。 另一方面随着互联网技术的发展及5G技术的普及,产生的数据呈爆发式增长,如何在海量数据中精准高效的完成搜索成为一个研究热点,各路前辈专家提出了不同的算法,今天我们就简单聊下当前比较常见的近邻搜索算法。 实现 当前有比较成熟的库实现了各种主流的近邻搜索算法,在项目中可以通过这些基础库来构建对应的近邻搜索服务,其中使用比较广泛的是faiss库,由Fackbook开源,在支持不同算法的同时,也支持在超大规模数据集上构建 k近邻搜索以及支持GPU来加速索引构建和查询,同时社区活跃,在考虑到性能和可维护性,faiss库是构建近邻检索服务的比较好的选择。 总结 本文展示了当前比较常见的几种近邻搜索算法,并简单分析了各算法的原理;随着深度学习的不断发展,不同场景对近邻搜索的需求越来越多,必定会有新的算法不断地涌现,每种算法有它适合的场景,在选择不同算法时需要结合业务的需求

    3.4K104编辑于 2022-08-03
  • 来自专栏AI科技时讯

    近邻搜索|Nearest neighbor search

    [7] 邻近邻域图中的贪婪搜索 近似图方法(例如 HNSW [8])被认为是近似最近邻搜索的当前最新技术。 **在集合S中搜索查询q的最近邻采用在图中搜索顶点的形式 G(V,E) 。 变体 NNS 问题有许多变体,其中最著名的两个是*k-*最近邻搜索和ε-近似最近邻搜索。 k-最近邻 k-最近邻搜索识别查询的前k 个最近邻。 支持近似最近邻搜索的算法包括局部敏感散列、最佳 bin 优先和基于平衡框分解树的搜索。 当然,这可以通过对每个点运行一次最近邻搜索来实现,但改进的策略将是一种利用这N 个查询之间的信息冗余来产生更有效搜索的算法。

    1.7K50编辑于 2023-09-01
  • 高效图搜索:提升最近邻查找速度

    更高效的近似最近邻搜索新方法将基于图的搜索速度提升20%至60%,且不依赖特定的图构建方法。 作者:Hsiang-Fu Yu 2023年6月6日 阅读时长:4分钟会议信息The Web Conference 2023相关论文FINGER: 用于基于图的近似最近邻搜索的快速推理技术正文当今许多机器学习应用都涉及最近邻搜索 搜索算法遍历该图,并定期更新当前已遇到的离查询最近的点列表。在一篇发表于今年Web Conference的论文中,我们描述了一种新技术,可大幅提升基于图的最近邻搜索效率。 据此,我们提出了一种非常高效地计算近似距离的方法,并表明它能将近似最近邻搜索所需的时间减少20%到60%。 基于图的搜索广义上讲,近似k最近邻搜索算法——即寻找离查询向量最近的k个邻居——分为三类:量化方法、空间划分方法和基于图的方法。在多个基准数据集上,基于图的方法迄今表现出了最佳性能。

    9610编辑于 2026-04-07
  • 来自专栏AI科技时讯

    图像搜索|高维空间最近邻逼近搜索算法

    业务场景 上一次介绍图像搜索的基本原理,现在记录下使用的数据包的问题。 NMSLIB 项目地址:https://github.com/nmslib/nmslib 非度量空间库(NMSLIB)是一种高效的跨平台相似性搜索库和用于评估相似性搜索方法的工具包。 详细参数 关于参数的设置可以见 https://github.com/nmslib/nmslib/blob/master/python_bindings/parameters.md 参考 高维空间最近邻逼近搜索算法评测 spm=a2c4e.11153940.blogcont697621.17.3ef936ddMFh7on); nmslib文档(https://benfred.github.io/nmslib/? spm=a2c4e.11153940.blogcont697621.18.3ef936ddMFh7on)

    1.7K20发布于 2019-08-15
  • 图近似最近邻搜索效率提升新方法

    更高效的近似最近邻搜索当今许多机器学习应用都涉及最近邻搜索:数据被表示为高维空间中的点;查询(如图片或文本字符串)被嵌入该空间;检索与查询最接近的数据点作为候选解决方案。 然而,计算查询与数据集中每个点之间的距离通常耗时过长,因此模型构建者转而使用近似最近邻搜索技术。其中最流行的是基于图的近似方法,即将数据点组织成图结构,搜索算法遍历图并持续更新遇到的最近邻点列表。 因此,提出了一种高效计算近似距离的方法,显示可将近似最近邻搜索所需时间减少20%至60%。 基于图的搜索大致来说,近似k最近邻搜索算法(寻找最接近查询向量的k个邻居)分为三类:量化方法、空间分区方法和基于图的方法。在多个基准数据集上,基于图的方法目前表现最佳。 转而专注于一种适用于所有图构建方法的技术,因为它提高了搜索过程本身的效率。该技术称为FINGER(基于图的近似最近邻搜索的快速推理)。

    24210编辑于 2025-08-30
  • 深度度量学习提升近邻搜索可靠性

    通过深度度量学习实现更可靠的近邻搜索许多机器学习应用涉及将数据嵌入到一个表示空间中,其中嵌入之间的几何关系承载着语义内容。 执行一项有用任务通常涉及检索该空间中一个嵌入的邻近邻居:例如,查询嵌入附近的答案嵌入、文本描述嵌入附近的图像嵌入、一种语言中的文本嵌入在另一种语言中的文本嵌入附近,等等。

    13610编辑于 2026-01-09
  • 来自专栏Pulsar-V

    Math-Model(二)-无向图最近邻路径搜索

    ]); %Y=min([min(GPS_1(:,2)),min(GPS_2(:,2))]):0.01:max([max(GPS_1(:,2)),max(GPS_2(:,2))]); figure(1) plot(GPS_1(:,2),GPS_1(:,1),'*r')%,GPS_2(:,2),GPS_2(:,1),'*b') figure(2) plot(GPS_2(:,2),GPS_2(:,1),'* b') figure(3) plot(GPS_1(:,2),GPS_1(:,1),'*r',GPS_2(:,2),GPS_2(:,1),'*b') %插入人员密度值 %Z=griddata(x,y,z, real_distance=eular_distance(GPS_1(i,2),GPS_1(i,1),GPS_2(j,2),GPS_2(j,1)); if real_distance <12 gps_point(counter,1)=GPS_2(j,2); gps_point(counter,2)=GPS_2(j,1);

    33330发布于 2019-03-12
  • 来自专栏数据科学(冷冻工厂)

    scRAN-seq|加权最近邻分析(2)

    概述 本文[1]介绍了Seurat 5.0.0中的加权最近邻(WNN)分析方法,这是一种用于整合和分析多模态单细胞数据的无监督框架。 在2021年发表于《Cell》杂志的一篇论文中,提出了一种名为‘加权最近邻’(WNN)的分析方法,这是一种无需监督的学习框架,它能够评估每种数据类型对每个细胞的具体贡献,从而实现对多种数据类型的综合分析 10x Multiome、RNA + ATAC 的 WNN 分析 在本例中,将展示如何将加权最近邻(WNN)分析应用于 10x multiome RNA+ATAC 试剂盒这一多模态技术。 cols = c("lightgrey", "darkred"), reduction = 'wnn.umap') gene_plot | motif_plot 希望量化这种关系,并在所有细胞类型中搜索类似的例子 presto 根据 Wilcox 秩和检验计算 p 值,这也是 Seurat 中的默认测试,限制的搜索到在两个测试中返回显著结果的 TFs。

    32410编辑于 2024-04-15
  • 来自专栏mathor

    搜索2

     上一节我们以图的遍历为例讲了深度优先搜索算法和实现程序。 上一节中的深度优先算法可以算是基本款,很多深度优先搜索的题目就是在这个基本款的程序上进行修改 DFS  加强版DFS首先增加或者说变化的一点是顶点颜色。 然后1->2开始遍历2号节点,时间戳就是2。如果2再往后找不到新的顶点,那么2就要回溯,在回溯前会被标记为时间戳=3…… ?   我们可以看出来任意两个顶点的区间只可能有2种关系:(1)两个区间相离;(2)一个区间包含另一个区间。换句话说,不会出现像[1, 10], [4, 13]这样两个区间互相跨立的情况。 第29行执行完以后,我们就完成了对这棵树的深度优先搜索,每个节点的开始时间戳和结束时间戳也都求出来了。

    50740发布于 2018-07-04
  • 来自专栏小小程序员——DATA

    K近邻算法 K近邻算法原理

    # K近邻算法 K近邻算法原理## $k$近邻算法介绍- $k$近邻法 (k-Nearest Neighbor;kNN) 是一种比较成熟也是最简单的机器学习算法,可以用于基本的分类与回归方法- 算法的主要思路 - $k$近邻法是基本且简单的分类与回归方法。 - $k$近邻模型对应于基于训练数据集对特征空间的一个划分。$k$近邻法中,当训练集、距离度量、$k$值及分类决策规则确定后,其结果唯一确定。## $k$近邻法三要素 1. 距离度量 $ 2. k$值的选择 3. 分类决策规则。- 常用的距离度量是欧氏距离。- $k$值小时,$k$近邻模型更复杂;$k$值大时,$k$近邻模型更简单。 ## $k$近邻算法流程 1. 计算测试对象到训练集中每个对象的距离 2. 按照距离的远近排序 3. 选取与当前测试对象最近的k的训练对象作为该测试对象的邻居 4.

    52300编辑于 2023-12-10
  • 来自专栏Reinvent Data Science

    基于 Milvus 构建的近似最近邻(ANN)搜索引擎

    ✏️ 作者介绍: 周充,格像科技后端工程师 需求背景 根据格像科技公司的业务需求,我们需要搭建一个近似最近邻(Approximate Nearest Neighbor,即 ANN)搜索引擎,以便将在线向量相似搜索功能应用到公司其他业务中 为了赋予 ANN 搜索引擎相同的向量相似搜索能力,我们选择在 Milvus 和现有的基础系统之间增加一个中间层,从而将 Milvus 强大的向量相似搜索功能移植到我们的系统之中。 3.2 复制节点 为了实现 ANN 搜索引擎系统的高可用性,我们需要更多其他的副本节点来提供相同的向量搜索服务。实现方案如下图所示: ? 客户端在发起向量搜索请求时,会带上最新的分区名称。如果某个节点上的新数据已经完成加载,会返回最新分区中的搜索结果。 如果这个索引是分片的,ANN Client 则会访问索引的全部分片(如下图中的Shard1,Shard2,Shard3),然后汇总结果并返回。 ?

    1.5K20发布于 2021-01-05
  • 来自专栏python读书笔记

    《算法图解》note 10 K近邻算法1.K近邻算法简介2.python实现方式3.K近邻算法的优缺点

    1.K近邻算法简介 K近邻算法(K-nearest neighbor)是一个给定训练数据,根据样本数据最近的K个实例的类别来判断样本数据的类别或数值的算法。 2.python实现方式 可用python的scikit-learn包实现K近邻算法。 调用包的方式如下: from sklearn import neighbors #K近邻算法的分类算法 classifier=neighbors.KNeighborsClassifier() #K近邻算法的回归算法 regressor=neighbors.KNeighborsRegressor() 3.K近邻算法的优缺点 3.1优点 (1)可处理分类问题和回归问题。 (2)适合大样本情况下的自动分析。 3.2缺点 (1)计算量大。 (2)样本不平衡时,对稀少类的分率准确率较低。

    1.1K100发布于 2018-06-19
  • 来自专栏JasonhavenDai

    统计学习方法之K近邻法1.k近邻法(k-nearest neighbor,k-NN)2.k近邻模型3.k近邻算法的实现

    输入:训练数据集T=(x1,y1),(x2,y2),... (xN,yN) 输出:实例x所属的类y 算法步骤: (1)根据给定的距离度量,在训练集T中找出与x最近邻的k个点,涵盖这k个点的x的邻域记作Nk(x) (2)在Nk(x)中根据分类决策规则,如多数表决决定 2.k近邻模型 k-NN使用的模型实际上对应于听特征空间的划分,模型由三个基本要素:距离度量,k值的选择,分类决策规则。 欧式距离,则是L2范式,也就是p=2的情况,而另一个很熟悉的距离曼哈顿距离,则是L1范式。Lp距离的定义如下: 当然,如果p→∞的时候,就叫做切比雪夫距离了。 01损失函数(CSDN) 3.k近邻算法的实现 实现k-NN算法,主要考虑的问题是如何对训练集进行快速k近邻搜索。 简单实现方式:线性搜索,对于数据量很大时,此方法是不可行的。

    1.6K50发布于 2018-04-11
  • 来自专栏人工智能前沿讲习

    AI综述专栏| 大数据近似最近邻搜索哈希方法综述(下)

    1 导读 最近邻搜索(Nearest Neighbor Search)也称作最近点搜索,是指在一个尺度空间中搜索与查询点最近点的优化问题。 最近邻搜索在很多领域中都有广泛应用,如:计算机视觉、信息检索、数据挖掘、机器学习,大规模学习等。 本文是关于大数据近似最近邻搜索问题中应用哈希方法的综述。文章分为两部分,本篇为第二部分。 2) 翻译过程往往很慢,导致无法适用于很多实际应用。因此,近期又产生了一些新的多模态哈希方法,详见[1]。 图3.2显示了以图像搜索为例,应用上述权重对汉明距离进行重排序的完整过程。 ? 图3.2 图像搜索整体框架 3.2 非对称距离 哈希编码分为投影和量化为二进制两个过程。

    1.7K20发布于 2020-05-11
  • 来自专栏企鹅号快讯

    如何在Python中快速进行语料库搜索:近似最近邻算法

    随后,如果我们有这些词嵌入对应的语料库,那么我们可以通过搜索找到最相似的嵌入并检索相应的词。如果我们做了这样的查询,我们会得到: 我们有很多方法来搜索语料库中词嵌入对作为最近邻查询方式。 是近似最近邻搜索算法该出现时候了:它可以快速返回近似结果。很多时候你并不需要准确的最佳结果,例如:「Queen」这个单词的同义词是什么? 在这种情况下,你只需要快速得到足够好的结果,你需要使用近似最近邻搜索算法。 在本文中,我们将会介绍一个简单的 Python 脚本来快速找到近似最近邻2. 接下来实例化一个 Imdb 图,使用:「env = lmdb.open(fn_lmdb, map_size=int(1e9))」。 3. 从 lmdb 图中获取查询索引; 2. 用 get_item_vector(id) 获取 Annoy 对应的向量; 3.

    2.1K50发布于 2018-02-05
  • 来自专栏NLP算法工程师之路

    K近邻分类

    KNN的实现 暴力实现 KD树实现 KNN的优缺点 KNN的主要优点有: 1) 理论成熟,思想简单,既可以用来做分类也可以用来做回归 2) 可用于非线性分类 3) 训练时间复杂度比支持向量机之类的算法低 欧式距离: D(x, y)=\sqrt{\left(x_{1}-y_{1}\right)^{2}+\left(x_{2}-y_{2}\right)^{2}+\ldots+\left(x_{n}-y_{n }\right)^{2}}=\sqrt{\sum_{i=1}^{n}\left(x_{i}-y_{i}\right)^{2}}曼哈顿距离: D(x, y)=\left|x_{1}-y_{1}\right |+\left|x_{2}-y_{2}\right|+\ldots+\left|x_{n}-y_{n}\right|=\sum_{i=1}^{n}\left|x_{i}-y_{i}\right|闵可夫斯基距离 : D(x, y)=\sqrt[\psi]{\left(\left|x_{1}-y_{1}\right|\right)^{p}+\left(\left|x_{2}-y_{2}\right|\right)

    1.1K10发布于 2019-12-18
  • 来自专栏xiaosen

    K 近邻算法

    K近邻是机器学习算法中理论最简单,最好理解的算法,虽然算法简单,但效果也不错。 GridSearchCV GridSearchCV 是 scikit-learn 库中的一个类,用于进行参数网格搜索。 它结合了交叉验证和网格搜索的功能,可以自动地对给定的模型和参数组合进行训练和评估,以找到最佳的参数设置。 x_test, y_train, y_test = \ train_test_split(x, y, test_size=0.2, stratify=y, random_state=0) # 创建网格搜索对象 show_digit(1) # 训练模型 train_model() # 测试模型 test_model() 小结:  KNN(K-Nearest Neighbors)算法,即K最近邻算法

    70122编辑于 2024-03-15
  • 来自专栏SIGAI学习与实践平台

    K近邻算法

    k近邻算法的思想了,最近邻算法是k近邻算法k=1时的一种特殊情况。 然后统计这些样本所属的类别,在这里红色点有12个,圆形有2个,因此把这个样本判定为红色这一类。上面的例子是二分类的情况,我们可以推广到多类,k近邻算法天然支持多类分类问题。 在实现时可以考虑样本的权重,即每个样本有不同的投票权重,这称方法称为为带权重的k近邻算法。另外还其他改进措施,如模糊k近邻算法[2]。 实验程序 下面用一个例子程序来演示kNN算法的使用,这里我们对2个类进行分类。 在这里分类边界是曲线,证明了kNN算法有非线性分类的能力。 推荐文章 [1] 机器学习-波澜壮阔40年 SIGAI 2018.4.13. [2] 学好机器学习需要哪些数学知识?

    1.6K10发布于 2018-06-28
  • 来自专栏SIGAI学习与实践平台

    K近邻算法

    k近邻算法的思想了,最近邻算法是k近邻算法k=1时的一种特殊情况。 然后统计这些样本所属的类别,在这里红色点有12个,圆形有2个,因此把这个样本判定为红色这一类。上面的例子是二分类的情况,我们可以推广到多类,k近邻算法天然支持多类分类问题。 预测算法的流程为: 1.在训练样本集中找出离x最近的个样本k,假设这些样本的集合为N 2.统计集合N中每一类样本的个数Ci, i=1,... 如果看k=1,k近邻算法退化成最近邻算法。 k近邻算法实现简单,缺点是当训练样本数大、特征向量维数很高时计算复杂度高。 在实现时可以考虑样本的权重,即每个样本有不同的投票权重,这称方法称为为带权重的k近邻算法。另外还其他改进措施,如模糊k近邻算法[2]。 kNN算法也可以用于回归问题。

    1.9K11发布于 2018-08-07
  • 来自专栏互联网大杂烩

    K近邻(KNN)

    KNN概念 kNN算法又称为k最近邻(k-nearest neighbor classification)分类算法。 所谓的k最近邻,就是指最接近的k个邻居(数据),即每个样本都可以由它的K个邻居来表达。 该算法涉及3个主要因素:训练集、距离与相似的衡量、k的大小; 算法步骤: 算法步骤: step.1---初始化距离为最大值 step.2---计算未知样本和每个训练样本的距离dist step.3--- 得到目前K个最临近样本中的最大距离maxdist step.4---如果dist小于maxdist,则将该训练样本作为K-最近邻样本 step.5---重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完 step.6---统计K-最近邻样本中每个类标号出现的次数 step.7---选择出现频率最大的类标号作为未知样本的类标号 KNN的实现 选用“鸢尾”数据集来实现KNN算法 #从sklearn.datasets

    1K30发布于 2018-08-22
领券