向量距离度量中的几种计算公式

news2024/9/28 13:16:02

距离度量

衡量两条向量之间的距离,可以将某一张图片通过特征提取来转换为一个特征向量。衡量两张图片的相似度就可以通过衡量这两张图片对应的两个特征向量之间的距离来判断了。

1.欧式距离

欧式距离可以简单理解为两点之间的直线距离。对于两个n维空间点 a = ( x 1 , x 2 , … , x n ) a=(x_1, x_2, …, x_n) a=(x1,x2,,xn) b = ( y 1 , y 2 , … , y n ) b=(y_1, y_2, …,y_n) b=(y1,y2,yn),它们之间的欧式距离定义如下:

在这里插入图片描述

三维空间中边长为1的立方体

在三维空间中的边长为1的一个立方体,它的对角线之间的距离为 3 \sqrt3 3 ,如图2-1所示。这个距离值就是欧氏距离,也就是平时说得最多的“距离”。在图2-1中,若以A点为坐标原点建立空间直角坐标系,那么A点的位置为 ( 0 , 0 , 0 ) (0,0,0) (000),B点的位置为 ( 1 , 1 , 1 ) (1,1,1) (111),则A点与B点之间的距离也就是的模长:

在这里插入图片描述

2.曼哈顿距离

曼哈顿距离最初指的是区块建设的城市(如曼哈顿)中,两个路口间的最短行车距离,因此也被称为城市街区距离。对于两个n维空间 a = ( x 1 , x 2 , … , x n ) a=(x_1, x_2, …,x_n) a=(x1,x2,xn) b = ( y 1 , y 2 , … , y n ) b=(y_1, y_2, …, y_n) b=(y1,y2,,yn),它们之间的曼哈顿距离定义如下:

在这里插入图片描述

曼哈顿距离公式还是比较容易理解的,例如a=[1,2,3],b=[2,3,4],那么两个向量之间的曼哈顿距离可以表示如下:

∣ 1 − 2 ∣ + ∣ 2 − 3 ∣ + ∣ 3 − 4 ∣ = 3 |1-2| + |2-3| + |3-4| = 3 ∣12∣+∣23∣+∣34∣=3

求解曼哈顿距离的过程就是求两条向量中每个对应位置的元素之差的绝对值,然后将其求和的过程。

3.余弦距离

余弦距离指的是向量空间中两个向量间的夹角的余弦值,又称作余弦相似度。对于两个n维空间 a = ( x 1 , x 2 , … , x n ) a=(x_1, x_2, …,x_n) a=(x1,x2,xn) b = ( y 1 , y 2 , … , y n ) b=(y_1, y_2, …, y_n) b=(y1,y2,,yn),它们的余弦距离定义如下:

在这里插入图片描述

可以根据向量之间点乘的公式反推一下余弦距离的表达式, 对于两个向量 a = [ 1 , 2 , 3 ] a=[1,2,3] a=[123] b = [ 4 , 5 , 6 ] b=[4,5,6] b=[456],它们之间点积的计算过程如下:

a ⋅ b = ∣ a ∣ ⋅ ∣ b ∣ ⋅ c o s θ a \cdot b = |a|\cdot|b|\cdot cosθ ab=abcosθ

那么,这两个向量之间夹角θ的余弦值可以表示为:

在这里插入图片描述

这两个向量之间夹角的余弦值就是这两个向量之间的余弦相似度。将向量的计算过程带入式中,可以得到这两条向量之间的余弦相似度:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MethOwdn-1690541816242)(C:\Users\DELL-3020\AppData\Roaming\Typora\typora-user-images\image-20230727184904795.png)]

余弦相似度的数值范围也就是余弦值的范围,即 [ − 1 , 1 ] [-1, 1] [1,1],这个值越高也就说明相似度越大。可以看到,这两条向量之间的相似度非常接近1,可以说是非常相似的。也可以想象到,在三维空间中,这两条向量的差距其实并不是非常大,这也从侧面印证了余弦相似度的数值含义。

值得一提的是,有些时候希望这个数值的范围在 [ 0 , 1 ] [0, 1] [0,1]这个区间中,也就是对结果进行归一化处理。这个归一化过程可以利用余弦值的性质来完成:

c o s θ ′ = 0.5 + 0.5 ∗ c o s θ cosθ' = 0.5 + 0.5 * cosθ cosθ=0.5+0.5cosθ

余弦相似度是一种非常常用的衡量向量之间距离的方式,常用在人脸识别等特征相似度度量的场景中。

4.汉明距离

汉明距离在信息论中更常用,表示的是两个等长度的字符串中位置相同但字符不同的位置个数,。如字符串“011001”与字符串“101100”之间的汉明距离为4,也就是这两个字符串之间存在4个位置的不同,分别出现在第1、第2、第4和第6个字符的位置上。

