余弦相似度,余弦距离,欧氏距离,距离定义

在机器学习问题中,通常将特征表示为向量的形式,所以在分析两个特征向量之间的相似性时,宠用余弦相似度来表示。余弦相似度的取值范围时[-1,1],相同的两个向量之间的相似度为1,如果希望得到类似的距离的表示,将1减去余弦相似度即为余弦距离,因此,宇轩距离的取值范围为[0,2],相同两个向量余弦相似度为0.

为什么在一些场景中要使用余弦相似度而不是欧氏距离呢???

对于两个向量A和B,其余弦相似度定义为:
在这里插入图片描述
即两个向量的夹角的余弦,关注的是向量之间的角度关系,并不关心他们的绝对大小,其取值范围是[-1,1]。当一对文本相似度的长度差距很大,当内容相近时,如果使用词频或词向量作为特征,那么在特征空间中的欧氏距离通常很大,而用余弦相似度,他们之间的夹角可能很小,因而相似度很高。
在文本,图像,视频等领域,研究的对象特征维度往往很高,余弦相似度在高维情况下依然保持"相同时为1,正交时为0,相反时为-1"的性质,而欧式距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。
总体来说,欧式距离体现数值上的绝对差异,而余弦相似度体现方向上的相对差异。

余弦距离是否是一个严格定义的距离????

首先看距离的定义:在一个集合中,如果每一对元素均可唯医确定一个实数,使得三条距离公理(正定性,对称性,三角不等式)成立,则该实数可称为:这对元素之间的距离

余弦距离满足正定性和对称性,但是不满足三角不等式,因此它并不是严格定义的距离。
在这里插入图片描述
欧式距离是一个合法的距离,而余弦相似度余欧式距离有二次关系,自然不满足三角不等式。

### 欧氏距离余弦相似度的区别 在机器学习数据分析领域,衡量样本间的相似性或距离是非常重要的操作之一。两种常用的度量方式分别是欧氏距离(Euclidean Distance) 余弦相似度(Cosine Similarity),二者各有特点。 #### 定义上的区别 - **欧氏距离**定义为两个向量之间直线的距离,适用于数值型变量的空间中两点间最短路径长度的测量。具体公式如下: ```python import numpy as np def euclidean_distance(vec_a, vec_b): return np.sqrt(np.sum((vec_a - vec_b)**2)) ``` 这种度量方法考虑到了各个维度上绝对差值的影响,因此当不同属性的重要性不同时可能需要先做标准化处理[^4]。 - **余弦相似度**则是通过计算两个非零向量夹角的余弦值来反映它们方向的一致程度,取值范围[-1, 1],其中1表示完全相同的方向(-1相反),0垂直无关: ```python from sklearn.metrics.pairwise import cosine_similarity cos_sim = cosine_similarity([vec_a], [vec_b]) print(f"Cosine similarity between vectors: {cos_sim[0][0]}") ``` 此度量仅关注于角度而非大小,所以即使两对象的实际位置相差很大但如果指向一致也会得到较高的分数[^1]。 #### 应用场景的不同 - 对于那些关心实际物理意义下的差距情况的任务来说,比如地理位置分析、图像识别等,则更适合采用能够体现真实间距变化特性的**欧氏距离**作为评价标准;而对于文本分类、推荐系统这类更在意事物本质联系而不是表面数量关系的情形而言,基于方向判断的**余弦相似度**就显得尤为合适了[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值