코사인 유사도 - Cosine Similarity

데이터 포인트들 간의 유사도를 코사인(으로 계산한 것을 말한다. 정확히는 두 벡터의 사잇각을 코사인값으로 나타낸 것이다.

데이터마이닝, 기계학습, 통계학등에서 유사한 데이터를 찾을 때 기본적으로 접근하는 것이 두 데이터 포인트의 거리를 계산하는 것부터 시작한다. 데이터 포인트 간의 거리를 측정하는 방법을 distance measurement라고 하며 매우 많은 것들이 있다. 가장 일반적인 것이 벡터 공간에서의 두 포인트의 직선거리를 구하는 것으로 유클리디안 거리(Eucledean distance)가 있고 원점을 기준은로 두 포인트간의 각을 구하는 것으로 코사인 유사도가 있다.

코사인 유사도는 그 공식이 매우 간단하고 중등수학(고등학교 수준의 수학)으로 쓸 수 있다는 점에서 간단하고 좋다. 그래서 공식보다는 어떤 경우에 코사인 유사도를 사용해야 하는지를 이해하는 것이 더 중요하다.

코사인 유사도 공식 - Consine Simiarity Equation

수식은 다음과 같다.

$$ cos(\pmb x, \pmb y) = \frac {\pmb x \cdot \pmb y}{||\pmb x|| \cdot ||\pmb y||} $$

코사인 유사도는 코사인 제2법칙에서 유도할 수 있으며 실제로 유도법을 가르치는 경우도 많은데 유도하는 것이나 증명하는 방법을 연습하는 것도 하면 좋겠지만 그보다는 원리까지만 이해해두면 현실에서는 충분하다. 원리 마저도 이해하기 싫다며 계산하는 흐름만 간단하게 한두번 봐두어도 충분하다.

공식 설명

두 벡터의 내적을 구한 뒤 두 벡터의 크기를 각각 구해 서로 곱한 것으로 나눈다. 직각삼각형에서 내각의 코사인 값은 밑변의 크기를 빗변의 크기로 나누면 되는데 두 벡터의 위치와 원점이 항상 직각삼각형이 되는 것이 아니기 때문에 내적을 이용해서 직각삼각형으로 만들고 내각을 코사안값으로 구하는 것이 이 공식의 전부이다.

자세한 설명은 Cosine Similarity – 코사인 유사도 블로그를 참고하기 바란다.