汉明距离也可以用在某些图像相似度识别场景,如有种图像相似性识别算法叫作感知哈希算法(Perceptual Hash Algorithm),该算法可以将图片映射为一个哈希字符串,比较两个图片之间的相似度就可以通过判断两个哈希字符串之间不一致的位置有多少来实现,也就是计算汉明距离的过程。

5.杰卡德距离

杰卡德Jaccard相似系数计算数据集之间的相似度,计算方式为:数据集交集的个数和并集个数的比值。计算Jaccard similarity coefficient

杰卡德距离是用来衡量两个数据集差异性的一种指标,被定义为 1 减去杰卡德相似系数。对于二值变量,杰卡德距离等价于谷本系数。

Jaccard distance

杰卡德距离适合字符串相似性度量。

6.谷本距离

谷本距离Tanimoto主要用于衡量二值变量,对于二值变量,谷本距离公式可表示为:
tanimoto distance

在 Milvus 中,谷本距离仅支持二值变量。

值域从 0 到正无穷。

对于二值变量,谷本系数等价于杰卡德距离:

tanimoto coefficient

对于二值变量,谷本系数值域为 0 到+1(+1 的相似度最高)

7.超结构

超结构superstructure主要用来计算某化学结构与其超结构的相似度,值越小则相似度越大。
超结构的公式可表示为:

superstructure

其中

  • 分子式 B 是分子式 A 的超结构。
  • N A N_A NA 表示分子式 A 的化学指纹中二进制位的数量。
  • N B N_B NB 表示分子式 B 的化学指纹中二进制位的数量。
  • N A & B N_{A\&B} NA&B 表示分子式 A 和 B 的化学指纹中共有的二进制位的数量。

8.子结构

子结构substructure主要用来计算某化学结构与其子结构的相似度,值越小则相似度越大
子结构的公式可表示为:

substructure

其中

  • 分子式 B 是分子式 A 的子结构。
  • N A N_A NA 表示分子式 A 的化学指纹中二进制位的数量。
  • N B N_B NB 表示分子式 B 的化学指纹中二进制位的数量。
  • N A & B N_{A\&B} NA&B 表示分子式 A 和 B 的化学指纹中共有的二进制位的数量。

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

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

相关文章

实景三维在智慧矿山中的应用

项目背景 智慧矿山是以矿山数字化、信息化为前提和基础,对矿山生产、职业健康与安全、技术支持与后勤保障等进行主动感知、自动分析、快速处理,建设智慧矿山,最终实现安全矿山、无人矿山、高效矿山、清洁矿山的建设。 智慧矿山的可视化管理…

解决新版 Idea 中 SpringBoot 热部署不生效

标题 依赖中添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <opt…

组件开发系列--Apache Commons Chain

一、前言 Commons-chain是apache commons中的一个子项目,主要被使用在"责任链"的场景中,struts中action的调用过程,就是使用了"chain"框架做支撑.如果你的项目中,也有基于此种场景的需求,可以考虑使用它. 在责任链模式里&#xff0c;很多对象由每一个对象对…

纯nginx制作文件上传下载服务器

什么是webdav webdav 是一组超文本传输协议的技术集合&#xff0c;有利于用户键协同编辑和管理存储在万维网服务器文档。同时来说就是&#xff0c;webdav可以让用户直接存储&#xff0c;下载&#xff0c;编辑文件&#xff0c;操作文件需要进行用户认证 基于nginx快速搭建webdav…

ORA-00923: FROM keyword not found where expected

举个栗子呗&#xff0c;就是语法错误找不到“FROM”&#xff0c;也是少了逗号 数据库提示不精确 ERROR 1064 - You have an error in your SQL syntax&#xff1b;_spencer_tseng的博客-CSDN博客

倒立摆控制(SMART PLC串级PID控制)

专栏有好几篇倒立摆相关的文章,大家可以自行参考阅读,包括编码器角度测量以及一些模型介绍,这篇博客我们记录、介绍S7-200 SMART PLC进行倒立摆控制采用串级PID的调试过程。 1、倒立摆的串级PID控制 2、设置摆杆PID作用区域 角度作用区域,在其它文章有详细图示,大家可以…

文心一言 VS 讯飞星火 VS chatgpt (67)-- 算法导论6.5 6题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;67&#xff09;-- 算法导论6.5 6题 六、在 HEAP-INCREASE-KEY 的第 5 行的交换操作中&#xff0c;一般需要通过三次赋值来完成。想一想如何利用INSERTION-SORT 内循环部分的思想&#xff0c;只用一次赋值就完成这一交换操作? 文…

获取Bean的两种方法

简单获取Bean的两种方法 简单获取Bean的两种方法那么对于调用Bean对象时需要注意什么&#xff1f; 五大类注解自定义名称三种bean注入 简单获取Bean的两种方法 在之前使用spring时我们都是使用xml语句进行对象注入&#xff0c;而如果对于一个大型项目采用这种方法&#xff0c;…

