余弦距离介绍

更多深度学习资讯都在公众号:深度学习视觉
回复:python大礼包,200G资源到手。
MyBlog

概述: 在机器学习领域中,通常将特征表示为向量的形式,所以在分析两个特征向量之间的相似性时,常用余弦相似度表示。例如将两篇文章向量化,余弦距离可以避免因为文章的长度不同而导致距离偏大,余弦距离只考虑两篇文章生成的向量的夹角。

余弦相似度的取值范围是[-1,1],相同两个向量的之间的相似度为1。

余弦距离的取值范围是[0,2]。

余弦相似度的定义公式为 c o s ( A , B ) = A ⋅ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 cos(A,B)=\frac{A\cdot B}{||A||_2||B||_2} cos(A,B)=A2B2AB

归一化后 ∣ ∣ A ∣ ∣ 2 = 1 , ∣ ∣ B ∣ ∣ 2 = 1 , ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 = 1 ||A||_2=1,||B||_2=1,||A||_2||B||_2=1 A2=1,B2=1,A2B2=1

余弦距离:

d i s t ( A , B ) = 1 − c o s ( A , B ) = ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 − A ⋅ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 dist(A,B)=1-cos(A,B)=\frac{{||A||_2||B||_2} -A\cdot B}{||A||_2||B||_2} dist(A,B)=1cos(A,B)=A2B2A2B2AB,距离恒大于等于0

欧式距离: ∣ ∣ A − B ∣ ∣ 2 = ∣ ∣ A ∣ ∣ 2 2 + ∣ ∣ B ∣ ∣ 2 2 − 2 A ⋅ B = 2 − 2 A ⋅ B = 2 ( 1 − A ⋅ B ) = > ∣ ∣ A − B ∣ ∣ = 2 d i s t ( A , B ) ||A-B||^2 = ||A||^2_2+||B||^2_2-2A\cdot B=2-2A\cdot B=2(1-A\cdot B)=>||A-B|| =\sqrt{2dist(A,B)} AB2=A22+B222AB=22AB=2(1AB)=>AB=2dist(A,B)

由公式可以看出归一化后,欧式距离与余弦距离存在单调性关系。此时两种距离的值域都为[0,2]。

欧式距离与余弦距离的对比:

1.欧式距离的数值受到维度的影响,余弦相似度在高维的情况下也依然保持低维完全相同时相似度为1等性质。

2.欧式距离体现的是距离上的绝对差异,余弦距离体现的是方向上的相对差异。

不同情况不同选择:

1.两个人分别取了蓝球(1,0)与红球(0,1),这两个向量的欧式距离较小,可是事实是这两个球是不同的,而余弦距离为2表示的是完全不同的意思。所以在这种情况下选择余弦距离更具合理性。

2.两个人对APP的使用次数与使用时长分别表示为(1,10),(10,100),可知余弦相似度较小,说明这两个人的行为时相同的,可是,事实是不同的,两个人的活跃度有着极大的差异,第二个人的活跃度更高。

余弦距离满足正定性和对称性,但是不满足三角不等式,因此余弦距离不是一个严格定义的距离。

距离的定义:

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

证明:

1.正定性

余弦距离公式: d i s t ( A , B ) = 1 − c o s θ dist(A,B)=1-cos\theta dist(A,B)=1cosθ ,因为 − 1 ≤ c o s θ ≤ 1 -1\leq cos\theta \leq 1 1cosθ1,所以 d i s t ( A , B ) ≥ 0 dist(A,B)\geq 0 dist(A,B)0满足正定性。

2.对称性:

d i s t ( A , B ) = 1 − c o s ( A , B ) = ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 − A ⋅ B ∣ ∣ A ∣ ∣ 2 ∣ ∣ B ∣ ∣ 2 = ∣ ∣ B ∣ ∣ 2 ∣ ∣ A ∣ ∣ 2 − B ⋅ A ∣ ∣ B ∣ ∣ 2 ∣ ∣ A ∣ ∣ 2 = d i s t ( B , A ) dist(A,B)=1-cos(A,B)=\frac{{||A||_2||B||_2} -A\cdot B}{||A||_2||B||_2} =\frac{{||B||_2||A||_2} -B\cdot A}{||B||_2||A||_2} =dist(B,A) dist(A,B)=1cos(A,B)=A2B2A2B2AB=B2A2B2A2BA=dist(B,A),满足对称性。

3.三角不等式:

给定A=(1,0),B=(1,1),C=(0,1),则有 d i s t ( A , B ) = 1 − 2 2 dist(A,B)=1-\frac{\sqrt{2} }{2} dist(A,B)=122 , d i s t ( B , C ) = 1 − 2 2 dist(B,C)=1-\frac{\sqrt{2} }{2} dist(B,C)=122 , d i s t ( A , C ) = 1 dist(A,C)=1 dist(A,C)=1

因此有 d i s t ( A , B ) + d i s t ( B , C ) = 2 − 2 < 1 = d i s t ( A , C ) dist(A,B)+dist(B,C) = 2 - \sqrt{2} < 1 = dist(A,C) dist(A,B)+dist(B,C)=22 <1=dist(A,C),所以得出余弦距离不符合三角不等式。

python下的一棵樱花树:
PYthon开发者的画笔

  • 13
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
深度学习中的距离度量是用来衡量两个样本之间的相似性或差异性的方法。不同的距离度量方法适用于不同类型的数据和任务。 以下是几种常见的距离度量方法: 1. 欧氏距离(Euclidean Distance):欧氏距离是最常见的距离度量方法。对于两个样本向量 x 和 y,欧氏距离定义为 d(x, y) = sqrt(sum((x[i] - y[i])^2)),其中 i 表示向量的维度。欧氏距离衡量了两个样本之间在每个维度上的差异程度。 2. 曼哈顿距离(Manhattan Distance):曼哈顿距离是另一种常用的距离度量方法。对于两个样本向量 x 和 y,曼哈顿距离定义为 d(x, y) = sum(|x[i] - y[i]|),其中 i 表示向量的维度。曼哈顿距离衡量了两个样本之间沿着坐标轴的距离。 3. 余弦相似度(Cosine Similarity):余弦相似度衡量了两个样本之间的夹角,而不仅仅考虑了它们在每个维度上的差异程度。对于两个样本向量 x 和 y,余弦相似度定义为 cos(x, y) = dot(x, y) / (||x|| * ||y||),其中 dot 表示向量的点积,||x|| 和 ||y|| 表示向量的范数。余弦相似度的取值范围在 -1 到 1 之间,值越接近 1 表示样本越相似。 4. 马氏距离(Mahalanobis Distance):马氏距离考虑了数据之间的相关性。它通过将数据进行线性变换,使得变换后的数据具有相等的协方差矩阵,然后计算变换后的数据之间的欧氏距离。马氏距离可以有效地处理具有相关特征的数据。 除了上述常见的距离度量方法,还有其他一些方法,如闵可夫斯基距离(Minkowski Distance)、切比雪夫距离(Chebyshev Distance)等。选择合适的距离度量方法取决于数据的类型和任务的需求。在深度学习中,我们可以根据具体情况选择适合的距离度量方法,以便更好地衡量样本之间的相似性或差异性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值