向量相似性度量的常用方法

news2024/11/18 8:40:39

向量相似性度量的常用方法

  • 0. 引言
  • 1. 欧氏距离(Euclidean distance)
  • 2. 余弦相似度(Cosine similarity)
  • 3. 汉明距离(Hamming distance)
  • 4. 点积相似度 (Dot Product Similarity)
  • 5. 曼哈顿距离 (Manhattan Distance)

0. 引言

今天花时间学习学习向量相似性度量的常用方法,痛苦自己一次,以后就轻松了。😼

1. 欧氏距离(Euclidean distance)

在这里插入图片描述

1.1 概念

欧氏距离是衡量两个向量之间“距离”的常用方法。它是在欧几里得空间中,两个点之间的最短直线距离。

1.2 计算公式

对于 n 维向量 x 和 y,欧氏距离计算公式如下:

d(x, y) = sqrt((x1-y1)^2 + (x2-y2)^2 + ... + (xn-yn)^2)

其中,x1, x2, …, xn 是 x 向量中的元素,y1, y2, …, yn 是 y 向量中的元素。

1.3 应用场景

欧氏距离在许多领域都有应用,例如:

  • 机器学习:欧氏距离常用于 k 最近邻算法 (KNN) 中,计算样本之间的距离
  • 图像检索:欧氏距离常用于图像检索中,计算图像之间的相似度
  • 推荐系统:欧氏距离常用于推荐系统中,计算用户之间的相似度

2. 余弦相似度(Cosine similarity)

在这里插入图片描述

2.1 概念

余弦相似度是衡量两个向量之间“方向”相似程度的常用方法。它是在向量空间中,两个向量夹角的余弦值。

2.2 计算公式

对于 n 维向量 x 和 y,余弦相似度计算公式如下:

cos(x, y) = (x1*y1 + x2*y2 + ... + xn*yn) / (||x|| * ||y||)

其中,x1, x2, …, xn 是 x 向量中的元素,y1, y2, …, yn 是 y 向量中的元素,||x|| 和 ||y|| 分别是 x 和 y 向量的模长。

向量的模长公式

对于 n 维向量 x,其模长计算公式如下:

||x|| = sqrt(x1^2 + x2^2 + ... + xn^2)

其中,x1, x2, …, xn 是 x 向量中的元素。

2.3 应用场景

余弦相似度在许多领域都有应用,例如:

  • 文本检索:余弦相似度常用于文本检索中,计算文本之间的相似度
  • 自然语言处理:余弦相似度常用于自然语言处理中,计算词语之间的相似度
  • 信息检索:余弦相似度常用于信息检索中,计算文档之间的相似度

3. 汉明距离(Hamming distance)

在这里插入图片描述

3.1 概念

汉明距离是衡量两个相同长度的字符串之间“差异”的常用方法。它是两个字符串中不同字符的数量。

3.2 计算公式

对于两个长度为 n 的字符串 x 和 y,汉明距离计算公式如下:

d(x, y) = n - Σ(x[i] == y[i])

其中,x[i] 和 y[i] 分别是 x 和 y 字符串中第 i 个字符,Σ 表示求和运算。

3.3 应用场景

汉明距离在许多领域都有应用,例如:

  • 通信:汉明距离常用于通信中,检测数据传输中的错误
  • 信息论:汉明距离常用于信息论中,衡量两个信息源之间的差异
  • 生物学:汉明距离常用于生物学中,比较 DNA 序列

4. 点积相似度 (Dot Product Similarity)

在这里插入图片描述

4.1 点积相似度定义

点积相似度 (Dot Product Similarity) 是衡量两个向量之间“相似度”的常用方法。它是两个向量的点积除以它们的模长的乘积。

4.2 点积相似度计算公式

对于 n 维向量 x 和 y,点积相似度计算公式如下:

sim(x, y) = (x * y) / (||x|| * ||y||)

其中,x * y 表示 x 和 y 的点积,||x|| 和 ||y|| 分别表示 x 和 y 向量的模长。

4.3 点积相似度性质

点积相似度具有以下性质:

  • **范围:**点积相似度的范围是 [-1, 1]。
  • **相似性:**点积相似度越大,两个向量越相似。
  • **正交性:**如果两个向量正交,则它们的点积相似度为 0。

4.4 点积相似度应用场景

