首页 > 其他分享 >常用的相似度度量总结:余弦相似度,点积,L1,L2

常用的相似度度量总结:余弦相似度,点积,L1,L2

时间:2023-10-15 12:11:24浏览次数:37  
标签:点积 距离 余弦 L2 相似 向量 度量

前言 相似性度量在机器学习中起着至关重要的作用。这些度量以数学方式量化对象、数据点或向量之间的相似性。理解向量空间中的相似性概念并采用适当的度量是解决广泛的现实世界问题的基础。本文将介绍几种常用的用来计算两个向量在嵌入空间中的接近程度的相似性度量。

本文转载自DeepHub IMBA

作者:Frederik vl

仅用于学术分享,若侵权请联系删除

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

CV各大方向专栏与各个部署框架最全教程整理

【CV技术指南】CV全栈指导班、基础入门班、论文指导班 全面上线!!

余弦相似度

余弦相似度(cos (θ))值范围从-1(不相似)到+1(非常相似)。从下图可以看出,点A(1.5, 1.5)和点B(2.0, 1.0)在二维嵌入空间中距离很近。当计算余弦相似度时,得到0.948的值也可以确认两个向量非常相似。当较点A(1.5, 1.5)和点C(-1.0, -0.5)的相似度时,余弦相似度为-0.948,表明两个向量不相似。通过观察也可以看到它们在嵌入空间中方向相反。cos (θ)值为0表示两个向量彼此垂直,既不相似也不不同。

要计算两个向量之间的余弦相似度,可以简单地用两个向量的点积除以它们长度的乘积。余弦相似度主要考虑两个向量之间的角度来确定它们的相似度,并且忽略向量的长度。

在Python中计算余弦相似度很简单。我们可以将相似值cos(θ)转换为两个向量之间的角度(θ),通过取反余弦。

import torch
import torch.nn.functional as F
import math


#Create 3 Vectors
A = torch.tensor([1.5,1.5])
B = torch.tensor([2.0,1.0])
C = torch.tensor([-1.0,-0.5])


# Calculate cosine similarity cos( ):
cos = F.cosine_similarity(A, B, dim=0)
print("Cosine Similarity:", cos)


# Calculate the angle  :
# acos is the inverse of cos(x)
theta = math.acos(cos) 


# Convert radians to degrees
theta_degrees = math.degrees(theta)


print("Angle in radians:", theta)
print("Angle in degrees:", theta_degrees)

 

点积

点积是一种常用的相似度度量。点积和余弦相似度是密切相关的概念。点积的取值范围从负无穷到正无穷,负值表示方向相反,正值表示方向相同,当向量垂直时为0。点积值越大表示相似性越大。下图显示了点P1与剩余点P2到P5之间的点积的计算。

点积可以从余弦方程推导出来:通过将两个向量之间夹角的余弦值乘以两个向量的长度就得到点积,如下图所示。点积受到向量嵌入长度的影响,这在选择相似性度量时可能是一个关键的考虑因素

点积是如何影响相似性度量呢?

假设你正在计算一组科学研究论文的相似度。研究论文嵌入向量的长度与被引用次数成正比。使用余弦相似度来计算研究论文之间的相似度是很常见的。如果使用点积,研究论文之间的相似性是如何变化的?

余弦相似度考虑向量的方向和大小,使其适用于向量的长度与其相似度不直接相关的情况。当使用点积时只有向量的大小起作用,方向就不那么重要了。

高被引次数(较长的向量)的论文与其他高被引论文的点积相似度得分更高,因为它们的量级对结果的贡献更大。低被引次数(较短的向量)的论文与高被引次数的论文的点积相似度得分较低,因为它们的量级较小。

曼哈顿(L1)和欧几里得(L2)距离

曼哈顿距离通过将每个维度的绝对差相加来计算距离,而欧几里得距离则计算点之间的直线距离。

曼哈顿距离适用于涉及网格状运动的场景,或者当单个维度具有不同的重要性时。当测量最短路径或当所有维度对距离的贡献相等时,欧几里得距离是理想的。

在大多数情况下,对于同一对点,曼哈顿距离比欧几里得距离产生更大的值。随着数据维数的增加,与欧几里得距离度量相比,曼哈顿距离成为首选。

曼哈顿距离L1

欧氏距离L2

曼哈顿距离是沿着网格线行走的距离,而欧几里得距离是直线距离。这两种距离在许多领域都有广泛的应用,例如在机器学习、图像处理、路径规划等方面。

总结

这四种距离度量方法各自有不同的应用场景和用途,选择哪种度量方法取决于具体的问题和数据类型。曼哈顿距离和欧几里得距离适用于空间坐标的距离测量。

曼哈顿距离常用于计算城市街道的距离,也用于特征选择和聚类等数据分析任务。欧几里得距离广泛用于空间中的距离测量,机器学习、数据挖掘和图形处理等领域。

点积距离和余弦相似度通常用于向量或文本数据的相似性度量。主要用于向量相似性的度量,如文本挖掘和自然语言处理中的文档相似性,或信息检索、推荐系统等领域。

 

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:470899183。群内有大佬负责解答大家的日常学习、科研、代码问题。

其它文章

分享一个CV知识库,上千篇文章、专栏,CV所有资料都在这了

明年毕业,还不知道怎么做毕设的请抓紧机会了

