맨위로가기

코사인 유사도

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

코사인 유사도는 두 벡터 간의 유사도를 측정하는 방법으로, 두 벡터의 스칼라곱과 크기를 사용하여 계산된다. -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의 크기
정규화코사인 유사도는 벡터의 크기가 아닌 방향을 고려하여 정규화된 유사도를 제공함
특징
장점텍스트 문서의 유사성 비교에 효과적임
단점벡터의 크기를 무시하므로, 크기 정보가 중요한 경우 적합하지 않음
활용
정보 검색문서 간 유사도 측정, 검색 결과 순위 결정
텍스트 마이닝텍스트 분류, 클러스터링
추천 시스템사용자 간 유사도 측정, 아이템 추천
생물정보학유전자 발현 패턴 분석
변형
조정된 코사인 유사도사용자 평점의 평균을 고려하여 편향을 조정
참고 자료
참고 문헌Introduction to Information Retrieval (Manning, Raghavan, Schütze)
웹사이트cosine_similarity: Function for calculating the cosine similarity

2. 정의

두 벡터 간의 코사인 값은 스칼라곱 공식으로부터 유도할 수 있다.

:\mathbf{A}\cdot\mathbf{B}

=\left\|\mathbf{A}\right\|\left\|\mathbf{B}\right\|\cos\theta

n차원 벡터 '''A'''와 '''B'''가 주어졌을 때, 코사인 유사도 ''SC(A, B)''는 내적과 크기를 사용하여 다음과 같이 나타낼 수 있다.

:\text{코사인 유사도} =S_C (A,B):= \cos(\theta) = {\mathbf{A} \cdot \mathbf{B} \over \|\mathbf{A}\| \|\mathbf{B}\|} = \frac{ \sum\limits_{i=1}^{n}{A_i B_i} }{ \sqrt{\sum\limits_{i=1}^{n}{A_i^2}} \cdot \sqrt{\sum\limits_{i=1}^{n}{B_i^2}} },

여기서 A_iB_i는 각각 벡터 \mathbf{A}\mathbf{B}i번째 성분이다.

결과로 나타나는 유사도는 -1에서 1까지의 값을 가지며, -1은 완전히 반대되는 경우, 0은 직교성 또는 비상관성을 나타내고, 1은 완전히 같은 경우를 의미한다. 그 사이의 값은 유사성이나 비유사성의 정도를 나타낸다.

속성 벡터를 벡터 평균으로 빼서 정규화하면(예: A - \bar{A}), 이 척도는 중심 코사인 유사도라고 부르며 피어슨 상관 계수와 동일하다. 중심화의 예시는 다음과 같다.

:

\text{if}\, A = [A_1, A_2]^T, \text{ then } \bar{A} = \left[\frac{(A_1+A_2)}{2},\frac{(A_1+A_2)}{2}\right]^T,



:

\text{ so } A-\bar{A}= \left[\frac{(A_1-A_2)}{2},\frac{(-A_1+A_2)}{2}\right]^T.


2. 1. 수학적 정의

두 벡터의 코사인 값은 스칼라곱 공식에서 유도할 수 있다.

:\mathbf{a}\cdot\mathbf{b}

=\left\|\mathbf{a}\right\|\left\|\mathbf{b}\right\|\cos\theta

속성 ''A'', ''B''의 벡터값이 각각 주어졌을 때, 코사인 유사도 ''cos(θ)''는 벡터의 스칼라곱과 크기로 다음과 같이 표현할 수 있다.

:\text{similarity} = \cos(\theta) = {A \cdot B \over \|A\| \|B\|} = \frac{ \sum\limits_{i=1}^{n}{A_i \times B_i} }{ \sqrt{\sum\limits_{i=1}^{n}{(A_i)^2}} \times \sqrt{\sum\limits_{i=1}^{n}{(B_i)^2}} }

이렇게 계산된 유사도는 -1에서 1까지의 값을 가지며, -1은 서로 완전히 반대되는 경우, 0은 서로 독립적인 경우, 1은 서로 완전히 같은 경우를 의미한다.

텍스트 매칭에 적용될 경우, ''A'', ''B''의 벡터로는 일반적으로 해당 문서에서의 단어 빈도가 사용된다. 코사인 유사도는 문서들 간의 유사도를 비교할 때 문서의 길이를 정규화하는 방법의 하나라고 볼 수도 있다.

정보 검색의 경우, 문서의 단어 빈도(tf-idf 가중치)가 음의 값이 되는 것이 불가능하므로 두 문서 사이의 코사인 유사도는 0에서 1까지의 값으로 표현되며, 두 단어 빈도 간의 각도는 90°를 넘을 수 없다.

