当前位置: 首页 > news >正文

Elasticsearch:什么是 kNN?

kNN - K-nearest neighbor 定义

kNN(即 k 最近邻算法)是一种机器学习算法,它使用邻近度将一个数据点与其训练并记忆的一组数据进行比较以进行预测。 这种基于实例的学习为 kNN 提供了 “惰性学习(lazy learning)” 名称,并使算法能够执行分类或回归问题。 kNN 的假设是相似的点可以在彼此附近找到 —— 物以类聚。

作为一种分类算法,kNN 将新数据点分配给其邻居中的多数集。 作为一种回归算法,kNN 根据最接近查询点的值的平均值进行预测。

kNN 是一种监督学习算法,其中 “k” 代表分类或回归问题中考虑的最近邻的数量,“NN”代表为 k 选择的数量的最近邻。

kNN 算法简史

kNN 最初由 Evelyn Fix 和 Joseph Hodges 于 1951 年在为美国军方进行的研究中开发。 他们发表了一篇解释判别分析的论文,这是一种非参数分类方法。 1967 年,Thomas Cover 和 Peter Hart 对非参数分类方法进行了扩展,并发表了他们的 “最近邻模式分类” 论文。 大约 20 年后,詹姆斯·凯勒 (James Keller) 对该算法进行了改进,他开发了一种 “模糊 KNN”,可以产生较低的错误率。

如今,kNN 算法是使用最广泛的算法,因为它适用于从遗传学到金融和客户服务的大多数领域。

kNN 是如何工作的?

kNN 算法作为一种监督学习算法,这意味着它会被输入它记忆的训练数据集。 它依赖于这个标记的输入数据来学习一个函数,该函数在给定新的未标记数据时产生适当的输出。

这使得算法能够解决分类或回归问题。 虽然 kNN 的计算发生在查询期间而不是训练阶段,但它具有重要的数据存储要求,因此严重依赖内存。

对于分类问题,KNN 算法将根据多数分配类标签,这意味着它将使用给定数据点周围最常出现的标签。 换句话说,分类问题的输出是最近邻的众数。

区别:多数投票与相对多数投票

多数投票(majority voting)表示超过 50% 的票数为多数。 如果考虑两个类标签,则这适用。 但是,如果考虑多个类别标签,则适用相对多数投票(plurality voting)。 在这些情况下,超过 33.3% 的任何值都足以表示多数,从而提供预测。 因此,相对多数投票(plurality voting)是定义 kNN 模式的更准确术语。

如果我们要说明这种区别:

二元预测

Y: 🎉🎉🎉❤️❤️❤️❤️❤️

多数投票: ❤️

相对多少投票: ❤️

多类别设置

Y: ⏰⏰⏰💰💰💰🏠🏠🏠🏠

多数投票:没有

相对多数投票:🏠

回归问题使用最近邻的平均值来预测分类。 回归问题将产生实数作为查询输出。

例如,如果你要制作一个图表来根据某人的身高来预测其体重,则表示身高的值将是独立的,而体重的值将是相关的。 通过计算平均身高体重比,你可以根据某人的身高(自变量)估计其体重(因变量)。

4 种计算 kNN 距离度量的类型

kNN 算法的关键是确定查询点与其他数据点之间的距离。 确定距离度量可以实现决策边界。 这些边界创建不同的数据点区域。 有不同的方法用于计算距离:

  • 欧几里得距离Euclidean distance)是最常见的距离度量,它测量查询点和其他被测量点之间的直线。
  • 曼哈顿距离Manhattan distance )也是一种流行的距离度量,它度量两点之间的绝对值。 它以网格表示,通常称为出租车几何形状 - 如何从 A 点(你的查询点)行驶到 B 点(被测量点)?
  • 闵可夫斯基距离Minkowski distance)是欧几里得距离度量和曼哈顿距离度量的推广,它可以创建其他距离度量。 它是在赋范向量空间中计算的。 在 Minkowski 距离中,p 是定义计算中使用的距离类型的参数。 如果 p=1,则使用曼哈顿距离。 如果 p=2,则使用欧几里德距离。
  • 汉明距离Hamming distance),也称为重叠度量,是一种与布尔向量或字符串向量一起使用的技术,用于识别向量不匹配的位置。 换句话说,它测量两个长度相等的字符串之间的距离。 它对于错误检测和纠错码特别有用。

