欧式距离和余弦距离

欧式距离

核心思想:直接计算“两点之间的直线距离”,适合需要物理空间或数值差异的场景。

1. 地理位置导航
  • 例子:地图App计算你和咖啡店的直线距离。
    • 如果你在坐标点A(2,3),咖啡店在B(5,7),欧式距离就是两点间的直线距离。
    • 适用原因:导航需要真实的物理距离。
2. 图像识别
  • 例子:人脸识别中,比较两张人脸图片的像素差异。
    • 把图片看作多维向量(比如每个像素是一个维度),计算两张图片的欧式距离,距离越小越相似。
    • 适用原因:像素值的直接差异能反映图像内容的接近程度。
3. 聚类分析(如K-means算法)
  • 例子:电商将用户按消费金额和购买频率分组。
    • 用户A(月消费500元,买3次)和用户B(月消费800元,买5次)的欧式距离越小,消费行为越接近。
    • 适用原因:数值的绝对差异直接影响分组结果。
4. 异常检测
  • 例子:信用卡交易中,检测异常消费。
    • 正常交易的特征向量(金额、地点、时间)形成一个集群,新交易如果距离集群中心过远(欧式距离大),可能是欺诈。

余弦距离

核心思想:比较“方向是否一致”,适合忽略大小、只关注模式的场景。

1. 文本相似度
  • 例子:比较两篇文章的相似性。
    • 将文章转为词频向量(每个词的出现次数),计算余弦距离。即使文章长度不同(比如一篇长、一篇短),只要关键词比例相似,方向就一致。
    • 适用原因:关注内容主题(方向),而非文章长度(向量大小)。
2. 推荐系统
  • 例子:视频平台推荐你可能喜欢的电影。
    • 用用户评分向量(如A用户对喜剧、科幻片的评分)和电影特征向量计算余弦相似度。方向越接近,推荐越精准。
    • 适用原因:关注兴趣方向(比如“喜欢喜剧>动作”),而不是评分绝对值。
3. 自然语言处理(NLP)
  • 例子:ChatBot理解用户问题的意图。
    • 将用户问题“如何做蛋糕?”和语料库中的句子转为词向量,用余弦距离找到最接近的意图(如“烘焙步骤”)。
    • 适用原因:语义相似性由关键词方向决定,而非词频绝对值。
4. 人脸识别(辅助)
  • 例子:判断两张人脸是否为同一人。
    • 先用神经网络提取人脸特征向量(如128维),再计算余弦相似度。方向越一致,越可能是同一人。
    • 适用原因:光照、角度可能影响像素值(欧式距离不准),但特征向量的方向更稳定。

关键对比:什么时候用哪个?

场景特征选欧式距离选余弦距离
关注“实际距离”✔️(比如地图导航)
数据量纲差异大(如身高vs体重)❌(需先归一化)✔️(自动忽略幅度)
关注“模式相似”❌(比如“喜欢甜食”vs“喜欢辣”)✔️(方向一致即相似)
数据稀疏(如文本词频)❌(0值多,欧式距离不稳定)✔️(只关注非零维度方向)

举个对比例子

假设你想比较用户对电影的喜好:

  • 用欧式距离:用户A评分为[5, 1](喜剧5分,恐怖片1分),用户B评分为[3, 3]。欧式距离较大,但两人可能都喜欢喜剧(只是B更中庸)。
  • 用余弦距离:用户A和用户C[10, 2]的方向一致,余弦距离小,说明喜好模式相似(都偏爱喜剧)。

总结:欧式距离是“物理世界的尺子”,余弦距离是“模式方向的量角器”。根据问题本质(要距离还是要方向)选择即可! 😊

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony分布式数据管理子系统

OpenHarmony分布式数据管理子系统 简介 目录 组件说明 分布式数据对象数据共享分布式数据服务Key-Value数据库首选项关系型数据库标准数据化通路 相关仓 简介 子系统介绍 分布式数据管理子系统支持单设备的各种结构化数据的持久化,以及跨设备之间数据的同步、…

智慧后勤的消防管理:豪越科技为安全护航

智慧后勤消防管理难题大揭秘! 在智慧后勤发展得如火如荼的当下,消防管理却暗藏诸多难题。传统模式下,消防设施分布得那叫一个散,就像一盘散沙,管理起来超费劲。人工巡检不仅效率低,还容易遗漏,不…

python轻量级框架-flask

flask简述 Flask 是 Python 生态圈中一个基于 Python 的Web 框架。其轻量、模块化和易于扩展的特点导致其被广泛使用,适合快速开发 Web 应用以及构建小型到中型项目。它提供了开发 Web 应用最基础的工具和组件。之所以称为微框架,是因为它与一些大型 We…

政安晨【零基础玩转各类开源AI项目】DeepSeek 多模态大模型Janus-Pro-7B,本地部署!支持图像识别和图像生成

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 目录 下载项目 创建虚拟环境 安装项目依赖 安装 Gradio(UI) 运…

在 Mac mini M2 上本地部署 DeepSeek-R1:14B:使用 Ollama 和 Chatbox 的完整指南

随着人工智能技术的飞速发展,本地部署大型语言模型(LLM)已成为许多技术爱好者的热门选择。本地部署不仅能够保护隐私,还能提供更灵活的使用体验。本文将详细介绍如何在 Mac mini M2(24GB 内存)上部署 DeepS…

【Godot4.3】基于绘图函数的矢量蒙版效果与UV换算

