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

    近邻搜索算法浅析

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

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

    近邻搜索|Nearest neighbor search

    [7] 邻近邻域图中的贪婪搜索 近似图方法(例如 HNSW [8])被认为是近似最近邻搜索的当前最新技术。 **在集合S中搜索查询q的最近邻采用在图中搜索顶点的形式 G(V,E) 。 投影径向搜索|Projected radial search 在数据是几何点的密集 3D 地图的特殊情况下,传感技术的投影几何可用于显着简化搜索问题。 变体 NNS 问题有许多变体,其中最著名的两个是*k-*最近邻搜索和ε-近似最近邻搜索。 k-最近邻 k-最近邻搜索识别查询的前k 个最近邻。 支持近似最近邻搜索的算法包括局部敏感散列、最佳 bin 优先和基于平衡框分解树的搜索

    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)是一种高效的跨平台相似性搜索库和用于评估相似性搜索方法的工具包。 NMSLIB是一个可扩展的库,这意味着可以添加新的搜索方法和距离函数。NMSLIB可以直接在C ++和Python中使用。 详细参数 关于参数的设置可以见 https://github.com/nmslib/nmslib/blob/master/python_bindings/parameters.md 参考 高维空间最近邻逼近搜索算法评测

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

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

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

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

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

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

    ,2),GPS_1(:,1),'*r')%,GPS_2(:,2),GPS_2(:,1),'*b') figure(2) plot(GPS_2(:,2),GPS_2(:,1),'*b') figure(3) gps_point(counter,1)=GPS_2(j,2); gps_point(counter,2)=GPS_2(j,1); gps_point(counter,3) =GPS_2(j,3); gps_point(counter,4)=GPS_2(j,4); counter=counter+1; end real_distance; end neighbor_counter(i,1)=counter; neighbor_limit_mean(i,1)=mean(gps_point(:,3)

    33330发布于 2019-03-12
  • 来自专栏小小程序员——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
  • 来自专栏mathor

    搜索3

    终结状态可能是成功解决了问题,那么我们发现了问题的一个解;也可能是没有解决问题,但是后面无路可走了,那么说明说我们之前做的决策有错误  深度优先搜索可以用来遍历所有选择,找到所有的终结状态,从而找到所有的解 例如f1=2表示从1滑动到3需要先经过2;特别的fi=0表示从i到j没有限制  这个f数组是这样的,其余的f值是0: f[1][3] = f[3][1] = 2; f[1][7] = f[7][1] = 4; f[1][9] = f[9][1] = f[2][8] = f[8][2] = f[4][6] = f[6][4] = f[3][7] = f[7][3] = 5; f[3][9] = f[9 ][3] = 6; f[7][9] = f[9][7] = 8;  然后就是深度优先搜索的过程。 [4] = f[3][7] = f[7][3] = 5; f[3][9] = f[9][3] = 6; f[7][9] = f[9][7] = 8; cin >> t;

    69140发布于 2018-07-04
  • 来自专栏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)可处理分类问题和回归问题。

    1.1K100发布于 2018-06-19
  • 来自专栏Michael阿明学习之路

    3. K-近邻算法分类和回归

    对身高 155cm,体重 70 kg的人进行性别预测 设置 KNN 模型 k = 3 计算距离 x = np.array([[155,70]]) dis = np.sqrt(np.sum((X_train-x )**2 ,axis = 1)) dis 选取最近k个 nearset_k_neighbor = dis.argsort()[0:3] k_genders = [y_train[i] for i in 'female'] 计算最近的k个的标签 from collections import Counter # b = Counter(np.take(y_train, dis.argsort()[0:3] all element counts. b.most_common(2) # [('female', 2), ('male', 1)] b.most_common(1)[0][0] # 'female' 3. , [1], [1], [0], [0], [0], [0], [0]]) 预测前面的例子的性别 K=3

    62730发布于 2020-07-13
  • 来自专栏JasonhavenDai

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

    1.k近邻法(k-nearest neighbor,k-NN) k近邻算法是一个基本分类和回归方法,k-NN的输入时实例的特征向量,对应于特征空间的点,输出是实力的类别,可以取多类。 当k==1的时候,称为最近邻算法,对于输入的实例点,x,最近邻法将训练数据集中与x最近的点的所属类别作为x的类。 2.k近邻模型 k-NN使用的模型实际上对应于听特征空间的划分,模型由三个基本要素:距离度量,k值的选择,分类决策规则。 此时预测的结果会对近邻的实例点非常敏感,因为影响分类的都是比较近的样本,但一旦出现噪点,预测就会出错。 01损失函数(CSDN) 3.k近邻算法的实现 实现k-NN算法,主要考虑的问题是如何对训练集进行快速k近邻搜索。 简单实现方式:线性搜索,对于数据量很大时,此方法是不可行的。

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

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

    1 导读 最近邻搜索(Nearest Neighbor Search)也称作最近点搜索,是指在一个尺度空间中搜索与查询点最近点的优化问题。 最近邻搜索在很多领域中都有广泛应用,如:计算机视觉、信息检索、数据挖掘、机器学习,大规模学习等。 本文是关于大数据近似最近邻搜索问题中应用哈希方法的综述。文章分为两部分,本篇为第二部分。 3 哈希排序方法简介 哈希排序指的是在哈希过程的最后一步,对数据库中所有点哈希得到的二进制码的排序问题。汉明距离是最常用的二进制码排序标准,但它无法对那些与查询点具有相同汉明距离的二进制码排序。 图3.2显示了以图像搜索为例,应用上述权重对汉明距离进行重排序的完整过程。 ? 图3.2 图像搜索整体框架 3.2 非对称距离 哈希编码分为投影和量化为二进制两个过程。

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

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

    随后,如果我们有这些词嵌入对应的语料库,那么我们可以通过搜索找到最相似的嵌入并检索相应的词。如果我们做了这样的查询,我们会得到: 我们有很多方法来搜索语料库中词嵌入对作为最近邻查询方式。 是近似最近邻搜索算法该出现时候了:它可以快速返回近似结果。很多时候你并不需要准确的最佳结果,例如:「Queen」这个单词的同义词是什么? 在这种情况下,你只需要快速得到足够好的结果,你需要使用近似最近邻搜索算法。 在本文中,我们将会介绍一个简单的 Python 脚本来快速找到近似最近邻3. 确保我们在当前路径中没有 Annoy 索引或 lmdb 图。 4. 将嵌入文件中的每一个 key 和向量添加至 lmdb 图和 Annoy 索引。 5. 构建和保存 Annoy 索引。 用 get_item_vector(id) 获取 Annoy 对应的向量; 3. 用 a.get_nns_by_vector(v, num_results) 获取 Annoy 的最近邻

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

    K近邻分类

    KNN的实现 暴力实现 KD树实现 KNN的优缺点 KNN的主要优点有: 1) 理论成熟,思想简单,既可以用来做分类也可以用来做回归 2) 可用于非线性分类 3) 训练时间复杂度比支持向量机之类的算法低 该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分 KNN的主要缺点有: 1)计算量大,尤其是特征数非常多的时候 2)样本不平衡的时候,对稀有类别的预测准确率低 3) plt.scatter(x_predict[0],x_predict[1], color='b') plt.show() model = KNNClassifier(k=3)

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

    K 近邻算法

    (1)首先准备数据,可以是视频、音频、文本、图片等等 (2)抽取所需要的一些列特征,形成特征向量 (3)将这些特征向量连同标记一并送入机器学习算法中,训练出一个预测模型。 K近邻是机器学习算法中理论最简单,最好理解的算法,虽然算法简单,但效果也不错。 GridSearchCV GridSearchCV 是 scikit-learn 库中的一个类,用于进行参数网格搜索。 它结合了交叉验证和网格搜索的功能,可以自动地对给定的模型和参数组合进行训练和评估,以找到最佳的参数设置。 show_digit(1) # 训练模型 train_model() # 测试模型 test_model() 小结:  KNN(K-Nearest Neighbors)算法,即K最近邻算法

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

    K近邻算法

    k近邻算法的思想了,最近邻算法是k近邻算法k=1时的一种特殊情况。 k近邻算法简称kNN算法,由Thomas等人在1967年提出[1]。 在实现时可以考虑样本的权重,即每个样本有不同的投票权重,这称方法称为为带权重的k近邻算法。另外还其他改进措施,如模糊k近邻算法[2]。 A fuzzy K-nearest neighbor algorithm. systems man and cybernetics, 1985. [3] Thierry Denoeux. SIGAI 2018.4.17. [3] 人脸识别算法演化史 SIGAI 2018.4.20. [4] 基于深度学习的目标检测算法综述 SIGAI 2018.4.24. [5] 卷积神经网络为什么能够称霸计算机视觉领域

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

    K近邻算法

    k近邻算法的思想了,最近邻算法是k近邻算法k=1时的一种特殊情况。 下图6.1是使用k近邻思想进行分类的一个例子: ? 图 6.1 k近邻分类示意图 在上图中有红色和绿色两类样本。 ,c 3.最终的分类结果为argmaxiCi 在这里argmaxiCi表示最大的值Ci对应的那个类i。如果看k=1,k近邻算法退化成最近邻算法。 在实现时可以考虑样本的权重,即每个样本有不同的投票权重,这称方法称为为带权重的k近邻算法。另外还其他改进措施,如模糊k近邻算法[2]。 kNN算法也可以用于回归问题。 A fuzzy K-nearest neighbor algorithm. systems man and cybernetics, 1985. [3] Thierry Denoeux.

    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
领券