답변:
차이 통계는이를 수행하는 좋은 방법입니다. Tibshirani, Hastie & Walther (2001).
http://stat.ethz.ch/R-manual/R-devel/library/cluster/html/clusGap.html- 관련 R 패키지.
아이디어는 K = 1,2,3, ...에 대해 데이터를 클러스터링하는 무작위 가설에 대한 귀무 가설을 비교하는 순차적 가설 테스트를 수행한다는 것입니다. 이는 하나의 클러스터에 해당합니다. K = 1, 즉 클러스터가 없는지 여부를 확실하게 표시 할 수 있다는 것이 장점입니다.
예를 들어, 나는 며칠 전에 천문학 데이터를 검사하고있었습니다. (볼록한) 클러스터에 어떤 증거가 있는지 알고 싶었습니다. 내 데이터는 '전송'입니다
library(cluster)
cgap <- clusGap(transit, FUN=kmeans, K.max=kmax, B=100)
for(k in 1:(kmax-1)) {
if(cgap$Tab[k,3]>cgap$Tab[(k+1),3]-cgap$Tab[(k+1),4]) {print(k)};
break;
}
갭 통계를 사용하면 테스트가 실패하는 K의 첫 번째 값, 즉 갭 통계가 크게 감소하는 K 값을 찾고 있습니다. 위의 루프는 그러한 ak를 인쇄하지만 간단히 cgap를 플로팅하면 다음과 같은 그림을 얻을 수 있습니다. 실제로
갭이 k = 1에서 k = 2로 어떻게 크게 떨어졌는지 확인하십시오 . 이는 실제로 클러스터가 없음을 나타냅니다 (예 : 클러스터 1 개).
A. Kalogeratos와 A.Likas, Dip-means : NIPS 2012 의 클러스터 수를 추정하기위한 증분 클러스터링 방법 .
아이디어는 한 점과 세트의 나머지 점 사이의 유사성 / 거리를 포함하는 벡터에 대한 단일성에 대한 통계적 가설 테스트를 사용하는 것입니다. 테스트는 Hartigan-Hartigan 딥 테스트 Ann을 사용하여 수행됩니다 . 통계 학자. 13 (1) : 70-84.
이 방법은 모든 데이터 세트를 하나의 군집으로 시작하고 단일성 가설이 기각되는 한 (즉, 하나 이상의 군집이 존재하는 한) 점진적으로 분할합니다.
따라서이 방법은 데이터에 클러스터가 둘 이상 있는지 (질문) 표시하지만 최종 클러스터링을 제공 할 수도 있습니다.
동일한 예를 고려하고 있다고 가정 해 봅시다.
라이브러리 (클러스터) cgap <-clusGap (전송, FUN = kmeans, K.max = kmax, B = 100) for (k in 1 : (kmax-1)) {if (cgap탭 [(k + 1), 3] -cgap $ Tab [(k + 1), 4]) {print (k)}; 단절; }
최대 격차 통계를 기반으로 최상의 클러스터링 솔루션에 해당하는 클러스터 요소를 어떻게 서브 세트 할 수 있습니까? 각 클러스터에 대한 추가 분석에 사용할 수 있습니다.
하위 집합이라는 명령이 있다는 것을 알고 있습니다. 원하는 클러스터 수를 지정했을 때이 명령을 사용하는 데 문제가 없습니다. 그러나 간격을 사용하여 얻은 최적의 k를 기반으로 하위 집합을 설정하려는 경우 하위 집합을 지정하는 방법 (즉, 루프가있는 경우 클러스터의 하위 집합 요소)