Search

벡터와 유사도

Created at
2018/11/21
Updated at
Tags
Keywords
3 more properties

1. 유클리드 유사도(Euclidean Similarity)

유클리드 거리(Euclidean distance): 두 벡터가 가리키는 점 사이의 거리
두 벡터의 차의 길이로 구할 수 있음
ab=i=1(aibi)2=i=1(ai22aibi+bi2)=i=1ai2+i=1bi22i=1aibi=a2+b22aTb\begin{aligned} \Vert a - b \Vert & = \sqrt{\sum_{i=1} (a_i - b_i)^2} \\ & = \sqrt{\sum_{i=1} ( a_i^2 - 2 a_i b_i + b_i^2 )} \\ & = \sqrt{\sum_{i=1} a_i^2 + \sum_{i=1} b_i^2 - 2 \sum_{i=1} a_i b_i} \\ & = \sqrt{\Vert a \Vert^2 + \Vert b \Vert^2 - 2 a^Tb } \\ \end{aligned}
ab2=a2+b22aTb\Vert a - b \Vert^2 = \Vert a \Vert^2 + \Vert b \Vert^2 - 2 a^T b
유클리드 유사도: 유클리드 거리와 반비례하는 값으로 정의할 수 있음

2. 코사인 유사도(Cosine Similarity)

2.1 벡터의 내적과 코사인

두 벡터의 내적은 다음과 같이 벡터의 길이 a,b\Vert a \Vert, \Vert b \Vert와 두 벡터 사이의 각도 θ\theta로 계산할 수 있음
aTb=abcosθa^Tb = \Vert a \Vert \Vert b \Vert \cos \theta
cosθ\cos \theta: θ\theta 각을 가지는 직각삼각형에서 빗변 aa와 아랫변 bb의 길이의 비율
cosθ\cos\theta의 값은 θ\theta가 0에 가까워질수록 1에 가까워지고 θ\theta9090{}^{\circ}에 가까워질수록 0에 가까워짐
cosθ=밑변빗변\cos\theta = \dfrac{\text{밑변}}{\text{빗변}}
cos0=1cos 0^{\circ} = 1
cos90=0\cos 90^{\circ} = 0

2.2 직교(orthogonal)

직교: 두 벡터 aabb가 이루는 각이 90도인 경우 직교한다고 하며 aba \perp b 로 표기
cos90=0\cos 90^{\circ} = 0 이므로 서로 직교인 두 벡터의 내적은 0
aTb=bTa=0                aba^T b = b^T a = 0 \;\;\;\; \leftrightarrow \;\;\;\; a \perp b

2.3 코사인 유사도(cosine similarity)

두 벡터의 유클리드 거리 대신 두 벡터가 비슷한 방향을 가리키는 것을 유사하다고 볼 수도 있음
코사인 유사도: 두 벡터가 이루는 각의 코사인 값
두 벡터가 같은 방향을 가리키면(각도가 0) 최대값 1을 가짐
cosine similarity=cosθ=xTyxy\text{cosine similarity} = \cos\theta = \dfrac{x^Ty}{\Vert x\Vert \Vert y\Vert}
추천시스템(recommend system)에서 사용자 취향의 유사성을 계산할 때 사용됨
코사인 거리(cosine distance)
cosine distance=1cosine similarity=1xTyxy\text{cosine distance} = 1 - \text{cosine similarity} = 1 - \dfrac{x^Ty}{\Vert x\Vert \Vert y\Vert}
참고 자료