kman 또는 다른 클러스터링 알고리즘의 결과가 실제로 의미가 있도록 (고차원) 데이터에 충분한 클러스터링이 있는지 어떻게 알 수 있습니까?
특히 k- 평균 알고리즘의 경우 실제 군집 결과가 의미가 있고 (가상하지 않은) 클러스터 내 분산의 감소가 얼마나됩니까?
차원 적으로 축소 된 형태의 데이터가 그려 질 때 군집이 분명해야하고 군집을 시각화 할 수없는 경우 kmeans (또는 다른 방법)의 결과가 의미가 없습니까?
kman 또는 다른 클러스터링 알고리즘의 결과가 실제로 의미가 있도록 (고차원) 데이터에 충분한 클러스터링이 있는지 어떻게 알 수 있습니까?
특히 k- 평균 알고리즘의 경우 실제 군집 결과가 의미가 있고 (가상하지 않은) 클러스터 내 분산의 감소가 얼마나됩니까?
차원 적으로 축소 된 형태의 데이터가 그려 질 때 군집이 분명해야하고 군집을 시각화 할 수없는 경우 kmeans (또는 다른 방법)의 결과가 의미가 없습니까?
답변:
k- 평균에 대해 구체적으로 갭 통계를 사용할 수 있습니다. 기본적으로 아이디어는 점점 더 많은 클러스터에 대한 참조 분포와 비교하여 평균 분산을 기반으로 클러스터링 측정의 우수성을 계산하는 것입니다. 자세한 내용은 원본 용지에 나와 있습니다.
Tibshirani, R., Walther, G. 및 Hastie, T. (2001). 간격 통계를 통해 데이터 세트의 군집 수 추정 . JR 통계 학자. Soc. B, 63 (2) : 411-423.
내가 관련 질문에 제공 한 답변 은 주어진 데이터 세트가 어떤 종류의 구조를 나타내는 지 여부를 확인하는 데 사용할 수있는 다른 일반적인 유효성 지수를 강조합니다.
노이즈 만 있는지 알아낼 것이 무엇인지 모른다면 리샘플링을 사용하고 클러스터 안정성을 연구하는 것이 좋습니다. 즉, 부트 스트랩을 통해 또는 작은 노이즈를 추가하여 데이터를 다시 샘플링하고 Jaccard 유사성 으로 측정 된 결과 파티션의 "근접도"를 계산하십시오 . 즉, 데이터에서 유사한 클러스터가 복구되는 빈도를 추정 할 수 있습니다. 이 방법은 fpc R 패키지에서 다음과 같이 쉽게 사용할 수 있습니다 clusterboot()
. 원시 데이터 또는 거리 행렬을 입력으로 사용하며 광범위한 클러스터링 방법 (계층 적, k- 평균, 퍼지 방법)을 적용 할 수 있습니다. 이 방법은 링크 된 참조에서 논의됩니다.
Hennig, C. (2007) 클러스터 안정성에 대한 클러스터 별 평가 . 전산 통계 및 데이터 분석 , 52, 258-271.
Hennig, C. (2008) 용해 지점 및 격리 견고성 : 일반적인 클러스터 분석 방법에 대한 견고성 기준 . 다변량 분석 저널 , 99, 1154-1176.
아래는 k- 평균 알고리즘을 사용한 작은 데모입니다.
sim.xy <- function(n, mean, sd) cbind(rnorm(n, mean[1], sd[1]),
rnorm(n, mean[2],sd[2]))
xy <- rbind(sim.xy(100, c(0,0), c(.2,.2)),
sim.xy(100, c(2.5,0), c(.4,.2)),
sim.xy(100, c(1.25,.5), c(.3,.2)))
library(fpc)
km.boot <- clusterboot(xy, B=20, bootmethod="boot",
clustermethod=kmeansCBI,
krange=3, seed=15555)
3 개의 군집 ( krange
) 중 어느 것도 시료에 용해 되지 않았 으며 모든 군집에 대한 평균 군집 자카드 유사성은> 0.95 이기 때문에 결과는이 인공 (및 구조화 된) 데이터 집합에서 상당히 긍정적입니다 .
다음은 20 개의 부트 스트랩 샘플에 대한 결과입니다. 알 수있는 바와 같이, 통계 단위는 동일한 군집으로 그룹화되는 경향이 있지만 그 사이에있는 관측치에 대한 예외는 거의 없습니다.
물론이 아이디어를 모든 유효성 지수로 확장 할 수 있습니다. 부트 스트랩 (대체 포함)을 통해 새로운 일련의 관측 값을 선택하고, 통계 범위 (예 : 실루엣 너비, cophenetic 상관 관계, 허버트 감마, 제곱합 내)를 계산합니다. 군집 번호 (예 : 2-10)를 100 회 또는 500 회 반복 한 다음 군집 수의 함수로 통계의 상자 그림을보십시오.
여기 동일한 시뮬레이션 데이터 세트로 얻을 수 있지만 Ward의 계층 적 클러스터링을 사용하고 cophenetic 상관 관계 (결과 파티션에서 거리 정보가 얼마나 잘 재현되는지 평가)와 실루엣 너비 (클러스터 내부 동질성 및 인터 인터를 평가하는 조합 측정)를 고려하십시오. 클러스터 분리).
cophenetic 상관 관계는 0.6267에서 0.7511까지이며 중앙값은 0.7031 (500 부트 스트랩 샘플)입니다. 3 개의 군집 (중앙 0.8408, 범위 0.7371-0.8769)을 고려할 때 실루엣 폭이 최대 인 것으로 보입니다.
고차원 데이터가 충분한 군집을 나타내는 지 여부를 신속하게 시각화하는 한 가지 방법은 t- 분산 확률 적 이웃 임베딩 ( t-SNE )을 사용하는 것입니다. 데이터를 약간의 저 차원 공간 (예 : 2D, 3D)에 투영하고 클러스터 구조를 유지하는 데 상당히 효과적입니다.
예 : MNIST 데이터 세트 :
Olivetti는 데이터 세트에 직면합니다.
확실하게, 도표 가능한 수의 차원에서 클러스터를 시각적으로 식별하는 능력은 클러스터링 알고리즘의 유용성에 대한 의심스러운 기준입니다. 특히이 차원 축소가 클러스터링 자체와 독립적으로 수행되는 경우 (즉 클러스터링이 작동합니다).
실제로, 클러스터링 방법은 사람의 눈 / 마음이 클러스터를 볼 수없는 클러스터를 찾는 데 가장 큰 가치가 있습니다.
간단한 대답은 클러스터링을 수행 한 다음 작동하는지 여부를 확인하는 것입니다 (관심있는 기준이 있으면 @Jeff의 답변 참조).
어쨌든 결과는 언제 의미가 있습니까? 특히 k- 평균 결과는?
사실 k- 평균은 특정 수학적 통계량을 최적화한다는 것입니다. 이와 관련된 "의미있는"것은 없습니다.
특히 고차원 데이터에서 첫 번째 질문은 다음과 같아야합니다. 유클리드 거리가 여전히 의미가 있습니까? 그렇지 않은 경우 k- 평균을 사용하지 마십시오. 유클리드 거리는 실제 세계에서 의미가 있지만 다른 데이터가 있으면 빠르게 의미를 잃습니다. 특히 인공적으로 데이터를 벡터 공간으로 변환 할 때 이것이 유클리드 여야하는 이유가 있습니까?
고전적인 "오래된 충실한"데이터 세트를 가져와 정규화 없이 k- 평균을 실행 하지만 순수한 유클리드 거리를 사용하면 더 이상 의미가 없습니다. 실제로 "클러스터 로컬"Mahalanobis 거리의 일부 형태를 사용하는 EM은 훨씬 더 잘 작동합니다. 특히 스케일이 매우 다른 축에 적용됩니다.
k-means 의 주요 강점 인 Btw 는 데이터의 모양에 관계없이 실제로 데이터를 항상 분할한다는 것입니다. k- 평균을 사용하여 균일 한 노이즈를 k 클러스터로 분할 할 수 있습니다 . k- 평균 군집은 의미가 없다고 주장 할 수 있습니다. 또는 사용자가 클러스터를 "의미"할 필요없이 데이터를 분할하여 제곱 유클리드 거리를 최소화하기를 원했습니다.
최근에 클러스터링 알고리즘을 사용하기 시작했기 때문에 더 많은 지식을 갖춘 사람이 더 완전한 대답을 제공 할 수 있기를 바랍니다. 그러나 여기에 몇 가지 생각이 있습니다.
당신이 알고 있듯이 '의미있는'은 매우 주관적입니다. 따라서 클러스터링이 충분한 지 여부는 처음에 클러스터해야하는 이유에 전적으로 달려 있습니다. 그룹 멤버십을 예측하려는 경우 클러스터링이 우연히 나아질 가능성이 높으며 결과는 어느 정도 의미가 있습니다.
이 클러스터링이 얼마나 안정적 인지 알고 싶다면 비교할 메트릭이 필요합니다. 멤버십이 알려진 엔터티 집합이있는 경우 판별 분석을 사용하여 예측이 얼마나 좋은지 확인할 수 있습니다. 멤버십이 알려진 엔터티 집합이없는 경우 해당 필드에서 클러스터의 일반적인 분산이 무엇인지 알아야합니다. 엄격한 범주를 가진 엔티티의 물리적 속성은 인간의 심리 데이터보다 그룹 내 분산이 훨씬 낮을 가능성이 있지만 클러스터링을 '더 나쁘게'만드는 것은 아닙니다.
두 번째 질문은 'k의 어떤 값을 선택해야합니까?'라고 암시합니다. 다시 말하지만, 여기에는 어려운 대답이 없습니다. 사전 범주가없는 경우 평균 클러스터 분산을 최소화하면서 클러스터 수를 최소화 할 수 있습니다. 간단한 접근법은 '클러스터 수'대 '평균 클러스터 분산'을 플로팅하고 더 많은 클러스터를 추가해도 클러스터 분산에 큰 영향을 미치지 않는 "팔꿈치"를 찾는 것입니다.
k-means의 결과가 시각화 할 수 없다면 의미가 없다고 말하지는 않지만 클러스터가 시각적으로 명백 할 때 확실히 매력적입니다. 다시 말하지만, 왜 클러스터링을 수행해야하는지, 그리고 얼마나 신뢰할 수 있어야합니까? 궁극적으로 이것은 데이터 사용 방법에 따라 답변해야하는 질문입니다.