java 代码查重(三)常见的距离算法和相似度(相关系数)计算方法

news2025/5/23 2:33:31

目录

一、几种距离度量方法

【 海明距离 /汉明距离】

【 欧几里得距离(Euclidean Distance) 】

【 曼哈顿距离 】

【 切比雪夫距离 】

【 马氏距离 】

二、相似度算法

【 余弦相似度 】

【 皮尔森相关系数 】

【 Jaccard相似系数 /杰卡德距离】

【 Tanimoto系数 】

【点积相似度】

总结


一、几种距离度量方法

注: 机器学习中常用的几种距离度量方法

【 海明距离 /汉明距离

海明距离用于衡量两个等长向量之间的差异。测量两个等长字符串之间不同字符的数量

注意:

基于编辑的距离测量中, 包括:

✔️汉明距离(测量两个等长字符串之间不同字符的数量);

✔️编辑距离(根据将一个字符串转换为另一个字符串需要多少次更正来计算。允许的更正包括插入、删除和替换。)

【 欧几里得距离(Euclidean Distance)

欧氏距离,测量欧几里得空间中两点间的直线距离,在机器学习和数据挖掘中被广泛使用。特别是在m维空间中,它能够准确地衡量两点之间的真实距离。

【 曼哈顿距离 】

曼哈顿距离,顾名思义,描述的是在标准坐标系中,两点沿各坐标轴移动的距离之和。它就像象棋中的“車”那样,只能沿着横轴或纵轴进行移动,所经过的距离即为曼哈顿距离。这种距离度量方式在几何学和机器学习等领域有着广泛的应用

【 切比雪夫距离 】

切比雪夫距离是指向量空间中各维度上最大差值的度量。这种距离在某些领域具有其独特的应用价值,特别是在处理需要考虑最大差异的场景。

【 马氏距离 】

马氏距离,作为一种衡量点与分布之间距离的方法,能够有效地计算两个未知样本集的相似度。它充分考虑了各种特性之间的内在联系,并具有尺度无关性,即不受测量尺度的影响。

二、相似度算法

【 余弦相似度 】

余弦相似度通过向量夹角的余弦值衡量个体差异,其范围从-1到1,在处理文本、图像等数据时非常有用。

【 皮尔森相关系数 】

皮尔逊相关系数是一种用于度量两个变量的线性相关性的指标。取值范围为 -1 到 1。

1 表示完全正相关,-1 表示完全负相关,0 表示无相关性。

与余弦相似性计算类似,它通过计算两个集合的交集大小与集合大小的几何平均值之比来得出结果,在多个领域都有广泛的应用。

【 Jaccard相似系数 /杰卡德距离

Jaccard系数通过交集与并集的比例衡量样本相似度,在处理0和1的向量时表现出色,计算效率高。适用于集合相似性度量,字符串相似性度量 。它受数据大小影响较大,常用于协同过滤等场景。

由Jaccard相似度,可以转换成Jaccard距离: Jaccard Distance(A, B) = 1 - Jaccard(A, B)

举例: 

句子A:请问苹果电脑的价格

句子B:问下联想笔记本多少钱

分词提取特征:

SetA={请问,问苹,苹果,果电,电脑,脑的,的价,价格}

SetB={问下,下联,联想,想笔,笔记,记本,本多, 多少,少钱}

两个集合求交集得出相同语言片段个数为:0

两个集合求并集得出分母大小为:16

所以这两个句子的相似度为: 0/16=0

【 Tanimoto系数 】

Tanimoto系数,也被称为广义Jaccard相似系数,是用于向量相似性度量的一种方法,它与cosine相似度类似。

点积相似度

点积相似度是指:通过将两个向量的对应分量相乘后,将每个计算值相加求和得出结果,从而进行相似度检验。向量a和b的点积计算公式如下:

向量的点积也可以表示为向量的模与它们之间夹角余弦值的乘积:

总结

评估两个向量的相似程度有多种指标(Metrics):

  • 欧式距离(Euclidean Distance) -- 考虑的向量属性:幅度和方向
  • 余弦相似度(Cosine Similarity) -- 考虑的向量属性:只有方向
  • 点积相似度(Dot product similarity) -- 考虑的向量属性:幅度和方向

当两用户评分趋势一致时,但是评分值差距很大,余弦相似度倾向给出更优解。例如向量(3,3)和(5,5),这两位用户的认知其实是一样的,但是欧式距离给出的解显然没有余弦值合理。

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

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

相关文章

LangChain4j入门AI(六)整合提示词(Prompt)

前言 提示词(Prompt)是用户输入给AI模型的一段文字或指令,用于引导模型生成特定类型的内容。通过提示词,用户可以告诉AI“做什么”、 “如何做”以及“输出格式”,从而在满足需求的同时最大程度减少无关信息的生成。有…

redis--redisJava客户端:Jedis详解

在Redis官网中提供了各种语言的客户端,地址: https://redis.io/docs/latest/develop/clients/ Jedis 以Redis命令做方法名称,学习成本低,简单实用,但是对于Jedis实例是线程不安全的(即创建一个Jedis实例&a…

[CSS3]百分比布局

移动端特点 PC和手机 PC端网页和移动端网页的有什么不同? PC屏幕大,网页固定版心手机屏幕小,网页宽度多数为100% 谷歌模拟器 使用谷歌模拟器可以在电脑里面调试移动端的网页 屏幕尺寸 了解屏幕尺寸概念 屏幕尺寸: 指的是屏幕对角线的长度&#xff…

【Java微服务组件】异步通信P2—Kafka与消息

欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 欢迎评论交流,感谢您的阅读😄。 目录 引言Kafka与消息生产者发送消息到Kafka批处理发送设计消息的幂等信息确保消息送达acks配置…

