코사인 유사성 대 유클리드 거리 (LSA)에 대한 K- 평균


10

낮은 차원 공간에서 문서 모음을 나타 내기 위해 잠재 의미 분석을 사용하고 있습니다. k- 평균을 사용하여 이러한 문서를 두 그룹으로 묶고 싶습니다.

몇 년 전, 나는 파이썬의 gensim을 사용하여 내 k- 평균 알고리즘을 작성 하여이 작업을 수행했습니다. 유클리드 거리를 사용하여 군집 중심을 결정한 다음 중심과 코사인 유사성을 기반으로 각 문서를 군집화했습니다. 꽤 잘 작동하는 것 같습니다.

이제 훨씬 더 큰 문서 모음 에서이 작업을 수행하려고합니다. K- 평균은 수렴하지 않으며 내 코드의 버그인지 궁금합니다. k-means는 유클리드 거리에서만 작동하기 때문에 코사인 유사성을 사용하여 군집화 해서는 안된다는 최근 기사를 읽었습니다 . 그럼에도 불구하고 언급 한 것처럼 작은 테스트 사례에서는 제대로 작동하는 것으로 보입니다.

이제 LSA Wikipedia 페이지 에서이 문제를 발견했습니다 .

코사인과 같은 유사성 측정법을 사용하는 k- 평균과 같은 전통적인 클러스터링 알고리즘을 사용하여 문서 및 항 벡터 표현을 군집화 할 수 있습니다.

그래서 어느 것입니까? 코사인 유사성을 사용할 수 있습니까?


이 주제는 실제로이 사이트에 오랫동안 남아 있습니다. 최근 질문 : stats.stackexchange.com/q/120085/3277 (추가 링크 참조). 무엇 지독하다 흥미로운 것은 당신이 코사인을 처리하는 K-수단을 구현하는 방법이다. 질문에 알고리즘을 설명하면 사람들이 알고리즘에 응답하는 데 도움이됩니다.
ttnphns 2009 년

@ttnphns 실제로 유클리드 거리 (각 차원의 평균)를 사용하여 군집 중심을 생성했습니다. 그러나 나는 유클리드 거리가 아닌 코사인 유사성에 따라 각 문서를 클러스터에 할당했습니다.
Jeff

I then assigned each document to a cluster based on cosine similarity-문서와 중심 사이의 코사인? 그리고 모든 문서가 할당 된 후에는 공간의 문서 좌표가 알려져 있기 때문에 일반적인 (유클리드) 방식으로 중심을 업데이트합니다. 그렇습니까?
ttnphns

1
데이터 세트의 각 문서에 대한 제곱 값의 합이 동일한 경우에만 접근 방식이 작동하고 항상 수렴됩니다. 왜냐하면 이 경우 (즉, 모든 각각 동일 길이 S)의 무게 중심과 문서는 무게 중심 사이의 코사인 및 문서 사이의 유클리드 거리와 엄격 monotonical 것이다. 그러나 할당에 코사인을 사용할 필요가 없으며 유클리드 거리를 기반으로 표준 k- 평균 알고리즘의 할당을 사용할 수 있습니다. h
ttnphns

1
내가 생각하기 시작한 것은 우주가 아닌 구에서 수행되는 k- 평균을 찾고 있다는 것입니다. 각도 k는 의미합니다. 나는 그것이 가능하다고 생각하지만 결코 읽거나 사용하지 않았습니다.
ttnphns

답변:


4

예, 사용할 수 있습니다. 문제는 코사인 유사성이 거리가 아니기 때문에 유사성이라고하는 이유입니다. 그럼에도 불구하고 여기 설명 된대로 거리로 변환 할 수 있습니다 .

실제로, 당신은 어떤 거리를 사용할 수 있습니다. 고차원 공간에서 거리 함수의 속성에 대한 아주 좋은 연구는 (일반적으로 정보 검색에서와 같이) 고차원 공간에서 거리 메트릭의 놀라운 동작에 관한 것 입니다. 그러나 유클리드 대 코사인을 비교하지는 않습니다.

