欧氏距离与余弦距离的关系
前言
最近在做人脸识别,有的方法使用的是L2距离,有的是使用的cos相似度,并且看到有的论文说,欧式距离和余弦距离是等价的。到底是怎么等价的呢。这里我就来和小伙伴们一探究竟。
推倒
首先给出结论,归一化后的向量的余弦距离和欧氏距离是等价的。
公式敲起来很麻烦,这里我就不敲了,引用一位知乎答友的图。链接在这了欧氏距离和余弦相似度的区别是什么?
上面的公式可以再推一步:
euc=2(1−cos(A,B))euc=\sqrt{2(1-cos(A,B))}euc=2(1−cos(A,B))
我们将cos(A,B)cos(A,B)cos(A,B)称为余弦相似度,1−cos(A,B)1-cos(A,B)1−cos(A,B)称为余弦距离,可以看到余弦距离和cos距离是等价的。推广到高纬空间可以得到一样的结论。
现在的人脸识别方法中,会对特征做归一化,归一化后特征的余弦距离和cos距离是等价的,所以使用哪个距离都是OK的。
为什么将余弦距离转换为欧式距离
下面的内容还是转自知乎答友,但是我不是很理解,先做一下记录,以后再去理解。毕竟不是一个方向的,我在人脸识别领域只是将欧式距离转换为余弦距离,并没有将余弦距离转换为欧式距离。
但是话说回来,为什么把余弦相似度转换为求欧式距离,这么转换有什么好处呢?根据上述例子,如果我根据余弦相似度计算相似doc时,需要两两比较,也就是 的操作。通常这种比较不能全量比较,可以借助于simhash 的思想,减少搜索空间。但是缺点是存在误差。但是转为求欧式距离呢,就可以上一个非常屌的数据结构,叫KDTree,至于复杂度降低多少,自己感受。另外多说一句,KDTree查询过程中涉及回溯操作,所以对高维度向量并不友好,通常word2vec生成200维向量,用kdtree的效率不会高,这时候应该用BallTree。
上面提到的KDTree和BallTree我都没有听说过,还得进行补充。
原文链接:欧氏距离和余弦相似度的区别是什么?
欧氏距离与余弦距离的关系相关推荐
- 欧氏距离 VS 余弦距离
欧氏距离和余弦距离的使用场景和优缺点? 欧氏距离和余弦距离都是衡量向量之间相似度的常用指标,它们各自适用于不同的场景和有各自的优缺点. 欧氏距离 欧氏距离是指两个向量在n维空间中的距离,它的计算公式为 ...
- 谈谈距离度量方式:欧氏距离与余弦距离
前因 在机器学习/深度学习的很多任务中,我们通常会面临着两个样本之间相似度的比较.通常常用的两种度量方式为欧氏距离与余弦距离,那么在什么时候用欧氏距离?什么时候用余弦相似度?他们之间的联系与区别在哪里 ...
- 【Python】欧氏距离和余弦距离
一.欧几里得距离(Euclidean Distance) 欧氏距离是最常见的距离度量,衡量的是多维空间中各个点之间的绝对距离.公式如下: 因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度 ...
- 距离度量:欧氏距离,余弦距离,KL散度,马氏距离(含python代码实现)
1. 欧氏距离(Euclidean Distance) 欧氏距离,又称欧几里得度量,绝对距离, 是欧几里得空间中两点间"普通"(即直线)距离. 定义如下: 2. 余弦距离(余弦相似 ...
- K邻近算法概述、欧式距离、Scikit-learn使用 、kNN邻近算法距离度量、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化欧氏距离、余弦距离、汉明距离、杰卡德距离、马氏距离
一.K-邻近算法概述 K邻近算(K Nearest Neighbor算法,KNN算法):如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别 ...
- 余弦距离、欧氏距离和杰卡德(Jaccard)相似性度量的比较
1.余弦距离 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量. 向量,是多维空间中有方向的线段,如果两个向量的方向一致,即夹角接近零,那么这两个向量就 ...
- 百面机器学习 #2 模型评估:03 余弦距离和余弦相似度、欧氏距离
文章目录 余弦相似度 余弦相似度和余弦距离 和欧式距离的比较和关系 余弦距离不是一个严格定义的距离 在模型训练过程中,我们也在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础 ...
- 向量点积衡量相似度_余弦距离、欧氏距离和杰卡德相似性度量的对比分析
1.余弦距离 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量. 向量,是多维空间中有方向的线段,如果两个向量的方向一致,即夹角接近零,那么这两个向量就 ...
- 人脸识别之欧氏距离——余弦距离
最近训练了一个人脸识别模型,在测试集上的效果较之前的模型相比(lfw,cfp_fp,agedb_30),accucay都有所提升,但是在自己的测试集效果上却特别差.然后仔细的研读了相应的测试代码,先把 ...
最新文章
- SD-关于定价日期的设置
- kafka概念使用简介注意点
- mvn install时跳过Test
- String ,StringBuilder,StringBuffer
- Windows Server 2008 RemoteApp---发布应用程序
- matlab相机标定 外参数,相机外参数的标定.doc
- 镜像数据库上SQL Server复制
- Good, then we can start
- python中的fun_Python fun中*args,**kwargs参数的含义和用法(*args,**kwargs),Pythonfunargskwargs,及...
- 对路径“C:\Program Files (x86)\gwssi\CPC客户端\CheckWord.xml”的访问被拒绝。
- Xmind8 Pro 最新版 破解教程(序列号|破解文件)
- Nexus max file descriptors
- Md5码的生成及变种Md5码的生成
- java中北大学ppt总结+课后习题第三章(小宇特详解)
- 【c语言】判断整数x是否是同构数。若是同构数,函数返回1;否则返回0.
- 大象知道“故事怎么讲”
- 使用微信开发者平台调样式
- 人工智能对图书馆未来的影响,主要包含哪三个方面?
- OpenGL MFC单文档 实现轨迹球
- R语言绘制PCoA图