草庐IT

距离度量 —— 闵可夫斯基距离(Minkowski Distance)

繁依Fanyi 2023-12-19 原文

Python学习系列文章👉 目录 👈

文章目录

一、概述

闵可夫斯基距离 (Minkowski Distance),也被称为 闵氏距离。它不仅仅是一种距离,而是将多个距离公式(曼哈顿距离、欧式距离、切比雪夫距离)总结成为的一个公式

二、计算公式

1. 闵氏距离公式

首先假设两个 n 维变量 A ( x 11 , x 12 , . . . , x 1 n ) A(x_{11},x_{12},...,x_{1n}) A(x11,x12,...,x1n) B ( x 21 , x 22 , . . . , x 2 n ) B(x_{21},x_{22},...,x_{2n}) B(x21,x22,...,x2n)

对于这两个 n 维变量,则有闵氏距离公式为: d 12 = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ p p d_{12}=\sqrt[p]{\sum_{k=1}^n|x_{1k}-x_{2k}|^p} d12=pk=1nx1kx2kp

乍一看,可能觉得这个公式很复杂,也觉得这个公式与前面说到的距离公式(曼哈顿距离、欧式距离、切比雪夫距离)没太大关联,但当我分解一下,就知道有什么关联了。

2. 闵氏距离的参数 p

闵氏距离主要和它的参数 p p p 有关, p p p 值不同,公式也将不同。

p = 1 p=1 p=1 时,闵氏距离 为 曼哈顿距离

d 12 = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ p p = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ \begin{aligned} d_{12}&=\sqrt[p]{\sum_{k=1}^n|x_{1k}-x_{2k}|^p} \\ &=\sum_{k=1}^n|x_{1k}-x_{2k}| \end{aligned} d12=pk=1nx1kx2kp =k=1nx1kx2k

p = 2 p=2 p=2 时,闵氏距离 为 欧式距离

d 12 = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ p p = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ 2 = ∑ k = 1 n ( x 1 k − x 2 k ) 2 \begin{aligned} d_{12}&=\sqrt[p]{\sum_{k=1}^n|x_{1k}-x_{2k}|^p} \\ &=\sqrt{\sum_{k=1}^n|x_{1k}-x_{2k}|^2}\\ &=\sqrt{\sum_{k=1}^n(x_{1k}-x_{2k})^2}\\ \end{aligned} d12=pk=1nx1kx2kp =k=1nx1kx2k2 =k=1n(x1kx2k)2

p = ∞ p=\infty p= 时,闵氏距离 为 切比雪夫距离

d 12 = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ p p = ∑ k = 1 n ∣ x 1 k − x 2 k ∣ ∞ ∞ = m a x ( ∣ x 1 i − x 2 i ∣ ) \begin{aligned} d_{12}&=\sqrt[p]{\sum_{k=1}^n|x_{1k}-x_{2k}|^p} \\ &=\sqrt[\infty]{\sum_{k=1}^n|x_{1k}-x_{2k}|^\infty}\\ &=max(|x_{1i}-x_{2i}|) \end{aligned} d12=pk=1nx1kx2kp =k=1nx1kx2k =max(x1ix2i)

3. 闵氏距离的缺点

① 将各个分量的量纲(scale),也就是“单位”相同的看待了;

例如:二维样本(身高[单位:cm],体重[单位:kg]),现有三个样本:a(180,50),b(190,50),c(180,60)。

a与b的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离)等于a与c的闵氏距离。但实际上身高的 10cm 并不能和体重的 10kg 划等号。

② 未考虑各个分量的分布(期望,方差等)可能是不同的。

