文章目录

  • 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. 各种距离 欧式距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准欧氏距离、马氏距离、余弦距离、汉明距离、杰拉德距离、相关距离、信息熵...

    1. 欧氏距离(Euclidean Distance) 欧氏距离是最容易直观理解的距离度量方法,我们小学.初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离. 二维平面上点a(x1,y1)与b( ...

  2. 距离度量:欧氏距离,余弦距离,KL散度,马氏距离(含python代码实现)

    1. 欧氏距离(Euclidean Distance) 欧氏距离,又称欧几里得度量,绝对距离, 是欧几里得空间中两点间"普通"(即直线)距离. 定义如下: 2. 余弦距离(余弦相似 ...

  3. 学习笔记5——距离度量(欧氏距离、马氏距离、闵氏距离、曼哈顿距离等)

     参考:深度学习中常用的几种距离度量算法 - 简书 (jianshu.com) 常见的9种距离度量方法-电子发烧友网 (elecfans.com) 1.欧氏距离 欧式距离并不是尺度不变的,因此所计算的 ...

  4. 机器学习两种距离——欧式距离和马氏距离

    我们熟悉的欧氏距离虽然很有用,但也有明显的缺点.它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求.例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区 ...

  5. 曼哈顿距离,欧式距离,明式距离,切比雪夫距离以及马氏距离

    1.曼哈顿距离 曼哈顿距离又称Manhattan distance,还见到过更加形象的,叫出租车距离的.具体贴一张图,应该就能明白. 上图摘自维基百科,红蓝黄皆为曼哈顿距离,绿色为欧式距离. 2.欧式 ...

  6. 数据的距离度量 一、欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,兰氏距离,马氏距离

    数据的距离度量 一.欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,兰氏距离,马氏距离 前言 欧式距离 标准欧式距离 曼哈顿距离 闵氏距离 切比雪夫距离 兰氏距离 马氏距离 前言 本篇记录一下常用的数据 ...

  7. 协方差、协方差矩阵、马氏距离与欧式距离的理解

    协方差.协方差矩阵.马氏距离与欧式距离的理解 最近在应用中,总涉及到对马氏距离的使用,而马氏距离中最重要的是协方差矩阵的计算,这些概念困扰了我很久,在查阅资料学习了解后,终于有浅显理解,做了个笔记与大 ...

  8. 马氏距离和欧式距离详解

    一般在机器学习模型中会涉及到衡量两个样本间的距离,如聚类.KNN,K-means等,使用的距离为欧式距离.其实,除了欧氏距离之外,还有很多的距离计算标准,本文主要介绍欧氏距离和马氏距离. 欧氏距离 最 ...

  9. 欧式距离与马氏距离比较

    最近在研究BM3D算法,常用的是欧式距离,但是欧式距离缺点较多,查阅资料后,找到了马氏距离,因此,转载记录此篇,便于之后的学习. 欧氏距离(Euclidean distance)也称欧几里得度量.欧几 ...

  10. 马氏距离详解(数学原理、适用场景、应用示例代码)

    看了很多关于马氏距离(Mahalanobis Distance)的介绍,但是总感觉有一些地方不太清晰,所以结合数学公式.机器学习中的应用案例,从头梳理一下. 马氏距离实际上是欧氏距离在多变量下的&qu ...

最新文章

  1. ODBC驱动,没装怎么办
  2. 【PAT甲级 进制转换】1019 General Palindromic Number (20 分) Java版 7/7通过
  3. xshell有大量打印时,显示信息不全
  4. 《Dotnet9》系列-Google ProtoBuf在C#中的简单应用
  5. 时间戳转中国人能看得懂的日期格式 yy-mm-dd
  6. 【Unity开源项目精选】UniRx:Unity中的响应式编程
  7. ZeroMQ API简介
  8. .NET性能分析最佳实践之:如何找出使用过多内存的.NET代码(基础篇)
  9. 教你如何在Protel中显示标题栏内容
  10. 微信公众号唤起微信支付
  11. 安装监控的地方没有WiFi,没有无线网络,如何实现远程监控?
  12. Vue+ElementUI+Tabs实现选项卡|标签页|美化标签页面|局部替换样式|好看的标签页|选项卡
  13. UITextField 的左视图 --用户名和密码框的标志
  14. 计算机以及dos窗口常用快捷键
  15. c++ opencv fitLine函数拟合直线
  16. zeppelin报错jdk版本低
  17. 锁定Mac电脑的8种方法
  18. 华硕vm510l拆电池图解_华硕vm510l的拆机教程详解 参数报价
  19. 移动电源充电宝新国标GB/T 35590-2017检测报告测试项目
  20. 设计模式-责任型模式(责任链模式)

热门文章

  1. php简单实现论坛和回帖,PHP论坛的设计与实现
  2. 2011移动开发者大会亮点之一:六大精彩主题论坛抢鲜看
  3. Sigmoid信念网络(SBN)
  4. 大佬解读 | 华为发布会: 牛逼鸿蒙,吹水的大会
  5. 经典深度学习论文中英文翻译
  6. Django–模型层orm查询
  7. 微信支付问题,支付成功后跳转到指定页面
  8. KEIL软件的Error: Flash Download failed - Could not load file '..\OBJ\Template.axf'解决思路
  9. keil 跳转不了(Go To Definition “XXX”失败)
  10. 贝壳 借贷计算器_我如何学会停止与借贷检查器战斗并爱肮脏的结构