Elasticsearch:什么是余弦相似度?

news2024/9/20 1:07:32

余弦相似度是数据科学、文本分析和机器学习领域的基本概念。 如果你想知道什么是余弦相似度或者它如何在现实世界的应用程序中使用,那么你来对地方了。

本指南旨在让你深入了解相似性是什么、其数学基础、优点及其在不同领域的各种应用。读完本指南后,你将能够充分理解、实施并充分利用你的项目或研究中的相似性。

Cosine similarity 是在我们在 Elasticsearch 向量搜索配置 dense vector 相似性其中的一个选项。具体可以详细参阅 dense vector。

余弦相似度的意义

余弦相似度是一种衡量两组信息相似程度的数学方法。 用最简单的术语来说,它可以帮助我们通过查看两个元素所指向的 “方向” 来理解它们之间的关系,而不是仅仅根据它们各自的值进行比较。

想象一下,你是一名书籍爱好者,并且你对三本书进行了评分:《月球之谜》、《海洋的秘密》和《凤凰飞翔》。 你已按照 1 到 5 的等级对它们进行评分。你的朋友也按照相同的等级对这些相同的书进行了评分:

你们两个评分都可以表示为列表,或者用数学术语表示为 “向量”,表示为 [5, 3, 4] 和 [4, 2, 4]。

你和你的朋友有类似的评分吗? 你可以查看列表并得出定性的 “是的,它们非常接近”,或者你可以使用余弦相似度来达到定量测量! 我们将回到这个例子,但余弦相似度是一个在搜索引擎、自然语言处理和推荐系统等领域有着深远应用的概念。

余弦相似度提供了一种理解数据如何相互关联的方法,而不会陷入每个数据点所代表的具体细节的困境。 它还允许我们快速将信息与数十、数百甚至数千个元素进行比较。

余弦相似度广泛应用于自然语言处理 (NLP)、搜索算法和推荐系统等应用中。 它提供了一种强大的方法来理解文档、数据集或图像之间的语义相似性。 例如,向量搜索引擎中经常使用相似度来查找与给定查询最相关的记录,从而使搜索过程更加高效和精确。 (有关向量搜索的更多信息,你可以参考这篇文章!)

余弦相似度的定义

余弦相似度是衡量多维空间中两个非零向量之间角度余弦的度量。 稍后我们将了解其确切含义,但现在只需理解该值越接近 1,向量就越相似。 余弦相似度是有效的,因为它捕获向量的方向(或“方向”)而不是它们的大小,这使得它对数据模式的相似性敏感,而对向量的大小不敏感。

在数学上,它计算余弦相似度。 请注意,执行余弦相似度的最有效方法是将所有向量标准化为单位长度,并改为使用 dot_product。 仅当需要保留原始向量且无法提前对其进行标准化时,才应使用余弦。 文档 _score 的计算方式为 (1 + cosine(query, vector)) / 2。余弦相似度不允许向量具有零幅度,因为在这种情况下未定义余弦。

从余弦的曲线我们可以看到,当向量的角度为 0 时,余弦的值为最大 1。但凡有一些偏差,那么它的值就会变小 (0-1)。

一个例子

让我们回顾一下我们的图书评级示例。 我们有两个向量:

你的评分:[5, 3, 4]

你朋友的评分:[4, 2, 4]

使用余弦相似度,我们可以量化这些向量的相似程度。 余弦相似度将返回 -1 到 1 之间的值; 值越接近 1 表示相似度越高。 在我们的示例中,计算余弦相似度得到的值为 0.9899,这表明你和你的朋友对书籍的品味非常相似。 如果你有另一个朋友的评分为 [1, 5, 2],则余弦相似度将为 0.7230,表明品味不太相似。

math3d.org 网站可以提供一种可视化二维和三维向量的有用方法。 通过我们简单的示例向量,我们可以看到 [5, 3, 4] 和 [4, 2, 4] 之间的角度小于 [5, 3, 4] 和 [1, 5, 2] 之间的角度:

如果你想知道 “如果较小的角度意味着两个向量更相似,为什么我们不只使用角度 - 为什么所有这些复杂的数学?”,我们稍后会回答!

数据分析和 NLP 的重要性

余弦相似度在数据分析和自然语言处理等领域非常宝贵。 在 NLP 中,它经常用于文本挖掘、情感分析和文档聚类等任务。 该指标有助于比较两段文本以了解它们的语义相似性,这对于做出准确的推荐或分类至关重要。

余弦相似度与其他相似度度量有何不同

有多种方法可以测量数据集之间的相似性,欧几里得距离是另一种常用的度量标准。 欧几里德距离关注的是空间中两点之间的直线距离,而余弦相似度关注的是两个向量之间的角度。 这使得余弦相似性在捕获两组数据之间的模式相似性方面更加稳健,即使它们的大小不同。

如果我们想得到欧几里得的直线距离,我们可以在 dense vector 数据类型里设置 similarity: l2_norm。

例如,如果两个文档具有相同的单词但频率不同,则欧几里得距离可能会由于幅度(频率)的差异而认为它们完全不同。 然而,余弦相似度会更有效地捕获它们的相似度,因为它对单词的频率不太敏感,而更关注它们在文档中的存在或不存在。