나는이 연구를 통해 높은 차원의 공간에서 두 거리가 비슷하게 행동하는 경향이 있다고 주장했다.


1
이 답변은 방법 을 설명하면 좋을 것 Yes, you can use it입니다. (내 대답 과 비슷한 코사인을 유클리드 거리로 변환하는 아이디어 입니까?)
ttnphns

k- 평균에 대한 나의 이해가 다릅니다. 반드시 유클리드 거리 ( stat.uni-muenchen.de/~leisch/papers/Leisch-2006.pdf )로 제한되지는 않습니다 . 또한 두 번째 참조 또는이 R 패키지 ( cran.r-project.org/web/packages/cclust/cclust.pdf )를 참조하십시오 . wikipedia 사이트와 같은 의미였습니다. 거리 기능 만 있으면됩니다. 그것들을 "각도 유사성"이라고합니다.
jpmuc

1
아마도 (그리고 종이를 공유해 주셔서 감사합니다!). 그러나 유클리드 공간에서 중심을 산술 평균으로 정의하지 않는다는 점에서 k- 평균과 다른 k- 평균의 모든 "변형"을 k- 평균 이라고 부를 수 없습니다 .
ttnphns

1

유클리드 거리는 문서 또는 문서 클러스터를 비교하는 데 적합하지 않습니다. 문서를 비교할 때 중요한 문제 중 하나는 문서 길이 별 정규화입니다. 코사인 유사성은 이러한 종류의 정규화를 달성하지만 유클리드 거리는 그렇지 않습니다. 또한 문서는 종종 다항식 확률 분포 (소위 단어 모음)로 모델링됩니다. 코사인 유사성은 유사성을위한 통계적으로 정당화 된 방법 인 JS- 분산에 대한 근사치입니다. 문서와 코사인의 중요한 문제 중 하나는 카운트에 적절한 tf-idf 정규화를 적용해야한다는 것입니다. gensim을 사용하여 LSA 표현을 도출하는 경우 gensim은 이미 그렇게합니다.

2 개의 클러스터 사용 사례에 대한 또 다른 유용한 관찰은 LSA가 SVD 일 뿐이므로 비 랜덤 초기화를 잘 수행 할 수 있다는 것입니다. 다음과 같은 방법으로 수행하십시오.

  • 각 문서의 첫 번째 구성 요소 만 취하십시오 (첫 번째 구성 요소가 최상위 특이 벡터라고 가정).
  • 각 값의 문서 ID를 추적하여 해당 값을 정렬하십시오.
  • 클러스터 1 = 상위에 해당하는 문서 ID (예 : 1000 개 이상의 값)
  • 클러스터 2 = 하단에 해당하는 문서 ID, 예 : 1000 (또는 그 이상) 값
  • 각 클러스터의 벡터를 평균화하고 벡터 길이로 정규화하면됩니다.
  • 이제이 초기화에 k- 평균을 적용하십시오. 즉, (1) 가장 가까운 현재 중심에 문서를 할당하고 (2) 재 할당 후 새로운 중심을 평균화하고 정규화하는 것을 의미합니다.

1

예, 벡터 평균에 의한 동일한 중심 업데이트가 작동합니다.

이 백서 의 섹션 2.2에서 m = 1 사례를 참조하십시오 . w는 가중치이며 기본 k- 평균 알고리즘의 가중치는 모두 1입니다.

이 논문은 Cauchy-Schwartz 불평등의 특성을 사용하여 k- 평균의 비용 함수를 최소화하는 조건을 설정합니다.

또한 코사인 유사성은 벡터 거리가 아니라는 것을 기억하십시오. 코사인 불일치 입니다. (이것은 좋은 검색어 여야합니다.) 따라서 파티션을 업데이트 할 때 arg max와는 반대로 찾고 arg min있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.