点积相似度在许多领域都有应用,例如:

  • **文本检索:**点积相似度常用于文本检索中,计算文本之间的相似度
  • **自然语言处理:**点积相似度常用于自然语言处理中,计算词语之间的相似度
  • **推荐系统:**点积相似度常用于推荐系统中,计算用户之间的相似度

4.5 点积相似度与余弦相似度

点积相似度与余弦相似度密切相关。余弦相似度是点积相似度的一种归一化形式。它们之间的关系如下:

cos(x, y) = sim(x, y)

5. 曼哈顿距离 (Manhattan Distance)

在这里插入图片描述

5.1 曼哈顿距离定义

曼哈顿距离 (Manhattan Distance) 是衡量两个向量之间“距离”的常用方法。它是两个向量对应分量差的绝对值的总和。

5.2 曼哈顿距离计算公式

对于 n 维向量 x 和 y,曼哈顿距离计算公式如下:

d(x, y) = |x1-y1| + |x2-y2| + ... + |xn-yn|

其中,x1, x2, …, xn 是 x 向量中的元素,y1, y2, …, yn 是 y 向量中的元素。

5.3 曼哈顿距离性质

曼哈顿距离具有以下性质:

  • **非负性:**曼哈顿距离是非负的,对于任意向量 x 和 y,都有 d(x, y) >= 0。
  • 对称性:曼哈顿距离是对称的,对于任意向量 x 和 y,都有 d(x, y) = d(y, x)。
  • **三角不等式:**曼哈顿距离满足三角不等式,对于任意向量 x、y 和 z,都有 d(x, z) <= d(x, y) + d(y, z)。

5.4 曼哈顿距离与欧几里得距离

曼哈顿距离与欧几里得距离是两种常用的距离度量方法。它们的区别在于:

  • 曼哈顿距离是各个分量差的绝对值的总和,而欧几里得距离是各个分量差的平方和的平方根。
  • 曼哈顿距离的计算速度更快,而欧几里得距离的计算精度更高。

5.5 曼哈顿距离应用场景

曼哈顿距离在许多领域都有应用,例如:

  • **图像处理:**曼哈顿距离常用于图像处理中,计算图像之间的差异
  • **机器学习:**曼哈顿距离常用于机器学习中,计算样本之间的距离
  • **数据挖掘:**曼哈顿距离常用于数据挖掘中,计算数据点之间的相似度

完结!

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

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

相关文章

c语言按位与,按位或,按位异或,按位取反

1、按位与& 按位与的实现逻辑是相同为1&#xff0c;相异为0&#xff1b; 2、按位或 | 按位或的实现逻辑是有1为1&#xff0c;无一为0&#xff1b; 3、按位异或 ^ 按位或的实现逻辑是相同为0&#xff0c;相异为1&#xff1b; 4、按位取反 ~ 按位取反的实现逻辑是0改1&am…

Postman-Installation has failed

如图&#xff1a; 解决方法&#xff1a; 打开文件夹 Postman-win64-Setup 点击Postman.exe 即可

Nginx高级技术: 代理缓存配置

一、缓存说明 Nginx缓存&#xff0c;Nginx 提供了一个强大的反向代理和 HTTP 服务器功能&#xff0c;同时也是一个高效的缓存服务器。一般情况下系统用到的缓存有以下三种&#xff1a; 1、服务端缓存&#xff1a;缓存存在后端服务器&#xff0c;如 redis。 2、代理缓存&#…

L1-5 试试手气 【Java】

我们知道一个骰子有 6 个面&#xff0c;分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态&#xff0c;即它们朝上一面的点数&#xff0c;让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙&#xff0c;每次摇出的结果都满足以下两个条件&#xff1a; 1、每个骰子摇出…

llamma笔记:部署Llama2

1 申请Llama2 许可 Download Llama (meta.com) 地址似乎不能填中国 1.1 获取url 提交申请后&#xff0c;填的那个邮箱会受到一封meta发来的邮件&#xff0c;打码部分的url&#xff0c;之后会用得上 2 ubuntu/linux 端部署Llama2 2.1 git clone Llama2的github 仓库 bash g…

腾讯云2核4g服务器能多少人在线?2核4G云服务器支持多少并发?

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;5M带宽下载速度峰值可达640KB/秒&#xff0c;阿腾云以搭建网站为例&#xff0c;假设优化后平均大小为60KB&#xff0c;则5M带宽可支撑10个用户同时在1秒内打开网站&#xff0c;并发数为10&#xff0c;经阿腾云测试&a…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:WaterFlow)

