10

클러스터하고 싶은 큰 데이터 세트가 있습니다. 시험판 실행 크기는 2,500 개입니다. '실제 계약'을 실행하면 최소한 20,000 개의 개체를 처리해야합니다.코사인 유사성으로 클러스터링

이 오브젝트들은 그들 사이에 코사인 유사성을가집니다. 이 코사인 유사성은 수학적 거리 메트릭의 요구 사항을 충족시키지 못합니다. 그것은 삼각형 부등식을 만족시키지 못한다.

저는 예상했던 클러스터의 수를 미리 지정하지 않아도 비슷한 객체를 모으는 "자연스러운"방법으로 클러스터하고 싶습니다.

누구든지 알고리즘을 알고 있습니까? 실제로, 나는 a) 거리 메트릭과 b) 미리 지정된 클러스터 수를 요구하지 않는 알고리즘을 찾고있다.

감사합니다.

이 질문은 여기 전에 물어되었습니다 Clustering from the cosine similarity values 여기 (하지만이 솔루션은 클러스터링을 K가-의미합니다), 그리고 : Effective clustering of a similarity matrix (그러나이 솔루션은 다소 애매)

+4

출처 http://en.wikipedia.org/wiki/Cosine_similarity "이 코리네 거리에"코사인 유사도 "라는 용어가 사용되었지만 각도의 코사인 값이 각도 자체를 계산하기위한 편리한 메커니즘이며 의미의 일부가 아닙니다.각도 상사 성 계수의 장점은 차이 계수 (1에서 빼기) * 결과 함수가 적절한 거리 메트릭 *이 될 때 첫 번째 의미의 경우와 다르다는 것입니다. " – phs

+0

감사합니다! 불행히도 저는 더 구체적이어야합니다. 나는 자신을 정의한 코사인 유사성을 사용하고 있습니다. 삼각형 불평등을 만족시키지 못합니다. – user1473883

답변

3

아파치 코끼리 조련사가 번호를 가지고 N을 지정하지 않아도되고 거리 메트릭을 지정할 수있는 알고리즘을 포함하여 클러스터링 알고리즘을 구현할 수 있습니다.

평균 이동 클러스터링은 k- 평균과 비슷하지만 미리 지정된 클러스터 수가없는 https://cwiki.apache.org/confluence/display/MAHOUT/Mean+Shift+Clustering입니다.

더 일반적으로 다양한 알고리즘을 시험해보고 싶다면 R에 사용할 수있는 정교한 패키지가 절대적으로 풍부합니다 (최상의 클러스터 수를 선택할 수있는 몇 가지 변형 된 베이지안 구현 포함). 과거에 저의 연구에 매우 유용했습니다. http://cran.r-project.org/web/views/Cluster.html.

2

실제로 "거리 함수"가 필요한 대부분의 알고리즘에는 메트릭이 필요하지 않습니다.

DBSCAN은 거리에서 추상화 된 버전으로 일반화 (위키 백과 참조) 할 수 있습니다. 단지 "고밀도"개념 만 있으면됩니다. (DBSCAN은 미리 클러스터 수를 알아야 할 필요가 없습니다.) 심지어 거리에 대해 엄격한 요구 사항을 지닌 k-means의 경우에도 구형 k-means라는 변형이 있습니다.

어쨌든 데이터베이스 컨텍스트에서 "메트릭"의 전체 요구 사항은 유익합니다. 실제 데이터에서 동일한 좌표를 갖는 두 개의 레코드가있을 수 있으므로 대부분 의사 메트릭을가집니다. 삼각형 부등식은 주로 (예 : 엄격한 삼각형 부등식 요구 사항이있는 M- 트리 색인을 사용하여) 최적화 또는이 속성을 사용하는 가속화 된 k- 평균을위한 역할을합니다.

2

또한 Affinity Propagation (http://www.psi.toronto.edu/index.php?q=affinity%20propagation)을 시도 할 수도 있습니다. 이 알고리즘은 유사도 행렬을 입력으로 받아 들여서 자동으로 클러스터 중심의 수를 조정할 수 있습니다.