2. 2. 각 유사도

코사인 유사도는 주어진 정의와 동일하게 사용되지만, 다른 계수를 표현하기 위해 사용되기도 한다. 두 벡터 간의 정규화된 각도는 [0,1] 범위의 유사도 함수로 사용될 수 있으며, 벡터 계수가 양수 또는 음수 값을 가질 때 다음과 같이 계산된다.

:1 - \left ( \frac{ \cos^{-1}( \text{similarity} )}{ \pi} \right )

벡터 계수가 항상 양수 값을 갖는 경우, 다음과 같이 계산된다.

:1 - \left ( \frac{ 2 \cdot \cos^{-1}( \text{similarity} ) }{ \pi } \right)

'코사인 유사도'라는 용어는 이러한 각거리를 위해 사용되지만, 각도 자체를 쉽게 계산하기 위해 각도의 코사인 값으로 잘못 사용되는 경우가 있는데, 이는 부정확하다. 1에서 이 계수를 뺀 값을 거리 함수처럼 사용하는 것은 잘못된 적용이다.[5] 각도가 0이지만 L2 놈이 다른 두 벡터를 통해 쉽게 알 수 있다. 정확한 거리 함수를 적용해도 서로 다른 벡터를 같은 것으로 판단한다. 그러나 벡터 집합 내에서 상대적인 유사도나 거리만이 중요한 측정 대상인 상황에서는 어떤 함수를 적용하더라도 결과의 순서는 동일하다.

정규화된 각도인 '''각도 거리'''는 두 벡터 AB 사이의 형식적인 거리 척도이며, 코사인 유사도에서 계산할 수 있다.[5] 각도 거리 척도의 여집합은 0과 1 사이의 '''각도 유사도''' 함수를 정의하는 데 사용될 수 있다.

벡터 요소가 양수 또는 음수일 수 있는 경우:

:\text{각도 거리} = D_{\theta} := \frac{ \arccos( \text{코사인 유사도} ) }{ \pi } = \frac{\theta}{\pi}

:\text{각도 유사도} = S_{\theta} := 1 - \text{각도 거리} = 1 - \frac{\theta}{\pi}

벡터 요소가 항상 양수인 경우:

:\text{각도 거리} = D_{\theta} := \frac{ 2 \cdot \arccos( \text{코사인 유사도} ) }{ \pi } = \frac{2\theta}{\pi}

:\text{각도 유사도} = S_{\theta} := 1 - \text{각도 거리} = 1 - \frac{2\theta}{\pi}

역코사인() 함수를 계산하는 것은 느리기 때문에, 각도 거리를 사용하는 것은 계산 비용이 더 많이 든다.

2. 3. 코사인 거리

‘코사인 유사도’라는 용어가 각거리를 위해 사용되기도 하지만, 간혹 각도 자체의 계산 편의를 위해 각도의 코사인값으로 잘못 사용되는 경우가 있다. 이는 부정확한 단어 사용이다.[4] 1에서 이 계수를 뺀 값을 거리의 함수처럼 사용하는 것은 완전히 잘못된 적용이다. 각도가 0이지만 L2 놈(norm)은 다른 두 벡터를 통해 이를 확인할 수 있다.

코사인 거리는 제곱 유클리드 거리에 비례하기 때문에 실제 거리 척도가 아니다.[4] 코사인 거리는 삼각 부등식 속성을 나타내지 않으며, 더 공식적으로는 Schwarz 부등식을 나타내지 않고, 일치 공리를 위반한다.

그럼에도 불구하고 '''코사인 거리'''는[4] 제곱근이나 2의 인수 없이 종종 정의된다.

: \text{cosine distance} = D_C(A,B) := 1 - S_C(A,B)\,.

3. 성질

코사인 유사도는 개별 벡터 차원의 절대적인 비교가 아닌 상대적인 비교를 반영한다는 주목할 만한 속성이 있다. 임의의 양의 상수 a와 벡터 V에 대해, 벡터 VaV는 최대로 유사하다. 따라서 이 척도는 빈도가 절대 값보다 더 중요한 데이터, 특히 문서의 용어 빈도에 가장 적합하다.[14]

그러나 젠센-섀넌 발산, SED, 그리고 삼각 발산과 같은 정보 이론에 기반한 더 최근의 지표는 적어도 일부 맥락에서 향상된 의미론을 갖는 것으로 나타났다.[14]

3. 1. 중심 코사인 유사도

