코사인 유사도는 벡터의 내적으로부터 시작됩니다.
코사인 유사도
코사인 유사도는 주로 두 벡터를 비교할때 사용합니다. 즉, 두 벡터가 얼마나 닮아있는가를 측정하는 방법입니다.
코사인 유사도는 -1과 1사이의 값을 가지고, 수치가 클수록 두 벡터가 유사하다고 할 수 있습니다. 여기서 중요한 포인트는 두 벡터의 방향성인데요. 코사인 유사도는 두 벡터가 이루는 각도를 이용하기 때문에, 두 벡터의 거리보다는 방향성에 더 초점을 맞춘 유사도입니다.
먼저 벡터의 내적 공식을 한번 리마인드 해봅시다.
위와 같이 w, v 벡터가 있을 때, 내적의 수식은 아래와 같습니다.
$$ w\cdot v = \parallel v \parallel * \parallel w \parallel * \cos \Theta = a*c + b*d$$
여기서 조금만 변형해 보면 아래와 같은 수식을 얻을 수 있습니다.
$$ \cos \Theta = \frac{v\cdot w}{\parallel v \parallel * \parallel w \parallel} $$
이제 이것이 무엇을 의미하는지 살펴봅시다.
위와 같이 세가지 상황이 있다고 가정합시다.
만약 내적처럼 하나의 벡터 위로 나머지 벡터를 정사영 시킨다면, ||w||*cosθ가 되겠죠?
1번 상황
두 벡터가 이루는 각도는 90o입니다. 따라서 ||w||*cos90이 될것이고, cos90은 0이기 때문에 0이 됩니다.
2번 상황
두 벡터가 이루는 각도는 0o입니다. 따라서 ||w||*cos0이 될것이고, cos0은 1이기 때문에 ||w||이 됩니다.
3번 상황
두 벡터가 이루는 각도는 θo입니다. 따라서 최종 값은 ||w||*cosθ가 될것입니다.
여기서 주목할 점! cosθ는 -1과 1사이의 값을 가집니다. 따라서 2번상황이 최대값이라고 할 수 있겠네요.
위의 상황들을 예시로 보면 두 벡터가 가까울수록 가장 값이 커지는 것을 확인할 수 있습니다.
따라서 두 벡터 사이의 각이 작을수록 많이 닮아있다 라고 할 수 있습니다.
이것이 바로 코사인 유사도의 개념입니다.