Python_使用requests获取当当网榜单中的图书数据

使用requests获取当当网榜单中的图书数据 使用到的库概述发送请求xpath解析提取数据tips 完整代码 使用到的库 requestsetree 概述 主要抓取目标为 当当网图书畅销榜中近24小时畅销的图书信息 主要提取的数据为 排名、书名、评论数、推荐度、作者信息、出版时间、出版社、折扣…

MySQL主从复制(三十五)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、MySQL Replication概述 1.1 MySQL Replication优点&#xff1a; 二、MySQL复制类型 2.1 异步复制&#xff08;Asynchronous repication&#xff09; 2.2 全同步…

vue的条件渲染以及列表渲染的总结归纳加代码演示

&#x1f600;前言 本片文章是vue系列第4篇整理了vue的条件渲染以及列表渲染的总结归纳加代码演示 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我…

OR-Tools解决复杂调度问题:实际案例分析

目录 前言一、调度问题介绍二、案例分析2-1、护士调度问题2-2、作业车间调度问题 三、知识库3-1、collection3-2、CpModel().AddNoOverlap()3-3、CpModel().AddMaxEquality()3-4、cp_model.CpModel().NewIntVar()3-5、cp_model.CpModel().NewIntervalVar 总结 前言 调度问题是一…

干货 | 电路中为何需要串联小电阻?这样解释就懂了

干货 | 电路中为何需要串联小电阻&#xff1f;这样解释就懂了 一、电阻概念 电阻作为元器件&#xff0c;又叫作电阻器&#xff0c;导体的电阻通常用字母R表示&#xff0c;电阻的单位是欧姆&#xff08;ohm&#xff09;&#xff0c;简称欧&#xff0c;符号是Ω&#xff08;希腊字…

oracle,获取每日24*60,所有分钟数

前言&#xff1a; 为规范用户的时间录入&#xff0c;因此我们采用下拉的方式&#xff0c;让用户选择需要的时间&#xff0c;因此我们需要将一天24小时的时间拆分为类似00:00,00:01...23:00,23:01,23:59。因此我们需要生成24*601440行的下拉复选值。具体效果如下图所示。 思路 1…

langchina的PlayWrightBrowserToolkit (PlayWright 浏览器工具包)

langchina中的PlayWrightBrowserToolkit 好久不见了&#xff0c;朋友们&#xff0c;我&#xff08;小云&#xff09;也是好久不写博客了&#xff0c;随着ai的不断引进&#xff0c;和一大堆大语言的到来&#xff0c;我们今天就学习一下啊langchain这个大语言模型中PlaywrightBr…

如何快速用PHP取短信验证码

要用PHP获取短信验证码&#xff0c;通常需要连接到一个短信服务提供商的API&#xff0c;并通过该API发送请求来获取验证码。由于不同的短信服务提供商可能具有不同的API和授权方式&#xff0c;我将以一个简单的示例介绍如何使用Go语言来获取短信验证码。 在这个示例中&#xff…

硬件系统工程师宝典(34)-----FLASH电路如何设计?

各位同学大家好&#xff0c;欢迎继续做客电子工程学习圈&#xff0c;今天我们继续来讲这本书&#xff0c;硬件系统工程师宝典。 上篇我们了解了存储器可分为RAM和ROM&#xff0c;根据不同特性也可以逐级细分&#xff0c;并且简单介绍了EEPROM。今天我们讲一讲FLASH有哪几种&am…

软件测试四年,总结下功能测试用例设计思路

我们为什么要写好一份测试用例呢&#xff1f;测试同学应该都知道测试用例的重要性&#xff0c;测试用例就是我们测试的依据&#xff0c;也是测试过程中不能缺少的测试文档。 一、用例编写规范目的&#xff1a; 1、提高测试用例的可读性&#xff0c;可执行性、合理性。 2、测…

【论文阅读】通过解缠绕表示学习提升领域泛化能力用于主题感知的作文评分

摘要 本文工作聚焦于从领域泛化的视角提升AES模型的泛化能力&#xff0c;在该情况下&#xff0c;目标主题的数据在训练时不能被获得。本文提出了一个主题感知的神经AES模型&#xff08;PANN&#xff09;来抽取用于作文评分的综合的表示&#xff0c;包括主题无关&#xff08;pr…

Lambda表达式常见的Local variable must be final or effectively final原因及解决办法

目录 Local variable must be final or effectively final错误原因 解决办法按照要求定义为final&#xff08;不符合实情&#xff0c;很多时候是查库获取的变量值&#xff09;使用原子类存储变量&#xff0c;保证一致性AtomicReference常用原子类 其它 Local variable must be …