如何选择最佳的 k 值

要选择最佳 k 值(考虑的最近邻的数量),你必须尝试几个值,以找到能够生成最准确的预测且误差最少的 k 值。 确定最佳值是一种平衡行为:

  • 低 k 值会使预测不稳定
    • 举个例子:一个查询点被 2 个绿点和 1 个红色三角形包围。 如果 k=1 并且最接近查询点的点恰好是绿点之一,则算法将错误地将绿点预测为查询结果。 低 k 值意味着高方差(模型与训练数据拟合得太紧密)、高复杂性和低偏差(模型足够复杂,可以很好地拟合训练数据)。
  • 高 k 值有噪音
    • 较高的 k 值将提高预测的准确性,因为需要计算众数或平均值的数量更多。 但是,如果 k 值太高,则可能会导致低方差、低复杂性和高偏差(模型不够复杂,无法很好地拟合训练数据)。

理想情况下,你希望找到一个介于高方差和高偏差之间的 k 值。 还建议为 k 选择奇数,以避免分类分析中出现平局。

正确的 k 值也与你的数据集相关。 要选择该值,你可以尝试查找 N 的平方根,其中 N 是训练数据集中的数据点数量。 交叉验证策略还可以帮助你选择最适合你的数据集的 k 值。

kNN算法的优点

kNN 算法通常被描述为 “最简单” 的监督学习算法,这导致了它的几个优点:

  • 简单:kNN 非常简单且准确,因此很容易实现。 因此,它通常是数据科学家首先要学习的分类器之一。
  • 适应性强:一旦将新的训练样本添加到数据集中,kNN 算法就会调整其预测以包含新的训练数据。
  • 易于编程:kNN 仅需要几个超参数 - k 值和距离度量。 这使得它成为一个相当简单的算法。

此外,kNN 算法不需要训练时间,因为它存储训练数据,并且仅在进行预测时使用其计算能力。

kNN 的挑战和局限性

虽然 kNN 算法很简单,但它也存在一系列挑战和限制,部分原因在于它的简单性:

  • 难以扩展:由于 kNN 占用大量内存和数据存储,因此带来了与存储相关的费用。 这种对内存的依赖也意味着该算法是计算密集型的,这反过来又是资源密集型的。
  • 维数灾难:这是指计算机科学中发生的一种现象,其中一组固定的训练示例受到维度数量不断增加以及这些维度中特征值固有增加的挑战。 换句话说,模型的训练数据无法跟上超空间维度的演变。 这意味着预测变得不太准确,因为查询点和相似点之间的距离在其他维度上变得更宽。
  • 过度拟合:如前所述,k 的值将影响算法的行为。 当 k 值太低时尤其可能发生这种情况。 较低的 k 值可能会过度拟合数据,而较高的 k 值会 “平滑” 预测值,因为算法会在更大的区域内对值进行平均。

顶级 kNN 用例

kNN 算法因其简单性和准确性而广受欢迎,具有多种应用,特别是用于分类分析时。

  • 相关性排名:kNN 使用自然语言处理 (NLP) 算法来确定哪些结果与查询最相关。
  • 图像或视频的相似性搜索:图像相似性搜索使用自然语言描述来查找与文本查询匹配的图像。

  • 模式识别:kNN 可用于识别文本或数字分类中的模式。
  • 金融:在金融领域,kNN可以用于股市预测、货币汇率等。
  • 产品推荐和推荐引擎:想想 Netflix! “如果你喜欢这个,我们认为你也会喜欢……” 任何使用该句子版本的网站,无论是否公开,都可能使用 kNN 算法来为其推荐引擎提供动力。
  • 医疗保健:在医学和医学研究领域,kNN算法可用于遗传学中计算某些基因表达的概率。 这使得医生能够预测癌症、心脏病或任何其他遗传性疾病的可能性。
  • 数据预处理:kNN 算法可用于估计数据集中的缺失值。

