距离度量 —— 余弦相似度(Cosine similarity)-繁依Fanyi

Python学习系列文章 目录

在这里插入图片描述

一、概述

三角函数,相信大家在初高中都已经学过,而这里所说的余弦相似度(Cosine Distance)的计算公式和高中学到过的公式差不多。

在几何中,夹角的余弦值可以用来衡量两个方向(向量)的差异;因此可以推广到机器学习中,来衡量样本向量之间的差异。

因此,我们的公式也要稍加变换,使其能够用向量来表示。

在这里插入图片描述

二、计算公式

① 二维平面上的余弦相似度

假设 二维平面 内有两向量:

A

(

x

1

,

y

1

)

A(x_{1},y_{1})

A(x1,y1)

B

(

x

2

,

y

2

)

B(x_{2},y_{2})

B(x2,y2)

则二维平面的

A

A

A

B

B

B 两向量的余弦相似度公式为:

c

o

s

(

θ

)

=

a

b

a

b

cos(theta)=frac{acdot b}{|a| |b|}

cos(θ)=abab

c

o

s

(

θ

)

=

a

b

a

b

=

x

1

x

2

+

y

1

y

2

x

1

2

+

y

1

2

x

2

2

+

y

2

2

begin{aligned} cos(theta)&=frac{acdot b}{|a| |b|}\ &=frac{x_{1}x_{2}+y_{1}y_{2}}{sqrt{x_{1}^2+y_{1}^2}sqrt{x_{2}^2+y_{2}^2}} end{aligned}

cos(θ)=abab=x12+y12
x22+y22
x1x2+y1y2

② n维空间上的余弦相似度

推广到 n 维空间的两个向量

A

(

x

11

,

x

12

,

.

.

.

,

x

1

n

)

A(x_{11},x_{12},…,x_{1n})

A(x11,x12,...,x1n)

B

(

x

21

,

x

22

,

.

.

.

,

x

2

n

)

B(x_{21},x_{22},…,x_{2n})

B(x21,x22,...,x2n),则有余弦相似度为:

c

o

s

(

θ

)

=

a

b

a

b

=

k

=

1

n

x

1

k

x

2

k

k

=

1

n

x

1

k

2

k

=

1

n

x

2

k

2

begin{aligned} cos(theta)&=frac{acdot b}{|a| |b|}\ &=frac{sum_{k=1}^n x_{1k} x_{2k}}{sqrt{sum_{k=1}^nx_{1k}^2}sqrt{sum_{k=1}^nx_{2k}^2}} end{aligned}

cos(θ)=abab=k=1nx1k2
k=1nx2k2
k=1nx1kx2k

③ 注意

  • 余弦相似度的取值范围为

    [

    1

    ,

    1

    ]

    [-1,1]

    [1,1]

  • 余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。
  • 当两个向量的方向重合时余弦取最大值

    1

    1

    1,当两个向量的方向完全相反余弦取最小值

    1

    -1

    1

在这里插入图片描述

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容