LSKA注意力 | 重新思考和设计大卷积核注意力,性能优于ConvNeXt、SWin、RepLKNet以及VAN

CVPR 2023 | TinyMIM:微软亚洲研究院用知识蒸馏改进小型ViT

ICCV2023|涨点神器!目标检测蒸馏学习新方法,浙大、海康威视等提出

ICCV 2023 Oral | 突破性图像融合与分割研究:全时多模态基准与多交互特征学习

听我说,Transformer它就是个支持向量机

HDRUNet | 深圳先进院董超团队提出带降噪与反量化功能的单帧HDR重建算法

南科大提出ORCTrack | 解决DeepSORT等跟踪方法的遮挡问题,即插即用真的很香

1800亿参数,世界顶级开源大模型Falcon官宣!碾压LLaMA 2,性能直逼GPT-4

SAM-Med2D:打破自然图像与医学图像的领域鸿沟,医疗版 SAM 开源了!

GhostSR|针对图像超分的特征冗余,华为诺亚&北大联合提出GhostSR

Meta推出像素级动作追踪模型,简易版在线可玩 | GitHub 1.4K星

CSUNet | 完美缝合Transformer和CNN,性能达到UNet家族的巅峰!

AI最全资料汇总 | 基础入门、技术前沿、工业应用、部署框架、实战教程学习

计算机视觉入门1v3辅导班

计算机视觉交流群

聊聊计算机视觉入门

标签:点积,距离,余弦,L2,相似,向量,度量
From: https://www.cnblogs.com/wxkang/p/17765478.html

相关文章

  • Python中图像相似性度量方法汇总
    1.引言在当前到处充满着图像的世界里,测量和量化图像之间的相似性已经成为一项关键的任务。无论是图像检索、内容推荐还是视觉搜索,图像相似性方法在现代计算机视觉的应用中都发挥着关键的作用。幸运的是,Python提供了大量的工具和库,使开发人员和研究人员都可以快速探索和实现这些功......
  • python_两两比较计算相似矩阵
    距离矩阵余弦距离矩阵余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比欧氏距离,余弦距离更加注重两个向量在方向上的差异点集内或矩阵内两两元素之间的距离矩阵##简单使用两重循环defcompute_squared_EDM_method(X):#获得矩阵都行和列,因为是行向......
  • WSL2中尝试对TF卡进行一些操作
    背景学习嵌入式linux中,其中不乏需要对TF卡进行操作的,记录下安装USBIPD首先因为是在WSL2中进行的操作,所以需要usbipd这个工具,windows跟wsl2中都需安装相应工具,自行百度https://www.cnblogs.com/qi-xmu/p/16093878.html对TF卡做一些前置操作一般tf卡的文件系统格式为NTFS,......
  • 解决PowerDesigner 16 Generate Datebase For Sql2005/2008 对象名sysproperties无效
    解决PowerDesigner16GenerateDatebaseForSql2005/2008对象名sysproperties无效的问题在PowerDesigner16中生成的sql语句,在执行的时候报错:对象名sysproperties无效的错误;造成此问题的原因是由于Sql2005、2008删除了系统表sysproperties而改用sys.extended_proper......
  • 设计的相似与思潮发展
    很多时候,读的书少, 见得人少, 往往会出现一种情况, 在处理一些设计问题时, 自己构思了一些很精妙的解决方案, 然后某一天突然发现, 原来也有人在做同样的事情, 而且解决方案是如此的相似. 一般这种情况意味着两点:1. 你的解决方案大概率是很好的. 因为有同样的人在......
  • WSL2 配置过程及常用命令
    01WSL2安装1.1启动WSL以管理员身份启动Terminal运行如下命令dism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestart1.2启动虚拟机平台以管理员身份启动Terminal运行如下命令dism.exe/online/enable-feature/feat......
  • 固定panel1,panel2适应窗体变化
    固定panel1,panel2适应窗体变化如果您想要固定Panel1并且让Panel2适应窗体大小的变化,可以使用以下方式设置SplitContainer的属性: '设置SplitContainer的FixedPanel属性为Panel1,以固定Panel1的大小SplitContainer1.FixedPanel=FixedPanel.Panel1'设置Doc......
  • Oracle和达梦:相似度函数:UTL
    Oracle和达梦的:相似度函数:UTL函数:UTL_MATCH.edit_distance_similarityUTL_MATCH.edit_distance_similarity是Oracle数据库中的一个函数,用于计算两个字符串之间的相似度。它基于编辑距离算法,该算法用于衡量两个字符串之间的相似程度。编辑距离是通过计算将一个字符串转换为......
  • GEE:获取sentinel2指定区域多个单景影像的值(样本点提取)
    简介本教程的主要目的是获取指定单景影像,然后获取指定波段的影像值,按照获取指定波段的影像进行值提取至点,因为这里暂时没有好的方法对哨兵数据的具体属性值进行提取,所以在筛选哨兵影像的时候,需要手动获取每一景影像的id,然后按照单一影像多波段的组合来实现整体的值提取至点,......
  • windows10 安装wsl2
     https://deepinout.com/wsl-tutorials/37_installing_wsl2_on_windows_10.htmlwin10安装wsl2WSL(WindowsSubsystemforLinux)是Windows10中一项十分强大的功能,它可以使用户在Windows系统上直接运行Linux系统,并且两个系统之间可以相互通信。而在WSL2中,Windows子......