有关距离度量 —— 闵可夫斯基距离(Minkowski Distance)的更多相关文章

  1. 最新版人脸识别小程序 图片识别 生成二维码签到 地图上选点进行位置签到 计算签到距离 课程会议活动打卡日常考勤 上课签到打卡考勤口令签到 - 2

    技术选型1,前端小程序原生MINA框架cssJavaScriptWxml2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云开发数据库(基于MongoDB)云存储4,人脸识别算法基于百度智能云实现人脸识别一,用户端效果图预览老规矩我们先来看效果图,如果效果图符合你的需求,就继续往下看,如果不符合你的需求,可以跳过。1-1,登录注册页可以看到登录页有注册入口,注册页如下我们的注册,需要管理员审核,审核通过后才可以正常登录使用小程序1-2,个人中心页登录成功以后,我们会进入个人中心页我们在个人中心页可以注册人脸,因为我们做人脸识别签到,需要先注册人脸才可以进行人脸比对,进

  2. ruby - 在 Elasticsearch 中计算地理距离 - 2

    我在查询中使用geo_distancefilter和tire,它工作正常:search.filter:geo_distance,:distance=>"#{request.distance}km",:location=>"#{request.lat},#{request.lng}"我预计结果会以某种方式包括到我用于过滤器的地理位置的计算距离。有没有办法告诉elasticsearch在响应中包含它,这样我就不必在ruby​​中为每个结果计算它?==更新==我在谷歌群组中的foundtheanswer:search.sortdoby"_geo_distance","location"=>"

  3. ruby - 如何在没有 O^2 问题的情况下找到 Ruby 中一串二进制 bin 的最接近对(汉明距离)? - 2

    我有一个MongoDB,其中包含大约100万个文档。这些文档都有一个字符串,表示256位bin的1和0,例如:0110101010101010110101010101理想情况下,我想查询近似二进制匹配项。这意味着,如果这两个文件具有以下编号。是的,这就是汉明距离。Mongo当前不支持此功能。所以,我不得不在应用层做。因此,鉴于此,我试图找到一种方法来避免在文档之间进行单独的汉明距离比较。这使得基本上不可能有时间做这件事。我有很多内存。而且,在ruby​​中,似乎有一个很棒的gem(算法)可以创建许多树,但我似乎(还)没有一个可以减少我需要进行的查询数量。理想情况下,我想进行100万次查

  4. ruby - 计算 ruby 汉明距离的最有效方法? - 2

    在ruby​​中,计算两个无符号整数之间的位差(例如汉明距离)的最有效方法是什么?例如,我有整数a=2323409845和b=178264714​​4。它们的二进制表示是:a=10001010011111000110101110110101b=01101010010000010000100101101000a和b之间的位差是17..我可以对它们进行逻辑异或,但这会给我一个不同的整数!=17,然后我将不得不遍历结果的二进制表示并计算1的数量。计算位差的最有效方法是什么?现在,计算多个整数序列的位差的答案是否改变了?例如。给定2个无符号整数序列:x={2323409845,64176042

  5. 数学建模之马尔可夫链模型详解(附详细Matlab程序) - 2

    🔗运行环境:Matlab🚩作者:左手の明天🥇精选专栏:《python》🔥推荐专栏:《算法研究》📚选自专栏:《数学建模》🧿优秀专栏:《Matlab神经网络案例分析》目前持续更新的专栏:🥇专栏:MatlabGUI编程技巧🔥专栏:Matlab从无到有系列大家好,我是左手の明天!今天和大家分享数学建模重要模型——马尔可夫链模型。在对数学建模之马尔可夫链模型进行介绍时,首先需要明确两个问题:马氏链模型用来干什么马尔可夫预测法是应用概率论中马尔可夫链(Markovchain)的理论和方法来研究分析时间序列的变化规律,并由此预测其未来变化趋势的一种预测技术。马氏链模型什么时候用应用马尔可夫链的计算方法进行马

  6. ruby - 用 Ruby 测量两个字符串之间的距离? - 2

    我可以用Ruby测量两个字符串之间的距离吗?即:compare('Test','est')#Returns1compare('Test','Tes')#Returns1compare('Test','Tast')#Returns1compare('Test','Taste')#Returns2compare('Test','tazT')#Returns5 最佳答案 由于原生C绑定(bind),更加容易和快速:geminstalllevenshtein-ffigeminstalllevenshteinrequire'levenshte

  7. ruby - 如何在不使用 Google Maps API 的情况下计算两个 GPS 坐标之间的距离? - 2

    我想知道是否有一种方法可以在不依赖GoogleMapsAPI的情况下计算两个GPS坐标的距离。我的应用程序可能会收到float坐标,否则我将不得不对地址执行反向GEO。 最佳答案 地球上两个坐标之间的距离通常使用Haversineformula来计算.该公式考虑了地球形状和半径。这是我用来计算以米为单位的距离的代码。defdistance(loc1,loc2)rad_per_deg=Math::PI/180#PI/180rkm=6371#Earthradiusinkilometersrm=rkm*1000#Radiusinmeter

  8. 有符号距离场原理及实现源码 - 2

    有符号距离场(SDF:SignedDistanceField)是距离场的一种变体,它在3D(2D)空间中将位置映射到其到最近平面(边缘)的距离。距离场在图像处理、物理学和计算机图形学等许多研究中都有应用。在计算机图形的上下文中,距离场通常是有符号的,表示某个位置是否在网格内。在计算机图形学和游戏开发中,SDF显示出极大的通用性,它可以用于碰撞测试、网格表示、光线追踪等。此外,人们发现它在使用光线追踪渲染场景时也有一些好处(即,ray-marching)算法——几乎不需要额外成本就可以产生像软阴影和环境光遮蔽这样的阴影效果。这个项目是关于实时光线行进渲染器的从零开始的C++实现,它包括一个SDF

  9. javascript - d3.forcesimulation() 链接距离 - 2

    我在堆栈中查看了不同的链接距离,似乎为了改变链接距离,您需要实现一个函数,然后传递该函数以动态分配链接距离:functionlinkDistance(d){returnd.distance;}然后我认为我可以传递给svg,但返回函数错误而不是现有的linkdistance或distancevarlink=svg.selectAll(".link").data(bilinks).enter().append("path").style("stroke","#6b7071")//gunmetalgreylink.attr("class","link").linkDistance(linkD

  10. javascript - 如何获得两个div之间的距离 - 2

    所以我有一个div在另一个里面-我怎样才能得到它们之间的距离?我尝试了类似$('#child').parentsUntil($('#parent')).andSelf()的方法-但它返回的是对象,而不是距离。附言我需要它来按下其他按钮。 最佳答案 http://api.jquery.com/position/要获得您可以使用的左侧距离:vardistLeft=$('#child').position().left;这将返回以px为单位的相对于父级偏移量的距离如果您对元素的页面偏移感兴趣:varoffsLeft=$('#child')

随机推荐