余弦相似度

embedded/2024/11/27 7:45:12/

余弦相似度(Cosine Similarity) 是一种常用的度量两个向量之间相似度的方法,尤其适用于文本分析、信息检索、推荐系统等领域。它的核心思想是通过计算两个向量夹角的余弦值来衡量它们的相似度,而不是直接计算向量的欧几里得距离。余弦相似度的值范围从 -1 到 1,值越接近 1 表示两个向量越相似,值越接近 -1 表示两个向量越不相似。

1. 余弦相似度的定义

对于两个向量 A \mathbf{A} A B \mathbf{B} B,其余弦相似度可以表示为:
Cosine Similarity ( A , B ) = A ⋅ B ∥ A ∥ ∥ B ∥ \text{Cosine Similarity} (\mathbf{A}, \mathbf{B}) = \frac{\mathbf{A} \cdot \mathbf{B}}{\|\mathbf{A}\| \|\mathbf{B}\|} Cosine Similarity(A,B)=A∥∥BAB

其中:

  • A ⋅ B \mathbf{A} \cdot \mathbf{B} AB是向量 A \mathbf{A} A B \mathbf{B} B的点积。
  • ∥ A ∥ \|\mathbf{A}\| A ∥ B ∥ \|\mathbf{B}\| B 是向量 A \mathbf{A} A B \mathbf{B} B的模长(或范数)。

点积和向量的模长计算公式如下:

  • 点积: A ⋅ B = ∑ i = 1 n A i B i \mathbf{A} \cdot \mathbf{B} = \sum_{i=1}^{n} A_i B_i AB=i=1nAiBi
  • 向量的模长: ∥ A ∥ = ∑ i = 1 n A i 2 \|\mathbf{A}\| = \sqrt{\sum_{i=1}^{n} A_i^2} A=i=1nAi2

2. 余弦相似度的意义

  • 值范围:余弦相似度的结果是一个介于 -1 和 1 之间的值:
    • 1 表示完全相同的方向(即两个向量完全相似)。
    • 0 表示没有任何相似性(即两个向量垂直,方向完全不同)。
    • −1 ∼ \sim 1 表示完全相反的方向(即两个向量完全不相似)。
  • 不受向量大小影响:余弦相似度的计算仅考虑向量的方向,而不受其大小(长度)的影响。这使得它在许多实际应用中非常有效,尤其是在文本数据的向量化表示中。

3. 在 MATLAB 中计算余弦相似度

在 MATLAB 中,可以使用内置函数来计算两个向量的余弦相似度。下面是一个示例:

示例:计算两个向量的余弦相似度
% 定义两个向量 A 和 B
A = [1, 2, 3];
B = [4, 5, 6];% 计算点积
dot_product = dot(A, B);% 计算向量的模长
norm_A = norm(A);
norm_B = norm(B);% 计算余弦相似度
cosine_similarity = dot_product / (norm_A * norm_B);% 输出结果
disp(['Cosine Similarity: ', num2str(cosine_similarity)]);
解释:
  • dot(A, B):计算两个向量 A 和 B 的点积。
  • norm(A):计算向量 A 的模长。
  • 余弦相似度由公式 A ⋅ B ∥ A ∥ ∥ B ∥ \frac{A \cdot B}{\|A\| \|B\|} A∥∥BAB得到,表示两个向量的相似度。

4. 应用场景

  • 文本相似度计算:通过将文本转换为向量(例如使用词袋模型、TF-IDF 等),可以计算不同文本之间的余弦相似度来判断文本的相似性。
  • 推荐系统:在推荐系统中,余弦相似度用于衡量用户之间或物品之间的相似度,帮助预测用户的兴趣。
  • 图像处理:在图像处理中,余弦相似度可以用于比较图像的特征向量,帮助实现图像检索和匹配。

5. 使用 MATLAB 的 cosine 函数

MATLAB 提供了 cosine 函数来直接计算两个向量之间的余弦相似度(这只适用于计算余弦距离,通常是相似度的补充形式):

% 定义两个向量 A 和 B
A = [1, 2, 3];
B = [4, 5, 6];% 计算余弦距离(cosine distance)
cosine_distance = cosine(A, B);% 输出结果
disp(['Cosine Distance: ', num2str(cosine_distance)]);

http://www.ppmy.cn/embedded/140841.html

相关文章

SpringBoot(9)-Dubbo+Zookeeper

目录 一、了解分布式系统 二、RPC 三、Dubbo 四、SpringBootDubboZookeeper 4.1 框架搭建 4.2 实现RPC 一、了解分布式系统 分布式系统:由一组通过网络进行通信,为了完成共同的任务而协调工作的计算机节点组成的系统 二、RPC RPC:远程…

18:(标准库)DMA二:DMA+串口收发数据

DMA串口收发数据 1、DMA串口发送数据2、DMA中断串口接收定长数据包3、串口空闲中断DMA接收不定长数据包 1、DMA串口发送数据 当串口的波特率大于115200时,可以通过DMA1进行数据搬运,以防止数据的丢失。如上图所示:UART1的Tx发送请求使用DMA1的…

搜维尔科技:研究人员如何使用SenseGlove Nova触觉反馈手套远程操作机器人手

研究人员如何使用SenseGlove Nova触觉反馈手套远程操作机器人手 搜维尔科技:研究人员如何使用SenseGlove Nova触觉反馈手套远程操作机器人手

Web 表单开发全解析:从基础到高级掌握 HTML 表单设计

文章目录 前言一、什么是 Web 表单?二、表单元素详解总结前言 在现代 Web 开发中,表单 是用户与后端服务交互的重要桥梁。无论是用户登录、注册、搜索,还是提交反馈,表单都无处不在。在本文中,我们将从基础入手,全面解析表单的核心知识点,并通过示例带你轻松掌握表单开…

001 MATLAB介绍

前言: 软件获取渠道有很多,难点也就是百度网盘下载慢; 线上版本每月有时间限制。 01 MATLAB介绍 性质: MATLAB即Matrix Laboratory 矩阵实验室的意思,是功能强大的计算机高级语言, 已广泛应用于各学科研究部门、…

《硬件架构的艺术》笔记(九):电磁兼容性能设计指南

简介 电子线路易于接收来自其他发射器的辐射信号,这些EMI(电磁干扰)使得设备内毗邻的元件不能同时工作。这就有必要进行电磁兼容设计以避免系统内有害的电磁干扰。 确保设备不产生多余的辐射,设备也不易受到射频辐射的干扰&…

华纳云:服务器网络延迟问题可能由哪些因素引起?

服务器网络延迟是许多在线服务性能问题的根源,可能会导致网站加载缓慢、数据传输延迟甚至服务中断。网络延迟可能由多种原因引起,如硬件问题、网络配置错误、带宽不足或外部因素等。了解如何识别和解决这些问题对于确保服务器稳定性和提高用户体验至关重…

【已解决】ensp启动报错“启动设备AR1失败”

如果你在尝试过报错弹窗提供的解决办法之后依旧没有解决问题【比如hyper-v、网络连接的配置这些】,这篇文章或许会有帮助。 我的拓扑结构如下:(这是问题解决后启动了的截图) 第一次启动时报错:“启动设备AR1失败”&am…