데이터 포인트들 간의 유사도를 코사인(으로 계산한 것을 말한다. 정확히는 두 벡터의 사잇각을 코사인값으로 나타낸 것이다.
데이터마이닝, 기계학습, 통계학등에서 유사한 데이터를 찾을 때 기본적으로 접근하는 것이 두 데이터 포인트의 거리를 계산하는 것부터 시작한다. 데이터 포인트 간의 거리를 측정하는 방법을 distance measurement라고 하며 매우 많은 것들이 있다. 가장 일반적인 것이 벡터 공간에서의 두 포인트의 직선거리를 구하는 것으로 유클리디안 거리(Eucledean distance)가 있고 원점을 기준은로 두 포인트간의 각을 구하는 것으로 코사인 유사도가 있다.
코사인 유사도는 그 공식이 매우 간단하고 중등수학(고등학교 수준의 수학)으로 쓸 수 있다는 점에서 간단하고 좋다. 그래서 공식보다는 어떤 경우에 코사인 유사도를 사용해야 하는지를 이해하는 것이 더 중요하다.
수식은 다음과 같다.
$$ cos(\pmb x, \pmb y) = \frac {\pmb x \cdot \pmb y}{||\pmb x|| \cdot ||\pmb y||} $$
코사인 유사도는 코사인 제2법칙에서 유도할 수 있으며 실제로 유도법을 가르치는 경우도 많은데 유도하는 것이나 증명하는 방법을 연습하는 것도 하면 좋겠지만 그보다는 원리까지만 이해해두면 현실에서는 충분하다. 원리 마저도 이해하기 싫다며 계산하는 흐름만 간단하게 한두번 봐두어도 충분하다.
두 벡터의 내적을 구한 뒤 두 벡터의 크기를 각각 구해 서로 곱한 것으로 나눈다. 직각삼각형에서 내각의 코사인 값은 밑변의 크기를 빗변의 크기로 나누면 되는데 두 벡터의 위치와 원점이 항상 직각삼각형이 되는 것이 아니기 때문에 내적을 이용해서 직각삼각형으로 만들고 내각을 코사안값으로 구하는 것이 이 공식의 전부이다.
자세한 설명은 Cosine Similarity – 코사인 유사도 블로그를 참고하기 바란다.