코사인 유사도는 유클리드 거리와 관련이 있다. 유클리드 거리를 통상적인 \|A - B\|로 나타내고, 분극 항등식에 의해 전개하면 다음과 같다.

:\|A - B\|^2 = (A - B) \cdot (A - B) = \|A\|^2 + \|B\|^2 - 2 (A \cdot B)\

AB가 단위 길이로 정규화되면, \|A\|^2 = \|B\|^2 = 1이므로 이 표현식은 다음과 같다.

:2 (1 - \cos(A, B)).

간단히 말해, 코사인 거리는 유클리드 거리로 표현될 수 있다.

:D_C(A, B) = \frac{\|A - B\|^2}{2}\quad\mathrm{when}\quad\|A\|^2 = \|B\|^2 = 1.

유클리드 거리는 "현 거리"라고 불리며 (단위 원 위의 현의 길이이기 때문에) 벡터 내에서 제곱 값의 단위 합으로 정규화된 벡터 간의 유클리드 거리이다.

'''널 분포:''' 음수와 양수 모두를 가질 수 있는 데이터의 경우, 코사인 유사도에 대한 널 분포는 두 개의 독립적인 무작위 단위 벡터의 내적의 분포이다. 이 분포는 평균이 0이고 분산1/n (여기서 n은 차원의 수)이며, 분포가 -1과 +1 사이에서 경계가 있지만, n이 커짐에 따라 분포는 정규 분포에 의해 점점 더 잘 근사된다.[15][16] 0 또는 1의 값만 가지는 비트 스트림과 같은 다른 유형의 데이터의 경우, 널 분포는 다른 형식을 취하며 0이 아닌 평균을 가질 수 있다.[17]

3. 2. 삼각 부등식

일반적인 삼각 부등식은 각도(즉, 단위 초구의 호 길이)에 대해 다음과 같이 나타낼 수 있다.

:|~\angle{AC} - \angle{CB}~| \le ~\angle{AB}~ \le ~\angle{AC}~ + ~\angle{CB}~.

코사인 함수는 라디안 범위에서 각도가 증가함에 따라 감소하므로, 각 값에 코사인을 취하면 부등식의 방향이 반대로 바뀐다.

:\cos(\angle{AC} - \angle{CB}) \ge \cos(\angle{AB}) \ge \cos(\angle{AC} + \angle{CB}).

코사인 덧셈 및 뺄셈 공식을 사용하면 이 두 부등식을 원래 코사인으로 표현할 수 있다.

:\cos(A,C) \cdot \cos(C,B) + \sqrt{\left(1-\cos(A,C)^2\right)\cdot\left(1-\cos(C,B)^2\right)} \geq \cos(A,B),

:\cos(A,B) \geq \cos(A,C) \cdot \cos(C,B) - \sqrt{\left(1-\cos(A,C)^2\right)\cdot\left(1-\cos(C,B)^2\right)}.

이러한 형태의 삼각 부등식은 기준 객체 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] 이 계수는 다음과 같이 나타낼 수 있다.

:K =\frac

{\sqrt

}

여기서, AB는 집합이며, |A|A의 원소 개수를 의미한다. 집합이 비트 벡터로 표현되는 경우, 오쓰카-오치아이 계수는 코사인 유사도와 동일하다는 것을 알 수 있다. 이는 고드프리 톰슨이 도입한 점수와 동일하다.[11]

최근 한 저서[12]에서는 이 계수가 오쓰카라는 성을 가진 다른 일본인 연구자에게 잘못 귀속되었다고 한다. 이러한 혼란은 1957년 오치아이 아키라가 오쓰카(이름 언급 없음)에게만 이 계수를 귀속시키면서, 하마이 이쿠소(浜井 生三|하마이 이쿠소일본어)[13]의 논문을 인용했고, 하마이 이쿠소는 다시 오쓰카 야노스케의 1936년 원본 논문을 인용했기 때문에 발생했다.[7]

5. 소프트 코사인 유사도

두 벡터 간의 소프트 코사인 또는 ("소프트" 유사성)은 특징 쌍 간의 유사성을 고려한다.[19] 전통적인 코사인 유사도는 벡터 공간 모델 (VSM) 특징을 독립적이거나 완전히 다른 것으로 간주하는 반면, 소프트 코사인 측정은 VSM에서 특징의 유사성을 고려하는 것을 제안하며, 이는 코사인(및 소프트 코사인)의 개념과 (소프트) 유사성의 아이디어를 일반화하는 데 도움이 된다.