余弦相似度的 “近亲” 是点积相似度。 它通常在矢量已经归一化(其大小为 1)时使用,从而避免除以其大小的乘积(始终为 1!)的计算步骤。 许多向量嵌入模型输出归一化向量,使点积相似度计算更快。

如果我们想得到点击 (dot product) 相似度,我们可以在 dense vector 里设置 simliarity: dot_product

通过 Elasticsearch 上的向量搜索将余弦相似度付诸实践

综上所述,余弦相似度提供了一种稳健、有效的相似度测量方法,具有广泛的应用,特别是在 NLP 和数据分析领域。 它关注向量的方向而不是大小,这使其与欧几里得距离等其他相似性度量区分开来。 无论你是在分析文本数据、提出建议还是进行复杂的数据分析,了解余弦相似度的细微差别都会非常有益。

准备好将余弦相似度付诸实践了吗? 请详细阅读文章 “Elasticsearch:如何部署 NLP:文本嵌入和向量搜索”。对于之前的评分向量例子,我们可以参考文章 “Elasticsearch:基于 Vector 的打分”。

余弦相似度的优点

余弦相似度是一种广泛使用的度量,在各种应用中具有多种优势,例如文本分析、推荐系统等。 以下是一些使其成为测量向量之间相似性的首选的主要优点。

不依赖于规模而变化

余弦相似度是不依赖于规模而变化,这意味着它不受向量大小的影响。 这在你只想关注向量的方向性而不是它们的长度的情况下特别有用。 无论向量中的值是数千万还是数百万,余弦相似度都将保持不变,从而使其在不同尺度上具有通用性。

降维

使用余弦相似度的另一个优点是它与主成分分析 (PCA) 和 t 分布随机邻域嵌入 (t-SNE) 等技术的兼容性。 由于它以角度而不是距离来衡量相似性,因此你可以减少向量的维度,而不会显着影响余弦相似性度量。

简单高效

计算余弦相似度的公式很简单,只需要向量及其大小的点积。 这种简单性带来了高效的计算,使其适合实时应用程序和大型数据集。

角度测量

与其他基于距离的相似性度量不同,余弦相似性考虑了向量之间的角度,提供了更直观的相似性感觉。 角度越小表示相似度越高,并且度量范围在 -1 和 1 之间,使解释更容易。

广泛应用于文本分析

余弦相似度在文本分析领域特别流行。 当文档转换为嵌入向量时,余弦相似度有效地捕获了不同文档之间的 “角度”,突出了内容的相关程度。

通过考虑这些优势,就可以清楚为什么余弦相似度是各种机器学习和数据科学应用中的流行选择。

揭示余弦相似度的力量

在结束时,让我们花点时间总结一下我们在这篇关于相似性的广泛指南中讨论的内容。 我们深入研究了这个令人着迷的指标的核心原理,向你展示了它的数学基础。 不要忘记它的众多优点,包括其规模不变性以及与降维技术的兼容性,这使其成为机器学习和数据科学领域的重要工具。

如果你想了解更关于 Elasticsearch 在向量搜索领域里的应用,请详细阅读 “Elastic:开发者上手指南” 中的 “NLP - 自然语言处理及向量搜索” 章节。\

更多阅读:Elasticsearch:如何使用 Elasticsearch 和 Python 构建面部识别系统

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

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

相关文章

ESP32外部中断原理详解及代码示例

一、为什么要使用中断 ESP32是一个集成了Wi-Fi、蓝牙并支持低功耗的微控制器。它有许多GPIO(通用输入/输出)引脚,可以用于连接各种外部设备,如传感器、按钮、开关等。 在使用这些外部设备时,我们经常需要知道它们何时…

服务器数据恢复-RAID5常见故障的数据恢复方案

raid5阵列常见故障: 1、服务器硬件故障或者RAID阵列卡故障; 2、服务器意外断电导致的磁盘阵列故障; 3、服务器RAID阵列阵列磁盘出现物理故障,如:电路板坏、磁头损坏、盘面划伤、坏扇区、固件坏等; 4、误操作…

第二证券:10家央企集体行动!9月至今逾百家公司回购增持

10月16日,10家央企连续公告,掀起了新一轮回购增持潮。其间,5家上市公司发布新增增持方案,约5亿~16.3亿元;2家上市公司发布增持打开,估计约23.43亿元;1家上市公司新增回购方案&#x…

3dmax中的 (Corona 9)cr渲染器怎么渲染?cr渲染器使用教程

Corona 9渲染器在3ds Max和Cinema 4D中应用广泛,是一款高效且功能强大的渲染器,得到了许多用户的好评。 Corona 9有以下几个主要的特点: 出色的渲染速度:Corona 9被证明是一个快速且高效的渲染引擎,它能够在保证高质…

ps制作透明公章 公章变透明 ps自动化批量抠图制作透明公章