概述 在设计圆角容器时突发奇想: 将圆角矩形的每个顶点坐标除以对应圆角矩形所在Rect2的size,就得到了顶点对应的UV坐标。然后使用draw_colored_polygon,便可以做到用图片填充圆角矩形的效果。而且这种计算的效果就是图片随着其填充的图像缩…

51单片机-AT24CXX存储器工作原理

1、AT24CXX存储器工作原理 1.1、特点: 与400KHz,I2C总线兼容1.8到6.0伏工作电压范围低功耗CMOS技术写保护功能当WP为高电平时进入写保护状态页写缓冲器自定时擦写周期100万次编程/擦除周期可保存数据100年8脚DIP SOIC或TSSOP封装温度范围商业级和工业级…

Linux网络 网络层

IP 协议 协议头格式 4 位版本号(version): 指定 IP 协议的版本, 对于 IPv4 来说, 就是 4. 4 位头部长度(header length): IP 头部的长度是多少个 32bit, 也就是 4 字节,4bit 表示最大的数字是 15, 因此 IP 头部最大长度是 60 字节. 8 位服务类型(Type Of Service):…

Unity百游修炼(1)——FootBall详细制作全流程

一、引言 游玩测试: Football 游玩测试 1.项目背景与动机 背景:在学习 Unity 的过程中,希望通过实际项目来巩固所学知识,同时出于对休闲小游戏的喜爱,决定开发一款简单有趣的小游戏加深自己的所学知识点。 动机&#…

C语言(13)------------>do-while循环

1.do-while循环的语法 我们知道C语言有三大结构,顺序、选择、循环。我们可以使用while循环、for循环、do-while循环实现循环结构。之前的博客中提及到了前两者的技术实现。可以参考: C语言(11)------------->while循…

【1】VS Code 新建上位机项目---C#基础语法

VS Code 新建上位机项目---C#基础语法 1 基本概念1.1 准备工具1.2 新建项目2 C#编程基础2.1 命名空间和类2.2 数据类型2.3 控制台输入输出2.3.1 输入输出: write 与 read2.3.2 格式化 : string.Foramt() 与 $2.3.3 赋值与运算2.4 类型转换2.4.1 数值类型之间的转换:(int)2.4…

SQL:DQL数据查询语言以及系统函数(oracle)

SQL Structured Query Language,结构化查询语言, 是一种用于管理和操作关系数据库的标准编程语言。 sql的分类 DQL(Data Query Language):数据查询语言 DDL(Data Definition Language):数据…

从单片机的启动说起一个单片机到点灯发生了什么下——使用GPIO点一个灯

目录 前言 HAL库对GPIO的抽象 核心分析:HAL_GPIO_Init 前言 我们终于到达了熟悉的地方,对GPIO的初始化。经过漫长的铺垫,我们终于历经千辛万苦,来到了这里。关于GPIO的八种模式等更加详细的细节,由于只是点个灯&am…

提效10倍:基于Paimon+Dolphin湖仓一体新架构在阿里妈妈品牌业务探索实践

1. 业务背景 阿里妈妈品牌广告数据包括投放引擎、下发、曝光、点击等日志,面向运筹调控、算法特征、分析报表、诊断监控等应用场景,进行了品牌数仓能力建设。随着业务发展,基于Lambda架构的数仓开发模式,缺陷日益突出:…

一文详解U盘启动UEFI/Legacy方式以及GPT/MBR关系

对于装系统的老手而说一直想研究一下装系统的原理,以及面对一些问题时的解决思路,故对以前的方法进行原理上的解释,主要想理解其底层原理。 引导模式 MBR分区可以同时支持UEFI和Legacy引导,我们可以看一下微pe制作的启动盘&#…

基于Docker的前端环境管理:从开发环境到生产部署的实现方案

# 基于Docker的前端环境管理:从开发环境到生产部署的实现方案 简介及前端开发环境挑战 简介 是一种容器化平台,可以将应用程序及其依赖项打包为一个容器,提供一种轻量级、可移植的环境。它能够简化开发、部署和运维的流程,提高…

连锁管理系统的五大核心设计及 PHP 源码分享

在当今竞争激烈的连锁商业领域,高效的管理系统是企业脱颖而出的关键。商淘云连锁管理系统凭借其卓越的功能和灵活的架构,为连锁企业提供了强大的运营支持。在这里详细介绍其五大核心设计,并分享相关的 PHP 源码示例。 一、总部进销存管理 &a…

C语言基本知识------指针(4)

1. 回调函数是什么? 回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时,被调⽤的函数就是回调函数。 void qsort(void base,//指针…

MTK-Android13-包安装器PackageInstaller 静默安装实现

目的 我们最终是为了搞明白安装的整个流程。一方面通过安卓系统自带的包安装器来了解PMS 安装流程;另一方面熟悉框架层Framework 针对Android apk 安装流程。 前两篇文章分析了PackagerInstaller 安装流程。 Android13-包安装器PackageInstaller-之apk安装跳转 An…

qt-C++笔记之创建和初始化 `QGraphicsScene` 和 `QGraphicsView` 并关联视图和场景的方法

qt-C++笔记之创建和初始化 QGraphicsScene 和 QGraphicsView 并关联视图和场景的方法 code review! 参考笔记 1.qt-C++笔记之创建和初始化 QGraphicsScene 和 QGraphicsView 并关联视图和场景的方法 2.qt-C++笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到vie…