瀑布流容器&#xff0c;由“行”和“列”分割的单元格所组成&#xff0c;通过容器自身的排列规则&#xff0c;将不同大小的“项目”自上而下&#xff0c;如瀑布般紧密布局。 说明&#xff1a; 该组件从API Version 9 开始支持。后续版本如有新增内容&#xff0c;则采用上角标单…

【矩阵】240. 搜索二维矩阵 II【中等】

搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a;每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22…

ArcGIS模型构建器Pro版_更多花活演示

相比较ArcMap的模型构建器&#xff0c;Pro里最主要的变化就是增加了一组逻辑工具&#xff1a; 逻辑工具用于控制模型中的流程流&#xff0c;它们返回的结果是true或false。 这个结果一般用于 if-else 分支逻辑&#xff0c;例如&#xff1a;如果某字段存在的时候&#xff0c;执…

【模拟string函数的实现】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 模拟string函数的实现 浅拷贝 深拷贝 vs和g下string结构的说明 总结 前言 模拟string函数的实现 浅拷贝 深拷贝 总结 前言 世上有两种耀眼的光芒&#…

某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

HarmonyOS NEXT应用开发—组件堆叠

介绍 本示例介绍运用Stack组件以构建多层次堆叠的视觉效果。通过绑定Scroll组件的onScroll滚动事件回调函数&#xff0c;精准捕获滚动动作的发生。当滚动时&#xff0c;实时地调节组件的透明度、高度等属性&#xff0c;从而成功实现了嵌套滚动效果、透明度动态变化以及平滑的组…

perfetto详解

1. perfettor基础 1.1 介绍 可以将Perfetto理解为systrace的升级版&#xff0c;用在更新的平台、新图表展示更多的信息。它可帮助开发者收集 Android 关键子系统&#xff08;如SurfaceFlinger/SystemServer/Input/Display 等 Framework 部分关键模块、服务&#xff0c;View系…

传输层/UDP/TCP协议

再谈端口号 TCP/IP协议用“源IP”&#xff0c;“源端口号”&#xff0c;“目的IP”&#xff0c;“目的端口号”&#xff0c;“协议号”&#xff0c;这样一个五元组来标识一个通信&#xff08;可以用netstat -n来查看&#xff09;。 端口号的划分和知名端口号 我们之前就说过&am…

Java学习笔记------常用API(四)

BigDecima 用于小数的精准计算 用来表示很大的小数 构造方法获取BigDecimal对象 public BigDecimal(double val)//有可能不精确&#xff0c;不建议使用 public BigDecimal(String val) 静态方法获取BigDecimal对象 public static BigDecimal valueOf(double val)//超出do…

居民健康监测小程序|基于微信小程序的居民健康监测小程序设计与实现(源码+数据库+文档)

居民健康监测小程序目录 目录 基于微信小程序的居民健康监测小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、健康科普管理 5.3公告类型管理 3、论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

ros、c++基于类的编程基础

基于class的编程结构&#xff0c;中间穿插ros的话题发布机制。 首先建立功能包&#xff1a; catkin_create_pkg control geometry_msgs message_generation message_runtime nav_msgs roscpp rospy std_msgs以上依赖基本上是大多数的ros消息所需要的依赖了。 然后确定我们的…

如何通过堡垒机JumpServer使用VisualCode 连接服务器进行开发

前言&#xff1a;应用场景 我们经常会碰到需要远程登录到内网服务器进行开发的场景&#xff0c;一般的做法都是通过VPN登录回局域网&#xff0c;然后配置ftp或者ssh使用开发工具链接到服务器上进行开发。如果没有出现问题&#xff0c;那么一切都正常&#xff0c;但到了出现问题…

解决游戏程序一运行就退出的问题

正文&#xff1a; 在游戏开发过程中&#xff0c;我们可能会遇到程序一运行就立即退出的情况。这种情况通常是由于程序中的某些逻辑错误或初始化问题导致的。 下面我们将分析可能的原因&#xff0c;并提供一些解决方案。 目录 正文&#xff1a; 原因分析&#xff1a; 解决方案…

第二百零六回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题的结果"相关的内容&#xff0c;本章回中将介绍自定义标题栏.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我…