ML에서 주로 다루는 데이터는 바로 vector이다.
(matrix도 vector들이 결합하여 이루어진 것이라고 생각할 수 있음.)
Cosine Similarity는 두 vector가 얼마나 유사한지(similar)를 측정하기 위한 metric 중 하나로서, vector가 가지는 magnitude와 direction 두가지 특성 중에서 direction을 이용한다.
- 두 vector의 사이각 을 이용하여 similarity를 측정.
공식
공식은 다음과 같음.
$$\text{cosine_similarity}=\cos \theta = \frac{\textbf{x}\cdot\textbf{y}}{\|\textbf{x}\|_2\|\textbf{y}\|_2}$$
- \(\cdot\) : inner product (내적, dot product)
- \( \| . \|_2 \) : L2-Norm
의미
Linear algebra에서 두 vector가 서로 겹치는 정보를 가지지않고(유사한 점이 없음) 있는 경우를 orthogonal하다라고 애기한다.
- linearly dependent : 두 vector가 각각의 고유한 성분을 가지지 않음. 때문에 한 vector를 scalar multiple하면 다른 vector를 얻을 수 있음.
- linearly independent : 두 vector가 각각의 고유한 성분을 가지고 있다 (일부 겹치는 성분도 있지만). scalar multiple로는 다른 vector를 얻을 수 없음.
- orthogonal : 두 vector가 고유한 성분만을 가지고 있고 겹치는 것이 없음. 이 경우 두 vector의 inner product가 0이 된다.
즉, 두 vector가 유사점이 완전히 없는 경우는 두 vector가 orthogonal인 경우이다. 이를 \(\mathbb{R}^2\)로 생각하면 두 vector의 사이각이 90도인 경우이다.
(opposite direction인 경우엔 두 vector는 linearly dependent이다.)
사이각을 0에 가까울수록 두 vector를 유사하다고 할 수 있으므로,
두 vector의 inner prodcut을 통해 사이각에 대한 cos을 일종의 similarity score (or similarity index)로 사용할 수 있고,
이것이 바로 cosine similarity임.
확률 및 통계의 correlation coef.과 수치적 의미가 매우 유사하다.
0일때 아무 상관관계가 없고,
1일때 가장 큰 positive correlation,
-1일 때 가장 높은 negative correlation을
가지는 correlation coef.처럼
cosine similarity도 0일때 가장 유사도가 낮고,
-1과 1에 가까울수록 유사한 vector라고 생각할 수 있다.
더 읽어보면 좋은 자료
correlation관련 자료 : 2022.10.14 - [.../Signals and Systems] - [SS] Cross Correlation
ML에서의 similarity 관련 자료 : https://dsaint31.me/mkdocs_site/ML/ch00/ch00_31_instance_based_learning/#similarity
DIP에서의 distance function 관련 자료 : https://dsaint31.me/mkdocs_site/DIP/cv2/etc/dip_metrics/#distance-function-or-metric
'... > Math' 카테고리의 다른 글
[Math] log (logarithmic) function (0) | 2023.08.13 |
---|---|
[Math] Rotation Vector (= Axis-Angle, Rodrigues Angle) (0) | 2023.08.05 |
[Math] Sequence (수열) and Series (급수) (0) | 2023.07.21 |
[Math] Stationary point (or Critical point) (0) | 2023.07.10 |
[Math] Second Order Condition : Convexity (0) | 2023.07.10 |