두 벡터 사이의 각도를 구하는 것은 벡터 간의 방향 관계를 수치적으로 분석하는 중요한 도구입니다. 특히 데이터 과학, 자연어 처리, 추천 시스템 등 다양한 분야에서는 벡터의 ‘유사도’를 측정하기 위해 코사인 유사도(cosine similarity)라는 개념이 널리 사용됩니다. 이 글에서는 두 벡터 사이의 각도를 수학적으로 구하는 방법과 코사인 유사도의 의미 및 활용 방법을 상세히 설명합니다.
두 벡터 사이의 각도 계산
두 벡터 \( \vec{a} \)와 \( \vec{b} \) 사이의 각도 \( \theta \)는 다음 공식으로 계산할 수 있습니다:
\[ \cos \theta = \frac{\vec{a} \cdot \vec{b}}{|\vec{a}||\vec{b}|} \]
여기서,
- \( \vec{a} \cdot \vec{b} \)는 내적(dot product)
- \( |\vec{a}| \), \( |\vec{b}| \)는 각각의 벡터 크기(노름)
이 식을 통해 \( \theta \)를 역코사인 함수로 구하면:
\[ \theta = \cos^{-1}\left( \frac{\vec{a} \cdot \vec{b}}{|\vec{a}||\vec{b}|} \right) \]
예시: 계산 예
벡터 \( \vec{a} = (3, 4) \), \( \vec{b} = (4, -3) \)일 때:
1. 내적 계산:
\[ \vec{a} \cdot \vec{b} = 3 \cdot 4 + 4 \cdot (-3) = 12 – 12 = 0 \]
2. 벡터 크기 계산:
\[ |\vec{a}| = \sqrt{3^2 + 4^2} = \sqrt{25} = 5,\quad |\vec{b}| = \sqrt{4^2 + (-3)^2} = \sqrt{25} = 5 \]
3. 코사인 값:
\[ \cos \theta = \frac{0}{5 \cdot 5} = 0 \Rightarrow \theta = 90^\circ \]
두 벡터는 서로 직각을 이룹니다.
코사인 유사도란?
코사인 유사도는 벡터 간 방향의 유사성을 측정하는 지표입니다. 수학적으로는 벡터 사이의 각도에 대한 코사인 값으로 정의되며 다음과 같습니다:
\[ \text{Cosine Similarity} = \cos \theta = \frac{\vec{a} \cdot \vec{b}}{|\vec{a}||\vec{b}|} \]
이 값은 다음과 같은 의미를 가집니다:
- 1: 완전히 같은 방향
- 0: 서로 직각, 관련 없음
- -1: 완전히 반대 방향
코사인 유사도의 장점
- 크기 무관: 벡터의 방향만 비교하므로, 크기의 영향을 받지 않음
- 고차원에서도 적용 가능: n차원 벡터에도 똑같이 적용 가능
- 정규화 불필요: 계산 자체가 방향성만 보기 때문에 자동 정규화 효과가 있음
활용 분야
- 자연어 처리(NLP): 단어 임베딩 벡터 간 의미 유사도 측정
- 추천 시스템: 사용자 취향 벡터와 아이템 벡터 간 유사도 기반 추천
- 문서 검색: 문서-쿼리 간 의미 유사도 분석
주의할 점
코사인 유사도는 방향만을 비교하므로, 거리(절대값 차이) 기반 유사도와는 목적이 다릅니다. 예를 들어, 두 벡터가 크기는 다르지만 방향이 동일하면 코사인 유사도는 1이 됩니다.
결론
각도 계산: 내적과 크기를 이용해 두 벡터 사이의 각도를 정량적으로 계산할 수 있습니다.
코사인 유사도: 벡터 간의 방향 유사성을 판단하는 데 매우 유용한 수치입니다.
응용: NLP, 추천 시스템, 검색 등 다양한 데이터 분석 분야에서 핵심 도구로 활용됩니다.
정리: \( \cos \theta = \frac{\vec{a} \cdot \vec{b}}{|\vec{a}||\vec{b}|} \) 공식을 이용하면 각도 또는 유사도를 손쉽게 계산할 수 있습니다.