코사인 유사도 문서 원본 보기
←
코사인 유사도
둘러보기로 이동
검색으로 이동
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
{{위키데이터 속성 추적}} '''코사인 유사도'''(― 類似度, {{llang|en|cosine similarity}})는 [[내적공간]]의 두 [[벡터]]간 각도의 [[코사인]]값을 이용하여 측정된 벡터간의 유사한 정도를 의미한다. 각도가 0°일 때의 코사인값은 1이며, 다른 모든 각도의 코사인값은 1보다 작다. 따라서 이 값은 벡터의 크기가 아닌 방향의 유사도를 판단하는 목적으로 사용되며, 두 벡터의 방향이 완전히 같을 경우 1, 90°의 각을 이룰 경우 0, 180°로 완전히 반대 방향인 경우 -1의 값을 갖는다. 이 때 벡터의 크기는 값에 아무런 영향을 미치지 않는다. 코사인 유사도는 특히 결과값이 [0,1]의 범위로 떨어지는 수 공간에서 사용된다. 코사인 유사도는 어떤 개수의 차원에도 적용이 가능하여 흔히 다차원의 양수 공간에서의 유사도 측정에 자주 이용된다. 예를 들어 [[정보 검색]] 및 [[텍스트 마이닝]] 분야에서, 단어 하나 하나는 각각의 차원을 구성하고 문서는 각 단어가 문서에 나타나는 회수로 표현되는 벡터값을 가진다. 이러한 다차원 공간에서 코사인 유사도는 두 문서의 유사를 측정하는 매우 유용한 방법이다.<ref>{{언어링크|en}} Singhal, Amit (2001). "Modern Information Retrieval: A Brief Overview". Bulletin of the IEEE Computer Society Technical Committee on Data Engineering 24 (4): 35–43.</ref> 코사인 유사도는 [[데이터 마이닝]] 분야에서 [[클러스터]]들간의 응집도를 측정하는 방법으로도 사용된다.<ref>{{언어링크|en}} P.-N. Tan, M. Steinbach & V. Kumar, "Introduction to Data Mining", , Addison-Wesley (2005), {{ISBN|0-321-32136-7}}, chapter 8; page 500.</ref> ''코사인 거리''(cosine distance)라는 개념이 대신 사용되기도 하는데, 이는 <math>D_C(A,B) = 1 - S_C(A,B)</math>으로 표현된다. 단, 코사인 거리는 삼각부등식의 성질을 갖고 있지 않으며 코사인 공리도 만족하지 않기 때문에 정확한 거리 함수로 사용할 수는 없다. 순서를 유지하면서 삼각부등식 성질을 만족시키기 위해서는 [[각거리]]를 이용해야 한다.(정의 항목 참조) 코사인 유사도가 널리 사용되는 이유 중 하나는 이것이 양수 공간이라는 조건만 만족하면 얼마나 많은 차원 공간에서든지 거리를 측정하는 것이 가능하기 때문이다. ==정의== 두 벡터의 코사인값은 유클리디안 [[스칼라곱]] 공식에서 유도할 수 있다. :<math>\mathbf{a}\cdot\mathbf{b} =\left\|\mathbf{a}\right\|\left\|\mathbf{b}\right\|\cos\theta</math> 속성 ''A'', ''B''의 벡터값이 각각 주어졌을 때, 코사인 유사도 ''cos(θ)''는 벡터의 스칼라곱과 크기로 다음과 같이 표현할 수 있다. :<math>\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}} }</math> 이렇게 계산된 유사도는 −1에서 1까지의 값을 가지며, −1은 서로 완전히 반대되는 경우, 0은 서로 독립적인 경우, 1은 서로 완전히 같은 경우를 의미한다. 텍스트 매칭에 적용될 경우, ''A'', ''B''의 벡터로는 일반적으로 해당 문서에서의 [[tf-idf|단어 빈도]]가 사용된다. 코사인 유사도는 문서들간의 유사도를 비교할 때 문서의 길이를 [[정규화]]하는 방법의 하나라고 볼 수도 있다. [[정보 검색]]의 경우, 문서의 단어 빈도([[tf-idf]] 가중치)가 음의 값이 되는 것이 불가능하므로 두 문서 사이의 코사인 유사도는 0에서 1까지의 값으로 표현되며, 두 단어 빈도간의 각도는 90°를 넘을 수 없다. === 각 유사도 === 코사인 유사도의 주된 용례는 위에서 정의한 내용과 같지만, 때로는 서로 다른 계수를 표현하기 위한 용도로 사용되기도 한다. 동일한 유사도 계산 방법을 이용해서, 두 벡터간의 정규화된 각도가 [0,1] 범위의 유사도 함수로서 사용되어 벡터 계수가 양 또는 음의 값을 갖는 영역에서는 다음과 같이 계산된다. :<math>1 - \left ( \frac{ \cos^{-1}( \text{similarity} )}{ \pi} \right )</math> 또, 벡터 계수가 항상 양의 값을 갖는 영역에서는 다음과 같이 계산된다. :<math>1 - \left ( \frac{ 2 \cdot \cos^{-1}( \text{similarity} ) }{ \pi } \right)</math> ‘코사인 유사도’라는 용어는 이러한 [[각거리]]를 위해 사용되지만, 간혹 각도 자체의 계산 편의를 위한 목적에서 각도의 코사인값으로 잘못 사용되는 경우가 있는데, 이는 부정확한 단어 사용에 해당한다. 1에서 이 계수를 뺀 값을 거리의 함수처럼 사용하는 것은 완전히 잘못된 적용인데, 이는 각도가 0이지만 [[노름|L2 놈]](norm)은 다른 두 벡터를 생각해보면 쉽게 알 수 있다. 정확한 거리 함수를 적용해도 서로 다른 이 두 벡터가 같은 것처럼 판단하게 될 것이다. 그러나 대부분의 경우 이것은 중요한 속성은 아니다. 벡터 집합 내에서의 상대적인 유사도나 거리만이 중요한 측정 대상인 상황에서는 어떤 함수를 적용하더라도 결과의 순서는 동일하기 때문이다. == 속성 == 코사인 유사도는 다음과 같이 [[유클리드 거리]]와 관계가 있다. 유클리드 거리를 |''A'' - ''B''|로 나타냈을 때, 다항식을 [[다항식 전개|전개]]하여 다음과 같은 식이 성립한다. :<math>|A - B|^2 = (A - B)^\top (A - B) = |A|^2 + |B|^2 - 2 A^\top B</math> ''A''와 ''B''가 단위 거리에 대해 정규화되었을 때, |''A''| = |''B''| = 1이며 따라서 위의 식은 다음의 식과 동일하다. :<math>2 (1 - \cos(A, B))</math> == 같이 보기 == * [[해밍 거리]] * [[상관분석|상관성]] * [[유사도 학습]] == 각주 == {{각주}} == 외부 링크 == * {{언어링크|en}} [https://web.archive.org/web/20131204130641/http://www.appliedsoftwaredesign.com/archives/cosine-similarity-calculator/ 온라인 코사인 유사도 계산기] * {{언어링크|en}} [http://mathforum.org/kb/message.jspa?messageID=5658016&tstart=0 코사인 측정] * {{언어링크|en}} [https://web.archive.org/web/20140310202211/http://pyevolve.sourceforge.net/wordpress/?p=2497 파이썬을 이용한 코사인 유사도 튜토리얼] [[분류:정보 검색 기술]] [[분류:유사도 척도]]
이 문서에서 사용한 틀:
틀:ISBN
(
원본 보기
)
틀:Llang
(
원본 보기
)
틀:각주
(
원본 보기
)
틀:언어링크
(
원본 보기
)
틀:위키데이터 속성 추적
(
원본 보기
)
코사인 유사도
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
한국어
보기
읽기
원본 보기
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보