예를 들어, 자연어 처리 (NLP) 분야에서 특징 간의 유사성은 매우 직관적이다. 단어, ''n''-그램, 또는 구문 ''n''-그램[20]과 같은 특징은 공식적으로 VSM에서 다른 특징으로 간주되지만, 매우 유사할 수 있다. 예를 들어, "play"와 "game"이라는 단어는 서로 다른 단어이므로 VSM에서 다른 점에 매핑되지만 의미론적으로 관련되어 있다. ''n''-그램 또는 구문 ''n''-그램의 경우 레벤슈타인 거리를 적용할 수 있다 (사실, 레벤슈타인 거리는 단어에도 적용할 수 있다).

소프트 코사인을 계산하기 위해 행렬 '''s'''는 특징 간의 유사성을 나타내는 데 사용된다. 이는 레벤슈타인 거리, WordNet 유사성 또는 다른 유사도 측정을 통해 계산할 수 있다. 그런 다음 이 행렬을 곱하기만 하면 된다.

두 개의 ''N''-차원 벡터 a와 b가 주어지면 소프트 코사인 유사성은 다음과 같이 계산된다.

:\begin{align}

\operatorname{soft\_cosine}_1(a,b)=

\frac{\sum\nolimits_{i,j}^N s_{ij}a_ib_j}{\sqrt{\sum\nolimits_{i,j}^N s_{ij}a_ia_j}\sqrt{\sum\nolimits_{i,j}^N s_{ij}b_ib_j}},

\end{align}



여기서 ''sij'' = similarity(feature''i'', feature''j'').

특징 간에 유사성이 없는 경우 (''sii'' = 1, ''sij'' = 0 for ''i'' ≠ ''j''), 주어진 방정식은 기존의 코사인 유사성 공식과 동일하다.

이 측정의 시간 복잡도는 이차식이므로 실제 작업에 적용할 수 있다. 복잡성을 차수 미만으로 줄일 수 있다.[21] 이러한 소프트 코사인 유사성의 효율적인 구현은 Gensim 오픈 소스 라이브러리에 포함되어 있다.

참조

[1] 논문 "Modern Information Retrieval: A Brief Overview" http://singhal.info/[...]
[2] 서적 Introduction to Data Mining Addison-Wesley
[3] 웹사이트 cosine_similarity: Function for calculating the cosine similarity https://rdrr.io/bioc[...] 2024-11-18
[4] 웹사이트 CosineDistance – Wolfram Language & System Documentation Center https://reference.wo[...]
[5] 웹사이트 COSINE DISTANCE, COSINE SIMILARITY, ANGULAR COSINE DISTANCE, ANGULAR COSINE SIMILARITY https://www.itl.nist[...] 2020-07-11
[6] 논문 Geological idea of Yanosuke Otuka, who built the foundation of neotectonics (geoscientist) https://www.jstage.j[...]
[7] 논문 The faunal character of the Japanese Pleistocene marine Mollusca, as evidence of the climate having become colder during the Pleistocene in Japan
[8] 논문 Zoogeographical studies on the soleoid fishes found in Japan and its neighhouring regions-II https://www.jstage.j[...]
[9] 서적 Phytosociology and Ecology of Cryptogamic Epiphytes: Including a Taxonomic Survey and Description of Their Vegetation Units in Europe Van Gorcum
[10] 서적 Cluster Analysis for Researchers https://books.google[...] Lifetime Learning Publications
[11] 논문 A hierarchy without a general factor https://scholar.arch[...]
[12] 서적 Dictionary of Mathematical Geosciences: With Historical Notes https://books.google[...] Springer
[13] 논문 Stratification of community by means of "community coefficient" (continued) https://www.jstage.j[...]
[14] 간행물 A Tale of Four Metrics https://link.springe[...] Springer 2016
[15] 논문 Asymptotic distribution of coordinates on high dimensional spheres
[16] 웹사이트 Distribution of dot products between two random unit vectors in RD https://stats.stacke[...]
[17] 논문 The Statistical Properties of Random Bitstreams and the Sampling Distribution of Cosine Similarity
[18] 논문 Accelerating Spherical k-Means https://link.springe[...] Springer International Publishing 2021
[19] 논문 Soft Similarity and Soft Cosine Measure: Similarity of Features in Vector Space Model http://cys.cic.ipn.m[...] 2014-09-29
[20] 서적 Advances in Computational Intelligence LNAI 7630
[21] 간행물 Implementation Notes for the Soft Cosine Measure Association for Computing Machinery 2018
[22] 논문 Modern Information Retrieval: A Brief Overview
[23] 서적 Introduction to Data Mining Addison-Wesley



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com