코사인 유사도는 두 벡터 간의 유사도를 측정하는 방법으로, 두 벡터의 스칼라곱과 크기를 사용하여 계산된다. -1에서 1 사이의 값을 가지며, 1에 가까울수록 유사성이 높고, -1에 가까울수록 반대 방향을 나타낸다. 텍스트 매칭, 정보 검색, 추천 시스템 등 다양한 분야에 활용되며, 소프트 코사인 유사도와 같은 변형된 형태도 존재한다.
더 읽어볼만한 페이지
유사도 척도 - 자카드 지수 자카드 지수는 유한 표본 집합 간의 유사성을 측정하는 지표로, 교집합 크기를 합집합 크기로 나누어 0과 1 사이의 값을 가지며 컴퓨터 과학 등 다양한 분야에서 활용된다.
정보 검색 기술 - 해시태그 해시태그는 2007년 트위터에서 관심 주제를 묶기 위해 제안되어 마이크로블로깅 네트워크에서 널리 사용되기 시작했으며, 다양한 분야에서 활용되고 언어학적 분석의 대상이 되기도 한다.
정보 검색 기술 - 개인화 개인화는 청중의 요구에 맞춰 맞춤형 경험을 제공하는 행위로, 웹사이트, 지도 등 다양한 매체에서 사용자의 특성을 기반으로 하며, 필터 버블과 같은 사회적 영향을 미칠 수 있다.
코사인 유사도
개요
유형
유사성 척도
분야
정보 검색, 텍스트 마이닝
측정 대상
두 벡터 간의 코사인 각도
값 범위
[-1, 1]
유사도 의미
1: 완전한 유사성 0: 무관함 -1: 완전한 반대
정의
수식
cos(θ) = (A · B) / (||A|| ||B||) = ∑AiBi / (√∑Ai² √∑Bi²)
설명
A, B: 비교할 벡터 Ai, Bi: 벡터 A, B의 i번째 요소 ||A||, ||B||: 벡터 A, B의 크기
속성 ''A'', ''B''의 벡터값이 각각 주어졌을 때, 코사인 유사도 ''cos(θ)''는 벡터의 스칼라곱과 크기로 다음과 같이 표현할 수 있다.
:
이렇게 계산된 유사도는 -1에서 1까지의 값을 가지며, -1은 서로 완전히 반대되는 경우, 0은 서로 독립적인 경우, 1은 서로 완전히 같은 경우를 의미한다.
텍스트 매칭에 적용될 경우, ''A'', ''B''의 벡터로는 일반적으로 해당 문서에서의 단어 빈도가 사용된다. 코사인 유사도는 문서들 간의 유사도를 비교할 때 문서의 길이를 정규화하는 방법의 하나라고 볼 수도 있다.
정보 검색의 경우, 문서의 단어 빈도(tf-idf 가중치)가 음의 값이 되는 것이 불가능하므로 두 문서 사이의 코사인 유사도는 0에서 1까지의 값으로 표현되며, 두 단어 빈도 간의 각도는 90°를 넘을 수 없다.
2. 2. 각 유사도
코사인 유사도는 주어진 정의와 동일하게 사용되지만, 다른 계수를 표현하기 위해 사용되기도 한다. 두 벡터 간의 정규화된 각도는 [0,1] 범위의 유사도 함수로 사용될 수 있으며, 벡터 계수가 양수 또는 음수 값을 가질 때 다음과 같이 계산된다.
:
벡터 계수가 항상 양수 값을 갖는 경우, 다음과 같이 계산된다.
:
'코사인 유사도'라는 용어는 이러한 각거리를 위해 사용되지만, 각도 자체를 쉽게 계산하기 위해 각도의 코사인 값으로 잘못 사용되는 경우가 있는데, 이는 부정확하다. 1에서 이 계수를 뺀 값을 거리 함수처럼 사용하는 것은 잘못된 적용이다.[5] 각도가 0이지만 L2 놈이 다른 두 벡터를 통해 쉽게 알 수 있다. 정확한 거리 함수를 적용해도 서로 다른 벡터를 같은 것으로 판단한다. 그러나 벡터 집합 내에서 상대적인 유사도나 거리만이 중요한 측정 대상인 상황에서는 어떤 함수를 적용하더라도 결과의 순서는 동일하다.
정규화된 각도인 '''각도 거리'''는 두 벡터 와 사이의 형식적인 거리 척도이며, 코사인 유사도에서 계산할 수 있다.[5] 각도 거리 척도의 여집합은 0과 1 사이의 '''각도 유사도''' 함수를 정의하는 데 사용될 수 있다.
벡터 요소가 양수 또는 음수일 수 있는 경우:
:
:
벡터 요소가 항상 양수인 경우:
:
:
역코사인() 함수를 계산하는 것은 느리기 때문에, 각도 거리를 사용하는 것은 계산 비용이 더 많이 든다.
2. 3. 코사인 거리
‘코사인 유사도’라는 용어가 각거리를 위해 사용되기도 하지만, 간혹 각도 자체의 계산 편의를 위해 각도의 코사인값으로 잘못 사용되는 경우가 있다. 이는 부정확한 단어 사용이다.[4] 1에서 이 계수를 뺀 값을 거리의 함수처럼 사용하는 것은 완전히 잘못된 적용이다. 각도가 0이지만 L2 놈(norm)은 다른 두 벡터를 통해 이를 확인할 수 있다.
코사인 거리는 제곱 유클리드 거리에 비례하기 때문에 실제 거리 척도가 아니다.[4] 코사인 거리는 삼각 부등식 속성을 나타내지 않으며, 더 공식적으로는 Schwarz 부등식을 나타내지 않고, 일치 공리를 위반한다.
그럼에도 불구하고 '''코사인 거리'''는[4] 제곱근이나 2의 인수 없이 종종 정의된다.
:
3. 성질
코사인 유사도는 개별 벡터 차원의 절대적인 비교가 아닌 상대적인 비교를 반영한다는 주목할 만한 속성이 있다. 임의의 양의 상수 와 벡터 에 대해, 벡터 와 는 최대로 유사하다. 따라서 이 척도는 빈도가 절대 값보다 더 중요한 데이터, 특히 문서의 용어 빈도에 가장 적합하다.[14]
그러나 젠센-섀넌 발산, SED, 그리고 삼각 발산과 같은 정보 이론에 기반한 더 최근의 지표는 적어도 일부 맥락에서 향상된 의미론을 갖는 것으로 나타났다.[14]
3. 1. 중심 코사인 유사도
코사인 유사도는 유클리드 거리와 관련이 있다. 유클리드 거리를 통상적인 로 나타내고, 분극 항등식에 의해 전개하면 다음과 같다.
:
와 가 단위 길이로 정규화되면, 이므로 이 표현식은 다음과 같다.
:
간단히 말해, 코사인 거리는 유클리드 거리로 표현될 수 있다.
:.
유클리드 거리는 "현 거리"라고 불리며 (단위 원 위의 현의 길이이기 때문에) 벡터 내에서 제곱 값의 단위 합으로 정규화된 벡터 간의 유클리드 거리이다.
'''널 분포:''' 음수와 양수 모두를 가질 수 있는 데이터의 경우, 코사인 유사도에 대한 널 분포는 두 개의 독립적인 무작위 단위 벡터의 내적의 분포이다. 이 분포는 평균이 0이고 분산이 (여기서 은 차원의 수)이며, 분포가 -1과 +1 사이에서 경계가 있지만, 이 커짐에 따라 분포는 정규 분포에 의해 점점 더 잘 근사된다.[15][16] 0 또는 1의 값만 가지는 비트 스트림과 같은 다른 유형의 데이터의 경우, 널 분포는 다른 형식을 취하며 0이 아닌 평균을 가질 수 있다.[17]
3. 2. 삼각 부등식
일반적인 삼각 부등식은 각도(즉, 단위 초구의 호 길이)에 대해 다음과 같이 나타낼 수 있다.
:
코사인 함수는 라디안 범위에서 각도가 증가함에 따라 감소하므로, 각 값에 코사인을 취하면 부등식의 방향이 반대로 바뀐다.
:
코사인 덧셈 및 뺄셈 공식을 사용하면 이 두 부등식을 원래 코사인으로 표현할 수 있다.
:
:
이러한 형태의 삼각 부등식은 기준 객체 C에 대한 유사성이 이미 알려진 경우 두 객체 A와 B의 최소 및 최대 유사성을 제한하는 데 사용될 수 있다. 이는 예를 들어 메트릭 데이터 인덱싱에 사용되며, 유클리드 삼각 부등식이 일반 k-평균을 가속화하는 것과 같은 방식으로 구형 k-평균 군집화[18]를 가속화하는 데에도 사용되었다.
4. 응용
코사인 유사도는 다양한 분야에서 활용된다. 생물학 분야에서는 오쓰카 야노스케(Otsuka, Ootsuka, Otuka라고도 표기)(大塚 弥之助|오쓰카 야노스케일본어)[6][7]와 오치아이 아키라(落合 明|오치아이 아키라일본어)[8]의 이름을 딴 오쓰카-오치아이 계수가 유사한 개념으로 사용된다.[9][10]
4. 1. 생물학
생물학에서, 오쓰카 야노스케(Otsuka, Ootsuka, Otuka라고도 표기) (大塚 弥之助|오쓰카 야노스케일본어)[6][7]와 오치아이 아키라(落合 明|오치아이 아키라일본어)[8]의 이름을 딴 오쓰카-오치아이 계수라는 유사한 개념이 있으며, 이는 오치아이-바크만[9] 또는 오치아이 계수라고도 한다.[10] 이 계수는 다음과 같이 나타낼 수 있다.