어제 강의에서 벡터에서 두 점 사이의 유사도는 직선거리로 파악할 수 있다고 하셨는데, 오늘은 새로운 유사도 측정법이 나왔음.
바로 코사인 유사도.
코사인 유사도는 두 점 사이의 각을 코사인으로 구해서 코사인값이 1에 가까울 수록 (cos0) 유사하다고 함.
세 점 a(1,1) , b(10,10) , c(1,3) 이 있다고 했을 때,
a와 유사한 점은 b일까 c일까?
거리상으로는 a와 c가 가까워서 유사하다고 볼 수 있고, 코사인 유사도 상으로는 a와 b가 유사하다고 볼 수 있는데 뭐가 맞는 걸까?
🤓튜터님 답변
💡유클리디안 거리와 코사인 유사도
- 이 차이는 두 측정 방식의 특성 때문입니다.
- 유클리디안 거리는 벡터의 크기와 방향 모두를 고려합니다. 따라서 (10, 10)이 (1, 1)에서 멀리 떨어져 있어 유사도가 낮게 나옵니다.
- 코사인 유사도는 벡터의 방향만을 고려하고 크기는 무시합니다. (1, 1)과 (10, 10)은 같은 방향을 가리키므로 높은 유사도를 보입니다.
- 결론적으로, 어떤 값이 더 유사하다고 볼 수 있는지는 사용 목적에 따라 다릅니다.
- 벡터의 크기가 중요하다면 유클리디안 거리를, 방향만이 중요하다면 코사인 유사도를 사용하는 것이 적절합니다.
*벡터의 크기는 원점에서 끝점까지의 거리를 말함.
🧮 정리
| 속성 | 유클리디안 거리 | 코사인 유사도 |
|---|---|---|
| 거리 계산 기준 | 두 벡터 사이의 직선 거리 계산 | 두 벡터 간 각도 기반 계산 |
| 크기 반영 여부 | 크기와 방향 관계 반영 | 크기 무시 |
| 방향 반영 여부 | 부분적으로 반영 (간접적으로 관계 계산) | 정확하게 반영 |
| 값의 범위 | 0 (같음) ~ 무한대 | -1 (반대 방향) ~ 0 (무관) ~ 1 (같은 방향) |
| 결과의 의미 | 값이 작을수록 두 점이 가까움 | 값이 클수록(1에 가까울수록) 방향이 유사함 |
| 사용 목적 | 절대적 차이 계산 | 유사성(관계성) 측정 |
| 활용 분야 | 유클리디안 거리 | 코사인 유사도 |
|---|---|---|
| 분류 (Classification) | KNN에서 사용 | 사용자 선호도 기반 추천에 활용 |
| 클러스터링 (Clustering) | K-Means 클러스터링 | 문서 군집화나 사용자 그룹 분석 |
| 추천 시스템 (Recommendation) | 사용자-아이템 거리 계산 | 코사인 기반 추천 시스템에서 활용 |
| 텍스트 분석 | ❌ | 문서 간 코사인 유사성 계산 |
| 스케일링 | 데이터 스케일 조정 필요 | ❌ |
차이점에 대해서는 개념이 잡힌 것 같고, 활용 분야에 대해선 아직 약간 헷갈리는 부분이 있음. 분류, 클러스터링 등의 둘 다 사용할 수 있는 부분에서는 어떤걸 사용해야 더 적절한지 헷갈림. 실제로 여러 데이터를 다뤄보고 사용해봐야 파악할 수 있을 것 같음. 크기가 중요한 데이턴지 방향성이 중요한 데이턴지에 대해 파악하는 연습이 필요한 것 같음.