使用 Elastic 进行 kNN 搜索

Elasticsearch 使你能够实现 kNN 搜索。 支持两种方法:近似 kNN(approximate kNN)和精确(exact)、强力 kNN(brute-force)。 你可以在相似性搜索、基于 NLP 算法的相关性排名以及产品推荐和推荐引擎的上下文中使用 kNN 搜索。

使用 Elastic 实现 kNN 搜索

K-最近邻常见问题解答

何时使用 kNN?

使用 kNN 根据相似性进行预测。 因此,你可以使用 kNN 在自然语言处理算法的上下文中进行相关性排名、相似性搜索和推荐引擎或产品推荐。 请注意,当数据集相对较小时,kNN 非常有用。

kNN 是有监督机器学习还是无监督机器学习?

kNN 是监督机器学习。 它被提供一组它存储的数据,并且仅在查询时处理数据。

kNN 代表什么?

kNN 代表 k-近邻算法,其中 k 表示分析中考虑的最近邻的数量。

接下来你应该做什么

只要你准备好...我们可以通过以下 4 种方式帮助你将数据引入你的业务:

  • 开始免费试用,看看 Elastic 如何帮助你的业务。
  • 浏览我们的解决方案,了解 Elasticsearch 平台的工作原理以及我们的解决方案如何满足你的需求。
  • 通过我们 45 分钟的网络研讨会,了解如何设置 Elasticsearch 集群并开始数据收集和摄取。
  • 与你认识并喜欢阅读本文的人分享这篇文章。 通过电子邮件、LinkedIn、Twitter 或 Facebook 与他们分享。

更多阅读:

  • Elasticsearch:介绍 kNN query,这是进行 kNN 搜索的专家方法

  • Elasticsearch:探索 k-nearest neighbor (kNN) 搜索

  • 增强常见问题解答搜索引擎:在 Elasticsearch 中利用 KNN 的力量

相关文章:

Elasticsearch:什么是 kNN?

kNN - K-nearest neighbor 定义 kNN(即 k 最近邻算法)是一种机器学习算法,它使用邻近度将一个数据点与其训练并记忆的一组数据进行比较以进行预测。 这种基于实例的学习为 kNN 提供了 “惰性学习(lazy learning)” 名…...

掌握网络未来:深入解析RSVP协议及其在确保服务质量中的关键作用

第一部分:RSVP简介 资源预留协议(RSVP)是一种网络协议,用于在网络中的各个节点之间预留资源,以支持数据流的服务质量(QoS)要求。RSVP特别适用于需要固定带宽和处理延迟的应用,如视频…...

【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、Java…...

Howler.js:音频处理的轻量级解决方案

文章目录 Howler.js:音频处理的轻量级解决方案引言一、Howler.js简介1.1 特性概览 二、Howler.js基本使用使用详解2.1 创建一个Howl对象2.2 控制音频播放2.3 监听音频事件 三、进阶功能3.1 音频Sprites3.2 3D音频定位 四、微前端场景下的Howler.js Howler.js&#x…...

【讨论】Web端测试和App端测试的不同,如何说得更有新意?

Web 端测试和 App 端测试是针对不同平台的上的应用进行测试,Web应用和App端的应用实现方式不同,测试时的侧重点也不一样。 Web端应用和App端应用的区别: 平台兼容性 安装方式 功能和性能 用户体验 更新和维护 测试侧重点有何不同 平台…...

运维SRE-18 自动化批量管理-ansible4