ps制作透明公章 公章变透明 1、抠图制作透明公章2、ps自动化批量抠图制作透明公章 1、抠图制作透明公章 2、ps自动化批量抠图制作透明公章 点击窗口-动作 命名完成后 点击记录 点击记录后 动作处于录制状态 我们下面把需要的图片处理操作在ps界面点击一遍即可 就会被动作自动…

16 个 Linux 最佳 Markdown 编辑器(2)

对于初学者来说,Markdown 是一个用 Perl 编写的简单且轻量级的工具,它使用户能够编写纯文本格式并将其转换为有效的 HTML(或 XHTML)。它是一种易于阅读、易于编写的纯文本语言,也是一种用于文本到 HTML 转换的软件工具…

诚迈科技董事长王继平出席中国(太原)人工智能大会并发表演讲

10月14日—15日,2023中国(太原)人工智能大会在山西省太原市举办。诚迈科技在大会上全面展示了其在人工智能领域的一系列创新技术与解决方案,诚迈科技董事长、统信软件董事长王继平受邀出席产业数字化转型论坛并发表主题演讲&#…

传输机房的基本结构

文章目录 传输机房主要结构 传输机房主要结构 ODF (Optical Distribution Frame),光纤配线架,是专为光纤通信机房设计的光纤配线设备,具有光缆固定和保护功能、光缆终接功能、调线功能,完成从设备间纤缆连…

CISP与NISP网络安全证书中渗透测试都需要了解什么?

网络信息安全领域中的渗透测试专家是未来薪水增长潜力较好的岗位之一。那渗透测试都需要了解那些知识领域呢? 第一阶段(渗透测试初级):kali linux 安全配置和优化、安全测试基本工具、burpsuite、Burp 进行 Web 漏洞扫描与分析、…

如果后端返回了十万条数据要你插入到页面中,你会怎么处理?

当面临需要插入大量数据到页面的情况时,下面是一些建议的处理方法: 分页加载:考虑将数据分成多个页面,每次只加载当前页面所需的数据。这样可以减少一次性加载大量数据对页面性能的影响,并提供更好的用户体验。 虚拟滚…

TCP/IP(十七)实战抓包分析(一)ICMP

一 TCP实战抓包分析 网络排查案例 ① 抓包分析涉及的内容 关于: TCP理论知识和tcpdump命令的知识,前面已经铺垫过了,这里不再赘述下面罗列了TCP的重点知识 客户端工具: curl、wget、postman、telnet、浏览器、ncwget --bind-addressADDRESS 指定…

Devdept Eyeshot Fem 2024.1 Crack

Eyeshot 是.NET 的 CAD 控件。它原生支持Windows Forms和Windows Presentation Foundation。它附带四个不同的Visual Studio工具箱项目:用于 2D 和 3D 几何创建或编辑的设计、用于自动 2D 视图生成的 绘图、使用线性静态分析进行几何验证的模拟以及用于CNC刀具路径生…

c 语言基础:L1-041 寻找250

对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式: 输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。 输出格式: 在一行中输出第一…

户外LED大屏推广的精确受众分析-华媒舍

随着科技的不断发展和人们对广告推广方式的需求不断变化,户外LED大屏作为一种新兴的广告形式,吸引了越来越多企业的注意。要想提高广告推广效果,就需要进行精确受众分析,以确保广告准确地传达给目标受众。本文将介绍户外LED大屏推…

如何将IDEA控制台输出的路径折叠起来,只留到java.exe

参考资料: idea运行时显示一堆路径_idea打印sql出现省略号-CSDN博客 1.问题现象: 2.预期效果: 3.问题产生原因: 环境变量没配好,重新配好就行了。(注:我配了,没成功,重新新建了一个m…

figma拉伸画板,导致元素变形,一键搞定

先来看问题,第一张是原图,第二张是拉伸画板后出现的问题 老样子废话不多说,直接上解决办法! MAC按住Cmd进行拉伸,windows按住Ctrl进行拉伸即可!

找回共享盘里被误删文件的几种方法

在我们使用共享盘进行文件存储和共享的过程中,不可避免地会遇到误删文件的情况。而这些文件可能是我们努力工作的成果,或者是珍贵的回忆。因此,本文将介绍一些方法来帮助您找回共享盘中误删的文件。 图片来源于网络,如有侵权请告知…

通过商品ID查询京东商品详情数据,可以拿到商品标题,商品价格,商品库存,商品销量,商品sku数据等,京东API接口

要通过商品ID查询京东商品详情数据,可以按照以下步骤进行: 在京东开放平台注册开发者账号,并创建应用。在创建应用时,选择商品API权限。在您的应用中,找到获取商品详情数据的接口。京东开放平台提供了多个API接口来获…

(实操)生命周期配置

Hello大家好。 在本课时我们将了解如何使用S3的生命周期配置来管理我们的对象。 回到S3控制台,选择iloveawscn-saa这个存储桶,然后点击上面的“管理”。在这里,我们可以创建生命周期规则,我们点击“创建生命周期规则”。…

【137.只出现一次的数字Ⅱ】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int singleNumber(vector<int>& nums) {int bitset0;for(int i0;i<32;i){int sum0;for(auto num:nums){if((num>>i)&1){sum;}}sum%3;if(s…