R语言空间数据处理入门教程

我的课程《R语言空间数据处理入门教程》已重新恢复课程售卖,有需要的读者可以学习。 👇点击下方链接(文末“阅读原文”可直达),立即开启你的空间数据之旅: https://www.bilibili.com/cheese/play/ss13775…

使用zap,对web应用/API接口 做安全检测

https://www.zaproxy.org/getting-started/ 检测方法 docker pull ghcr.io/zaproxy/zaproxy:stable# 执行baseline测试 docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \ -t https://baseline.yeshen.org# 执行api测试 docker run -t ghcr.io/zaproxy/zaproxy…

UE5.6新版本—— 动画光照系统重点更新

UE5.6预览版已经可以下载,发布会在下个月的6.5号发布。 5.6界面UI设计 5.6 对引擎进行了大规模的重新设计,先看整体内容,主题UI设计 被调整了位置,左边大多数的选择,框选工具,吸附工具,挪到了左…

腾讯位置服务重构出行行业的技术底层逻辑

位置智能:重构出行行业的技术底层逻辑 在智慧城市建设与交通出行需求爆发的双重驱动下,位置服务正从工具层跃升为出行行业的核心基础设施。腾讯位置服务以“连接物理世界与数字空间”为核心理念,通过构建高精度定位、实时数据融合、智能决策…

如何用JAVA手写一个Tomcat

一、初步理解Tomcat Tomcat是什么? Tomcat 是一个开源的 轻量级 Java Web 应用服务器,核心功能是 运行 Servlet/JSP。 Tomcat的核心功能? Servlet 容器:负责加载、实例化、调用和销毁 Servlet。 HTTP 服务器:监听端口…

使用 Qt QGraphicsView/QGraphicsScene 绘制色轮

使用 Qt QGraphicsView/QGraphicsScene 绘制色轮 本文介绍如何在 Qt 中利用 QGraphicsView 和 QGraphicsScene 实现基础圆形绘制,以及进阶的色轮(Color Wheel)效果。 色轮是色彩选择器的常见控件,广泛应用于图形设计、绘画和 UI …

使用glsl 来做视频矫正

描述、优点 使用glsl来代替opencv的undistort 和 鱼眼矫正,并且最后使用opencv的LUT给glsl 来使用,来达到加速的目的,并且做到和opencv 一模一样的效果,达到实时视频的加速矫正。 优点: 没有cuda,也可以做到实时视频矫正,包含各类板子和amd的cpu,intel核显 矫正的基本作…

03-Web后端基础(Maven基础)

1. 初始Maven 1.1 介绍 Maven 是一款用于管理和构建Java项目的工具,是Apache旗下的一个开源项目 。 Apache 软件基金会,成立于1999年7月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性…

蓝桥杯19682 完全背包

问题描述 有 N 件物品和一个体积为 M 的背包。第 i 个物品的体积为 vi​,价值为 wi​。每件物品可以使用无限次。 请问可以通过什么样的方式选择物品,使得物品总体积不超过 M 的情况下总价值最大,输出这个最大价值即可。 输入格式 第一行…

DeepSeek源码解构:从MoE架构到MLA的工程化实现

文章目录 **一、代码结构全景:从模型定义到分布式训练****二、MoE架构:动态路由与稀疏激活的工程化实践****1. 专家路由机制(带负载均衡)****数学原理:负载均衡损失推导** **三、MLA注意力机制:低秩压缩与解…

【VLNs篇】02:NavGPT-在视觉与语言导航中使用大型语言模型进行显式推理

方面 (Aspect)内容总结 (Content Summary)论文标题NavGPT: 在视觉与语言导航中使用大型语言模型进行显式推理 (NavGPT: Explicit Reasoning in Vision-and-Language Navigation with Large Language Models)核心问题探究大型语言模型 (LLM) 在复杂具身场景(特别是视…

(T_T),不小心删掉RabbitMQ配置文件数据库及如何恢复

一、不小心删除 今天是2025年5月15日,非常沉重的一天,就在今早8点左右的时候我打算继续做我的毕业设计,由于开机的过程十分缓慢(之前没有),加上刚开机电脑有卡死的迹象,再加上昨天晚上关电脑前…

TDengine 安全部署配置建议

背景 TDengine 的分布式、多组件特性导致 TDengine 的安全配置是生产系统中比较关注的问题。本文档旨在对 TDengine 各组件及在不同部署方式下的安全问题进行说明,并提供部署和配置建议,为用户的数据安全提供支持。 安全配置涉及组件 TDengine 包含多…

蓝桥杯框架-LED蜂鸣器继电器

蓝桥杯框架-LED蜂鸣器继电器 一,新建工程文件二,配置keil三,完善框架 一,新建工程文件 在桌面上新建一个文件夹:用于存放所有工程文件 在文件夹中再建立一个文件夹DEMO_01:这是我们的第一个工程文件 在第…

uniapp-商城-64-后台 商品列表(商品修改---页面跳转,深浅copy应用,递归调用等)

完成了商品的添加和展示,下面的文字将继续进行商品页面的处理,主要为商品信息的修改的页面以及后天逻辑的处理。 本文主要介绍了商品信息修改页面的实现过程。首先,页面布局包括编辑和删除功能,未来还可添加上架和下架按钮。通过c…

Dify的大语言模型(LLM) AI 应用开发平台-本地部署

前言 今天闲着,捣鼓一下 Dify 这个开源平台,在 mac 系统上,本地部署并运行 Dify 平台,下面记录个人在本地部署Dify 的过程。 Dify是什么? Dify是一个开源的大语言模型(LLM)应用开发平台&#…