12.2handles handles触发器(条件),满足条件后再做什么事情应用场景:想表示:配置文件变化,再重启服务 配置handlers之前,每次运行剧本都会重启nfs,无论配置文件是否变化。 [rootm01 /server/ans/playbook]…...

编程笔记 Golang基础 008 基本语法规则

编程笔记 Golang基础 008 基本语法规则 Go语言的基本语法规则. Go语言的基本语法规则包括但不限于以下要点: 标识符: 标识符用于命名变量、常量、类型、函数、包等。标识符由字母(a-z,A-Z)、数字(0-9&#…...

android input命令支持多指触摸成果展示-千里马framework实战开发

hi input命令扩展提示部分 generic_x86_64:/ # input -h Error: Unknown command: -h Usage: input [<source>] <command> [<arg>...]The source…...

Stable Diffusion 模型分享:Indigo Furry mix(人类与野兽的混合)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十...

OpenAI Sora引领AI跳舞视频新浪潮:字节跳动发布创新舞蹈视频生成框架

OpenAI的Sora已经引起广泛关注&#xff0c;预计今年AI跳舞视频将在抖音平台上大放异彩。下面将为您详细介绍一款字节跳动发布的AI视频动画框架。 技术定位&#xff1a;这款框架采用先进的diffusion技术&#xff0c;专注于生成人类舞蹈视频。它不仅能够实现人体动作和表情的迁移…...

[深度学习] 卷积神经网络“卷“在哪里?

​ &#x1f308; 博客个人主页&#xff1a;Chris在Coding &#x1f3a5; 本文所属专栏&#xff1a;[深度学习] ❤️ 热门学习专栏&#xff1a;[Linux学习] ⏰ 我们仍在旅途 目录 1.卷积的定义 2.卷积的"卷"在哪里 3.什么又是卷积神…...

企业网络安全自查:总结报告与改进指南

按照网络和数据安全监督检查工作的要求&#xff0c; 现将网络信息安全自查阶段有关情况总结如下&#xff1a; 一、自查工作的组织开展情况 我单位始终高度重视网络与信息安全自查工作&#xff0c; 成立专项管理组织机构&#xff0c;深入学习贯彻相关文件精神&#xff0c;严格…...

怎么理解ping?这是我听过最好的回答

晚上好&#xff0c;我是老杨。 Ping这几个字母&#xff0c;已经深入网工人的骨髓了吧&#xff1f; 把Ping用到工作里&#xff0c;肯定不少人在用&#xff0c;但对Ping的了解和理解是不是足够深&#xff0c;取决了你能在工作里用到什么程度&#xff0c;能让它帮你到什么地步。…...

用户请求到响应可能存在的五级缓存

用户请求到响应可能存在的五级缓存 当用户在浏览器中输入URL进行访问时&#xff0c;请求并不是直接达到服务器&#xff0c;而是会经历多级缓存&#xff0c;以提高网络效率。本文将详细介绍用户请求到响应可能会经历的五个缓存级别&#xff1a;浏览器缓存&#xff0c;代理缓存&…...

云图极速版限时免费活动

产品介绍 云图极速版是针对拥有攻击面管理需求的用户打造的 SaaS 应用&#xff0c;致力于协助用户发现并管理互联网资产攻击面。 实战数据 (2023.11.6 - 2024.2.23) 云图极速版上线 3 个月以来&#xff0c;接入用户 3,563 家&#xff0c;扫描主体 19,961 个&#xff0c;累计发…...

vue3 vuex

目录 Vuex 是什么 什么是“状态管理模式”&#xff1f; 什么情况下我应该使用 Vuex&#xff1f; 使用方法&#xff1a; 提交载荷&#xff08;Payload&#xff09; 对象风格的提交方式 使用常量替代 Mutation 事件类型 Mutation 必须是同步函数 在组件中提交 Mutation …...

Java架构师之路三、网络通信:TCP/IP协议、HTTP协议、RESTful API、WebSocket、RPC等。

目录 TCP/IP协议&#xff1a; HTTP协议&#xff1a; RESTful API&#xff1a; WebSocket&#xff1a; RPC&#xff1a; UDP&#xff1a; HTTPS&#xff1a; 上篇&#xff1a;Java架构师之路二、数据库&#xff1a;SQL语言、关系型数据库、非关系型数据库、数据一致性、事…...

【C++】笔试训练(九)

目录 一、选择题二、编程题1、另类加法2、走方格的方案数 一、选择题 1、某函数申明如下 void Func(int& nVal1);有int a,下面使用正确的为&#xff08;&#xff09; A Func(a) B Func(&a) C Func(*a) D Func(&(*a)) 答案&#xff1a;A 2、C语言中&#xff0c;类…...

模板注入 [BJDCTF2020]Cookie is so stable1

打开题目 有flag页面&#xff0c;有Hint页面 这里题目有提示&#xff0c;突破口是在cookie上面 经过测试发现有ssti注入&#xff1a; 抓包 判断模板注入类型的办法 输入 {{7*‘7’}} 回显49 输入{{7*‘7’}}&#xff0c;返回49表示是 Twig 模块 输入{{7*‘7’}}&#xff0…...

2-18算法习题总结

二分查找问题 [COCI 2011/2012 #5] EKO / 砍树 题目描述 伐木工人 Mirko 需要砍 M M M 米长的木材。对 Mirko 来说这是很简单的工作&#xff0c;因为他有一个漂亮的新伐木机&#xff0c;可以如野火一般砍伐森林。不过&#xff0c;Mirko 只被允许砍伐一排树。 Mirko 的伐木…...

【软考高项】【英语知识】-- 单词积累

目录 一、常见计算机技术词汇 二、项目管理词汇 2.1 十大知识域 2.2 五大过程组 2.3 49个子过程 2.4 工具和技术汇总 2.5 输入和输出汇总 一、常见计算机技术词汇 序号中文英文1云计算Cloud computing2云存储Cloud storage3云服务Cloud service4软件即服务SaaS5平台即服…...

外包干了3个月,技术退步明显

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…...

【ArcGIS微课1000例】0105:三维模型转体模型(导入sketchup转多面体为例)

文章目录 一、实验概述二、三维模型转多面体三、加载多面体数据四、注意事项一、实验概述 ArcGIS可以借助【导入3D文件】工具支持主流的三维模型导入。支持 3D Studio Max (.3ds)、VRML and GeoVRML 2.0 (.wrl)、SketchUp 6.0 (.skp)、OpenFlight 15.8 (.flt)、Collaborative …...

创建型设计模式 - 原型设计模式 - JAVA

原型设计模式 一 .简介二. 案例三. 补充知识 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 一 .简介 原型模式提供了一种机制&#xff0c;可以将原始对象复制到新对象&#xff0…...

Squid代理:APT、PyPI和Docker的内网穿透解决方案

如果你是在内网环境&#xff0c;并且你知道一台服务器可以链接外网&#xff0c;可以通过Squid代理的方式更新apt、pypi、docker源。 你可以通过在服务器A&#xff08;172.16.16.122&#xff0c;可上外网&#xff09;上设置代理服务器来实现服务器B通过服务器A访问外部APT源的需…...

MYSQL--触发器

一:介绍: 1.触发器实际上就是一种特殊的存储过程,两者都能够在MYSQL当中完成特定的功能,存储在服务器上的特殊SQL片段,可以重复进行使用,提高复用性的一种功能.但是触发器并不需要进行调用,在使用DML操作的时候会自动的调用相关的触发器操作 2.触发器能够对于DML操作当中的,删除…...

onnx 1.16 doc学习笔记四:python API-If和Scan

onnx作为一个通用格式&#xff0c;很少有中文教程&#xff0c;因此开一篇文章对onnx 1.16文档进行翻译与进一步解释&#xff0c; onnx 1.16官方文档&#xff1a;https://onnx.ai/onnx/intro/index.html](https://onnx.ai/onnx/intro/index.html)&#xff0c; 如果觉得有收获&am…...

如何构建企业专属GPT

大语言模型&#xff08;LLM&#xff09;具有令人印象深刻的自然语言理解和生成能力&#xff0c; 2022年11月底OpenAI发布了ChatGPT&#xff0c;一跃成为人工智能AI领域的现象级应用。但由于LLM的训练数据集主要来源于互联网数据&#xff0c;企业私域信息并未被LLM所训练&#x…...

知识积累(二):损失函数正则化与权重衰减

文章目录 1. 欧氏距离与L2范数1.1 常用的相似性度量 2. 什么是正则化&#xff1f;参考资料 本文只介绍 L2 正则化。 1. 欧氏距离与L2范数 欧氏距离也就是L2范数 1.1 常用的相似性度量 1&#xff09;点积 2&#xff09;余弦相似度 3&#xff09;L1和L2 2. 什么是正则化&…...

消息中间件-面试题

MQ选择 一、Kafka 1、消息队列如何保证消息可靠性 消息不重复 生产者控制消费者幂等消息不丢失 生产者发送,要确认broker收到并持久化broker确认消费者消费完,再删除消息2、kafka是什么 Kafka是一种高吞吐量、分布式、基于发布/订阅的消息中间件,是Apache的开源项目。broke…...

长宁专业网站制作公司/中央下令全国各地核酸检测

背景&#xff1a; oracle数据库&#xff0c;存在用户A和用户B 对单表授权&#xff1a; grant insert,select,update,delete on A.TABLE1 to B; 批量授权&#xff1a; 1、先查出所有授权语句 A用户登录然后执行以下sql&#xff1b; select grant insert,select,update,delete on…...

可以自己做直播网站吗/如何创建自己的卡网

内容来自网上查找和总结以及自己的尝试boot里面的启动项是根据其它文件生成的&#xff0c;如果改boot里面&#xff0c;会在你更新grub后再次回到原来的状态。(之后 我(有显卡驱动问题的用户)通过在开机时选择系统页面按e在倒数第二行ro quiet splash 后面加上acpi_osi! acpi_os…...

判断网站是什么系统做的/广州广告公司

之前想做去雾算法在果园对靶的应用&#xff0c;想要搜集一些资料&#xff0c;包括何凯明博士在IEEE收录的一篇去雾论文Single Image Haze Removal Using Dark Channel Prior-IEEE-Xplore官网论文链接 如果没有特殊渠道获取&#xff0c;得是IEEE允许的一些机构&#xff0c;并且需…...

wordpress内存优化/写软文怎么接单子

数组的解构赋值 1.基本用法ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构.可以从数组中提取值,按照位置的对应关系对变量赋值.本质上,这种写法属于模式匹配,只要等号两边的模式相同,左边的变量就会被赋予对应的值. var [a, b, c] [1, 2, 3]; var [d,…...

合肥网站建设公司 推荐/免费刷粉网站推广免费

关于c语言中的指针的一些相关的问题: 1.int *p; 2.int **p; 3.int *p[10]; 4.int (*p)[10]; 5.int *p(int); 6.int (*p)(int); 7.int (*p[10])(int); 这七个难度还不是很大&#xff0c;相信大多数读者都能够答的出来。 答案&#xff1a; 1.一个指向整型数据的指针 2.一个指针的…...

wordpress 打开非常慢/关键词排名怎样

今天在虚拟机上装了雨林木风 Ghost XP SP3 装机版 YN9.9在菜单上发现了 安装WinPE到硬盘 选项 没接触过WinPE Windows PE Windows PreInstallation Environment&#xff08;Windows PE&#xff09;直接从字面上翻译就是“Windows预安装环境”&#xff0c;微软在2002年7月22日发…...