六大距离:欧式距离、街道距离、马氏距离等
文章目录
- 1 简 介
- 2 距离特征
- 2.1 Euclidean距离
- 2.2 Cosine距离
- 2.3 manhattan距离
- 2.4 chebyshev距离
- 2.5 minkowski距离
- 2.6 mahalanobis距离
- 3 代 码实现
1 简 介
数值向量是数据建模问题中最为常见的一类特征,例如:
在一些涉及图片,文本信息等的场景中,例如图片相似度匹配查询、相似文章寻找、同款商品定位等等问题中,为了能快速进行搜索匹配,我们往往会都会将图片文本等信息转化为数值向量;
在搜索推荐等的多流程建模工作中,上游经常会将一些数值向量特征输送到下游,最常见的就是图片向量信息、上游各个模型的预测分数拼接而成的向量。
那么如何基于这些生成的向量继续加工构建更多有用的特征呢?方式有很多,例如聚类;求统计特征等等。本文将会介绍一类基于数值特征向量的一整套距离特征。
2 距离特征
2.1 Euclidean距离
欧几里得距离也就是两个数值向量点之间的长度,其数学公式如下:
从其数学公式上我们可以发现:
- 欧几里得距离会受到数值向量的量纲大小的影响,所以最好在计算距离之前先对数据进行归一化处理;
- 欧几里得距离在向量维度非常大的时候效果会大大下降;
2.2 Cosine距离
Cosine距离在高维度空间中往往会比欧几里得距离的效果要好很多,Cosine距离的数学计算形式如下:
从其数学公式上我们可以发现:
- Cosine距离在计算的时候已经做了类似归一化的操作,所以我们无序在计算其之前再做归一化等预处理;
- Cosine距离不会考虑向量的大小,所以两个向量及时同时缩放一定的倍数,计算得到的大小也是一样的;
2.3 manhattan距离
manhattan距离有时也被成为街道距离,因为它的计算方式有点类似于只能90度拐角的街道长度,manhattan距离在高维度的空间有的时候可以取得比欧几里得距离更好的效果,其对应的数学式子如下:
2.4 chebyshev距离
chebyshev距离是两个数值向量在单个维度上绝对值差值最大的那个值,chebyshev距离在一些较为特殊的场景中物理意义很大,
例如:我们现在需要组装一个物品,但是需要很多零件,每个零件在不同的地方,需要邮寄过来,这个时候chebyshev距离就是需要的最短时间;
chebyshev距离其对应的数学计算式如下:
2.5 minkowski距离
minkowski距离计算公式如下:
我们发现欧几里得距离,manhattan距离和chebyshev距离都是其特殊的例子,而minkowski距离最大的优势在于:
- 我们可以调整p值的取值,在此基础上寻找最优的p值用于最终的预测。
- 在进行距离计算之前,一般需要对向量进行归一化操作;
2.6 mahalanobis距离
Mahalanobis(马氏)距离可以看作是欧氏距离的一种修正,修正了欧式距离中各个维度尺度不一致且相关的问题。
其中
是多维随机变量的协方差矩阵,马氏距离在涉及到距离计算的问题中,都是非常不错的特征。
3 代 码实现
import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import DistanceMetric
from sklearn.metrics.pairwise import cosine_similarity## 随机生成两个向量,vec1,vec2
vec1 = np.random.normal(size = 1000)
vec2 = np.random.normal(size = 1000)
3.1 Euclidean距离
dist = DistanceMetric.get_metric('euclidean')
dist.pairwise([vec1,vec2])[0,1]
46.0531806254225
3.2 Cosine距离
cosine_similarity([vec1,vec2])[0,1]
-0.012651236859499773
3.3 manhattan距离
dist = DistanceMetric.get_metric('manhattan')
dist.pairwise([vec1,vec2])[0,1]
1165.7413956018454
3.4 chebyshev距离
dist = DistanceMetric.get_metric('chebyshev')
dist.pairwise([vec1,vec2])[0,1]
4.713077519584598
3.5 minkowski距离
dist = DistanceMetric.get_metric('minkowski', p=1)
dist.pairwise([vec1,vec2])[0,1]
1165.7413956018454
六大距离:欧式距离、街道距离、马氏距离等相关推荐
- 各种距离 欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准欧氏距离、马氏距离、余弦距离、汉明距离、杰拉德距离、相关距离、信息熵...
1. 欧氏距离(Euclidean Distance) 欧氏距离是最容易直观理解的距离度量方法,我们小学.初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离. 二维平面上点a(x1,y1)与b( ...
- 距离度量:欧氏距离,余弦距离,KL散度,马氏距离(含python代码实现)
1. 欧氏距离(Euclidean Distance) 欧氏距离,又称欧几里得度量,绝对距离, 是欧几里得空间中两点间"普通"(即直线)距离. 定义如下: 2. 余弦距离(余弦相似 ...
- 学习笔记5——距离度量(欧氏距离、马氏距离、闵氏距离、曼哈顿距离等)
参考:深度学习中常用的几种距离度量算法 - 简书 (jianshu.com) 常见的9种距离度量方法-电子发烧友网 (elecfans.com) 1.欧氏距离 欧式距离并不是尺度不变的,因此所计算的 ...
- 机器学习两种距离——欧式距离和马氏距离
我们熟悉的欧氏距离虽然很有用,但也有明显的缺点.它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求.例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区 ...
- 曼哈顿距离,欧式距离,明式距离,切比雪夫距离以及马氏距离
1.曼哈顿距离 曼哈顿距离又称Manhattan distance,还见到过更加形象的,叫出租车距离的.具体贴一张图,应该就能明白. 上图摘自维基百科,红蓝黄皆为曼哈顿距离,绿色为欧式距离. 2.欧式 ...
- 数据的距离度量 一、欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,兰氏距离,马氏距离
数据的距离度量 一.欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,兰氏距离,马氏距离 前言 欧式距离 标准欧式距离 曼哈顿距离 闵氏距离 切比雪夫距离 兰氏距离 马氏距离 前言 本篇记录一下常用的数据 ...
- 协方差、协方差矩阵、马氏距离与欧式距离的理解
协方差.协方差矩阵.马氏距离与欧式距离的理解 最近在应用中,总涉及到对马氏距离的使用,而马氏距离中最重要的是协方差矩阵的计算,这些概念困扰了我很久,在查阅资料学习了解后,终于有浅显理解,做了个笔记与大 ...
- 马氏距离和欧式距离详解
一般在机器学习模型中会涉及到衡量两个样本间的距离,如聚类.KNN,K-means等,使用的距离为欧式距离.其实,除了欧氏距离之外,还有很多的距离计算标准,本文主要介绍欧氏距离和马氏距离. 欧氏距离 最 ...
- 欧式距离与马氏距离比较
最近在研究BM3D算法,常用的是欧式距离,但是欧式距离缺点较多,查阅资料后,找到了马氏距离,因此,转载记录此篇,便于之后的学习. 欧氏距离(Euclidean distance)也称欧几里得度量.欧几 ...
- 马氏距离详解(数学原理、适用场景、应用示例代码)
看了很多关于马氏距离(Mahalanobis Distance)的介绍,但是总感觉有一些地方不太清晰,所以结合数学公式.机器学习中的应用案例,从头梳理一下. 马氏距离实际上是欧氏距离在多变量下的&qu ...
最新文章
- ODBC驱动,没装怎么办
- 【PAT甲级 进制转换】1019 General Palindromic Number (20 分) Java版 7/7通过
- xshell有大量打印时,显示信息不全
- 《Dotnet9》系列-Google ProtoBuf在C#中的简单应用
- 时间戳转中国人能看得懂的日期格式 yy-mm-dd
- 【Unity开源项目精选】UniRx:Unity中的响应式编程
- ZeroMQ API简介
- .NET性能分析最佳实践之:如何找出使用过多内存的.NET代码(基础篇)
- 教你如何在Protel中显示标题栏内容
- 微信公众号唤起微信支付
- 安装监控的地方没有WiFi,没有无线网络,如何实现远程监控?
- Vue+ElementUI+Tabs实现选项卡|标签页|美化标签页面|局部替换样式|好看的标签页|选项卡
- UITextField 的左视图 --用户名和密码框的标志
- 计算机以及dos窗口常用快捷键
- c++ opencv fitLine函数拟合直线
- zeppelin报错jdk版本低
- 锁定Mac电脑的8种方法
- 华硕vm510l拆电池图解_华硕vm510l的拆机教程详解 参数报价
- 移动电源充电宝新国标GB/T 35590-2017检测报告测试项目
- 设计模式-责任型模式(责任链模式)
热门文章
- php简单实现论坛和回帖,PHP论坛的设计与实现
- 2011移动开发者大会亮点之一:六大精彩主题论坛抢鲜看
- Sigmoid信念网络(SBN)
- 大佬解读 | 华为发布会: 牛逼鸿蒙,吹水的大会
- 经典深度学习论文中英文翻译
- Django–模型层orm查询
- 微信支付问题,支付成功后跳转到指定页面
- KEIL软件的Error: Flash Download failed - Could not load file '..\OBJ\Template.axf'解决思路
- keil 跳转不了(Go To Definition “XXX”失败)
- 贝壳 借贷计算器_我如何学会停止与借贷检查器战斗并爱肮脏的结构