벡터의 거리와 내적
벡터 간의 관계를 이해하는 것은 머신러닝, 정보 검색, 자연어 처리(NLP) 등
다양한 데이터 분석 및 인공지능 분야에서 매우 중요한 개념임.
벡터는 데이터를 수학적으로 표현하는 기본 단위이기 때문에, 그 거리와 방향을 이해하는 것은 모델의 성능과 해석력에 직결됨.
유클리드 거리 (Euclidean Distance)
두 점(벡터) 사이가 얼마나 멀리 떨어져 있는지를 측정하는 지표
- 벡터 간의 실제 공간상 거리
- “비슷한 정도”를 거리 개념으로 측정할 때 사용
- 예: 고객 간 거리, 제품 간 거리, 이미지 간 유사도 등
내적 (Dot Product)
두 벡터가 얼마나 같은 방향을 향하고 있는지 측정
- 벡터의 방향과 크기를 모두 고려
- 값이 클수록 두 벡터는 비슷한 방향을 가짐
- 음수면 반대 방향, 0이면 직교(서로 관련 없음)
코사인 유사도 (Cosine Similarity)
내적을 정규화(normalization) 하여, 벡터의 방향(각도) 만 비교할 수 있게 만든 지표
- 내적은 벡터의 크기(길이)에도 영향을 받지만, 코사인 유사도는 이를 제거하고 오직 방향만 평가
- 문서나 문장의 의미적 유사도 계산, 추천 시스템 등에서 자주 사용
- 값의 범위는 -1 ~ 1
- 1 → 완전히 같은 방향
- 0 → 직교(무관함)
- -1 → 완전히 반대 방향
개념 요약
| 개념 | 의미 | 활용 예시 |
|---|
| 유클리드 거리 | 벡터 간 물리적 거리 | KNN, 클러스터링 |
| 내적 | 방향의 일치 정도 | 투영, 회전, PCA |
| 코사인 유사도 | 방향 유사성 (크기 무시) | 문서 유사도, 임베딩 비교 |
1. 유클리드 거리 (Euclidean Distance)
두 벡터
a=(a1,a2,…,an),
b=(b1,b2,…,bn) 사이의 유클리드 거리는 다음과 같다:
거리=(a1−b1)2+(a2−b2)2+⋯+(an−bn)2
예시 (2차원)
a=(1,2), b=(4,6)
거리=(1−4)2+(2−6)2=9+16=5
예시 (3차원)
p=(1,2,3), q=(4,5,6)
거리=(1−4)2+(2−5)2+(3−6)2=27≈5.196
2. 내적 (Dot Product)
두 벡터의 내적은 같은 위치의 성분끼리 곱해서 모두 더한다:
a⋅b=a1b1+a2b2+⋯+anbn
예시 (2차원)
a=(3,4), b=(2,1)
a⋅b=3×2+4×1=10
예시 (3차원)
u=(1,2,3), v=(4,5,6)
u⋅v=1×4+2×5+3×6=32
3. 벡터의 크기 (Norm, Magnitude)
벡터의 크기는 각 성분의 제곱을 모두 더한 뒤 제곱근을 취한다:
∣a∣=a12+a22+⋯+an2
예시 (2차원)
a=(3,4)
∣a∣=32+42=5
예시 (3차원)
u=(1,2,3)
∣u∣=12+22+32=14≈3.742
4. 코사인 유사도 (Cosine Similarity)
두 벡터의 코사인 유사도는 내적을 두 벡터의 크기의 곱으로 나눈 값이다:
cosθ=∣a∣⋅∣b∣a⋅b
예시 (2차원)
a=(3,4), b=(2,1)
- 내적: 10
- ∣a∣=5
- ∣b∣=5≈2.236
cosθ=5×2.23610=11.1810≈0.894
예시 (3차원)
u=(1,2,3), v=(4,5,6)
- 내적: 32
- ∣u∣≈3.742
- ∣v∣=77≈8.775
cosθ=3.742×8.77532=32.8332≈0.975
공식 요약
- 유클리드 거리: 각 성분의 차의 제곱을 더해 루트
- 내적: 같은 위치의 성분끼리 곱해서 모두 더함
- 벡터의 크기: 각 성분의 제곱을 더해 루트
- 코사인 유사도: 내적을 두 벡터의 크기 곱으로 나눈 값