코사인 유사도 계산기 - 벡터 유사성 분석
두 벡터의 코사인 유사도를 즉시 계산합니다. 값이 1이면 같은 방향, 0이면 직교, −1이면 반대 방향입니다.
길이가 같은 두 개의 숫자 벡터를 쉼표 또는 공백으로 구분해 입력한 뒤, 계산을 클릭하면 코사인 유사도와 보조 지표를 확인할 수 있습니다.
코사인 유사도 계산기 - 벡터 유사성 분석
두 벡터의 코사인 유사도를 즉시 계산합니다. 값이 1이면 같은 방향, 0이면 직교, −1이면 반대 방향입니다.
쉼표 또는 공백으로 구분된 숫자를 입력하세요
쉼표 또는 공백으로 구분된 숫자를 입력하세요
코사인 유사도 계산기 소개
코사인 유사도는 다차원 공간에서 두 개의 0이 아닌 벡터 사이의 유사성을 측정하는 가장 널리 쓰이는 지표 중 하나입니다. 두 점 사이의 거리를 측정하는 유클리드 거리와 달리, 코사인 유사도는 벡터의 방향, 즉 두 벡터 사이 각도의 코사인에만 초점을 맞춥니다. 그래서 크기는 중요하지 않고 방향이 중요할 때 특히 유용하며, 예를 들어 길이가 다른 문서를 비교하거나 활동 수준이 다른 사용자 선호 프로필을 비교할 때 적합합니다.
공식은 간단합니다. cos(θ) = (A · B) / (‖A‖ × ‖B‖)이며, 여기서 A · B는 두 벡터의 내적이고 ‖A‖와 ‖B‖는 각각의 유클리드 크기(노름)입니다. 내적은 대응하는 요소를 곱한 뒤 그 결과를 더해 계산합니다. 벡터의 크기는 각 성분의 제곱합의 제곱근입니다.
결과는 항상 [−1, 1] 범위에 들어갑니다. 코사인 유사도가 1이면 두 벡터가 정확히 같은 방향을 가리키며 완전히 정렬되어 있다는 뜻입니다. 0이면 서로 직교하여 방향상 상관이 없다는 뜻입니다. −1이면 정확히 반대 방향을 가리킨다는 뜻입니다. 실제로는 단어 빈도나 평점 횟수처럼 음이 아닌 특성만 사용하는 경우가 많아, 이런 경우 유사도는 [0, 1]로 제한됩니다.
자연어 처리와 정보 검색에서는 TF-IDF나 bag-of-words 벡터로 표현된 문서를 비교하는 표준 방법으로 코사인 유사도를 사용합니다. 긴 문서는 자연스럽게 벡터 크기가 더 커지기 때문에, 원시 내적 비교는 긴 문서에 불공정하게 유리합니다. 크기의 곱으로 정규화하면 길이 편향을 제거하고 항목의 비율 구성만 보게 됩니다.
추천 시스템은 사용자 선호 벡터를 매칭할 때 코사인 유사도를 사용합니다. 두 사용자가 비슷한 항목을 비슷한 상대적 열의로 평가했다면, 전체적으로 평가한 항목 수가 크게 달라도 코사인 유사도가 높게 나와 취향이 비슷하다는 신호가 됩니다. 같은 원리는 이미지 인식에도 적용되며, 신경망에서 추출한 특징 벡터를 코사인 유사도로 비교해 시각적으로 비슷한 이미지를 찾을 수 있습니다.
이 계산기에서는 두 벡터의 차원 수만 같다면 길이는 얼마든지 입력할 수 있습니다. 값은 쉼표 또는 공백으로 구분하세요. 계산기는 코사인 유사도, 내적, 각 벡터의 크기를 표시해 계산 과정을 단계별로 확인할 수 있게 해줍니다.
코사인 유사도 예시
벡터 유사도의 서로 다른 수준을 보여주는 대표적인 세 가지 사례입니다.
| 벡터 | 유사도 | 해석 |
|---|---|---|
| A = [1, 2, 3], B = [2, 4, 6] | 1.000000 | B는 A의 스칼라 배수입니다(같은 방향). 스케일 계수와 무관하게 코사인 유사도는 1입니다. |
| A = [1, 0, 0], B = [0, 1, 0] | 0.000000 | 표준 기저 벡터는 서로 직교합니다. 내적 = 0이므로 코사인 유사도 = 0입니다. |
| A = [5, 3, 0, 2], B = [4, 2, 1, 3] | 0.947758 | 문서나 사용자 선호 비교에서 흔한 높은 유사도입니다. 대부분의 차원이 겹칩니다. A·B=32, |A|=√38≈6.164, |B|=√30≈5.477. |
| A = [1, 0], B = [-1, 0] | -1.000000 | 정확히 반대 방향을 가리키는 벡터는 코사인 유사도 = −1을 만듭니다. |
코사인 유사도 계산기 사용 방법
- 첫 번째 벡터 (A) 필드에 쉼표 또는 공백으로 구분된 숫자를 입력합니다. 예: 1, 2, 3.
- 두 번째 벡터 (B) 필드에 두 번째 벡터를 입력합니다. 첫 번째 벡터와 같은 개수의 요소를 가져야 합니다.
- 유사도 계산을 클릭합니다. 결과 패널에 코사인 유사도 점수, 내적, 각 벡터의 크기가 표시됩니다.
- 표 아래의 예시 버튼을 사용하면 미리 정의된 벡터 쌍을 즉시 불러와 계산 방식을 볼 수 있습니다.
- 초기화를 클릭하면 모든 필드를 지우고 새 계산을 시작할 수 있습니다.
코사인 유사도 FAQ
코사인 유사도 0.85는 무엇을 의미하나요?
두 벡터 사이의 각도가 약 31.8도라는 뜻으로, 방향 유사도가 높다는 의미입니다. 텍스트 분석에서는 보통 두 문서가 핵심 용어를 상당 부분 공유하고 상대 빈도도 비슷하다는 것을 시사합니다. 대부분의 응용에서 0.7 이상은 대체로 매우 유사한 것으로 봅니다.
텍스트에서 유클리드 거리보다 코사인 유사도가 선호되는 이유는 무엇인가요?
유클리드 거리는 벡터 크기에 민감해서, 같은 주제를 다루는 긴 문서와 짧은 문서라도 긴 쪽의 단어 수가 많다는 이유만으로 크게 달라 보일 수 있습니다. 코사인 유사도는 크기를 정규화하고 각도만 보기 때문에 길이에 상관없이 문서를 비교할 수 있습니다. 이런 길이 불변성이 텍스트 기반 응용에서 코사인 유사도가 널리 쓰이는 가장 큰 이유입니다.
코사인 유사도는 음수가 될 수 있나요?
네, 코사인 유사도는 −1에서 1 사이입니다. 음수 값은 두 벡터 사이의 각도가 90도보다 크다는 뜻으로, 서로 더 멀어지는 방향을 가리킨다는 의미입니다. 단어 수나 평점처럼 음이 아닌 특성만 쓰는 응용에서는 유사도가 [0, 1]에 머물지만, 평균 중심화된 평점이나 감성 점수처럼 부호가 있는 특성에서는 음의 유사도도 의미 있을 수 있습니다.
한 벡터가 모두 0이면 어떻게 되나요?
어느 한쪽이라도 영벡터이면 정규화 단계에서 0으로 나누기가 발생하므로 코사인 유사도는 수학적으로 정의되지 않습니다. 이 계산기는 그런 경우 오류를 표시합니다. 실제로 텍스트 처리에서 영벡터는 문서에 어휘 목록의 단어가 하나도 없다는 뜻인 경우가 많아, 어차피 비교에 별 도움이 되지 않습니다.
벡터는 몇 차원까지 사용할 수 있나요?
이 계산기는 브라우저 성능이 허용하는 범위 내에서 길이 제한 없이 벡터를 지원합니다. 실제 환경에서는 수천 차원이나 수백만 차원(예: 단어 임베딩 공간)을 쓰는 경우도 흔합니다. 차원이 얼마든 수학 공식은 동일합니다. 계산이 유효하려면 두 벡터의 요소 수가 정확히 같아야 합니다.
코사인 유사도는 상관계수와 같은가요?
코사인 유사도와 피어슨 상관계수는 밀접하지만 동일하지는 않습니다. 피어슨 상관계수는 먼저 각 벡터를 평균 중심화(요소 평균을 뺌)한 뒤 중심화된 벡터의 코사인 유사도를 계산합니다. 벡터가 이미 평균 중심화되어 있다면 두 값은 같습니다. 평균 중심화가 없는 원시 특징 벡터에서는 코사인 유사도와 상관계수가 일반적으로 다릅니다.