《百面機器學習》
對於兩個向量a
aa和b
bb,余弦距
離=1−
cos(
a,b)
余弦距離=1-cos(a,b)
余弦距離=1
−cos
(a,b
),其中,cos
(a,b
)cos(a,b)
cos(a,
b)為余弦相似度,計算公式為:
c os
(a,b
)=a⋅
b∥a∥
2∥b∥
2cos\left ( a,b\right )=\frac\left \| b\right \|_}
cos(a,
b)=∥
a∥2
∥b∥2
a⋅b
總的來說,歐式距離體現數值上的絕對差異,而余弦距離體現方向上的相對差異。
余弦距離在高維情況下依然保持[0, 2]的範圍,而歐式距離的數值則受維度的影響,範圍不固定,含義也比較模糊。
如果向量模長經過歸一化,歐式距離與余弦距離有著單調的關係,如word2vec中的向量。
距離的定義
在乙個集合中,如果每一對元素均可唯一確定乙個實數,使得三條公理(正定性,對稱性,三角不等式)成立,則該實數可稱為這對元素之間的距離。
余弦距離的正定性
根據余弦距離的定義,有
d is
t(a,
b)=1
−cos
θ⩾
0dist\left ( a,b\right )=1-cos\theta \geqslant 0
dist(a
,b)=
1−co
sθ⩾0
當且僅當a=b
a=ba=
b時,dis
t(a,
b)=0
dist\left ( a,b\right )=0
dist(a
,b)=
0。因此,余弦距離滿足正定性
余弦距離的對稱性
根據余弦距離的定義,有
d is
t(a,
b)=∥
a∥2∥
b∥2−
ab∥a
∥2∥b
∥2=∥
b∥2∥
a∥2−
ab∥b
∥2∥a
∥2=d
ist(
b,a)
dist\left ( a,b\right )=\frac\left \| b\right \|_-ab}\left \| b\right \|_}=\frac\left \| a\right \|_-ab}\left \| a\right \|_}=dist\left ( b,a\right )
dist(a
,b)=
∥a∥2
∥b∥
2∥a
∥2∥
b∥2
−ab
=∥b∥
2∥a
∥2∥
b∥2
∥a∥2
−ab
=di
st(b
,a)因此,余弦距離滿足對稱性
余弦距離的三角不等式
舉乙個反例,a=(
1,0)
a=(1,0)
a=(1,0
),b=(1
,1
)b=(1,1)
b=(1,1
),c=(0
,1
)c=(0,1)
c=(0,1
),則有
d is
t(a,
b)+d
ist(
b,c)
=2−2
<1=
dist
(a,c
)dist(a,b)+dist(b,c)=2-\sqrt< 1=dist(a,c)
dist(a
,b)+
dist
(b,c
)=2−
2<1=
dist
(a,c
) 因此,余弦距離不滿足三角不等式。
from sklearn.metrics.pairwise import pairwise_distances
from sklearn.metrics.pairwise import euclidean_distances
x =[[1
,3,2
],[2
,2,1
]]cosine_dist = pairwise_distances(x, metric=
"cosine"
)euclidean_dist = euclidean_distances(x)
print
(cosine_dist)
print
(euclidean_dist)
python 余弦距離 距離最小余弦
我有乙個簡單和工作的多層感知器在theano,有1個隱藏層和1個回歸層,有2個輸出。成本函式定義為均方誤差函式。然而,在學習過程中,我現在想最小化兩個向量之間的余弦距離,所以我想用余弦距離作為代價函式。下面是我當前實現的一些相關部分。在import theano import theano.tens...
演算法基礎之余弦計算相似度
例 甲 乙 丙三人去看了兩場電影。甲對a電影的評分是3,對b電影的評分是4。乙對a電影的評分是5,對b電影的評分是3。丙對a電影的評分是4,對b電影的評分是5。根據這三個人的評分,求電影a b的余弦相似。a.0.48 b.0.94 c.1.26 余弦計算相似度度量 相似度度量 similarity ...
相似度演算法之余弦相似度
余弦距離,也稱為余弦相似度,是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似,這就叫 余弦相似性 上圖兩個向量a,b的夾角很小可以說a向量和b向量有很高的的相似性,極端情況下,a和b向量完全重合。如下圖 如上圖二 可以認...