답변:
어쩌면 문제에 잘못된 알고리즘을 사용하고있을 것입니다.
K- 평균은 전처리에 매우 민감합니다. 하나의 속성이 다른 속성보다 훨씬 큰 스케일이면 출력을 지배합니다. 그러면 출력이 효과적으로 1 차원이됩니다
무엇을 하든지 SSQ와 같은 숫자로 시작하지 않고 결과를 검증해야합니다. 대신 시각화를 고려하십시오 .
시각화 를 통해 데이터에 단일 클러스터 만있을 수 있습니다.
한 가지 방법은 특정 k에 대해 클러스터의 구성원을 수동으로 검사하여 그룹화가 의미가 있는지 확인하는 것입니다 (이들은 구별 가능합니까?). 이것은 우발 상황 테이블과 조건 적 수단을 통해 수행 할 수 있습니다. 다양한 k에 대해이 작업을 수행하면 적절한 값을 결정할 수 있습니다.
덜 주관적인 방법은 Silhouette Value를 사용하는 것입니다.
이것은 선호하는 소프트웨어 패키지로 계산할 수 있습니다. 링크에서 :
이 방법은 그룹 내 유사성을 가장 가까운 그룹 유사성과 비교합니다. 동일한 클러스터의 다른 멤버와의 데이터 멤버 평균 거리가 다른 클러스터 멤버와의 평균 거리보다 높은 경우이 값은 음수이며 클러스터링에 실패합니다. 반면, 1에 가까운 silhuette 값은 성공적인 클러스터링 작업을 나타냅니다. 0.5는 클러스터링의 정확한 척도가 아닙니다.
contingency tables and conditional means
이것은 더욱 신비 롭습니다. 좋은 k로 "주관적으로"도착하려면 어떻게해야합니까?
일반적으로 다음을 고려할 수 있습니다.
NbClust 패키지를 사용하여 가장 최적의 k 값을 찾을 수 있습니다. 클러스터 수를 결정하기위한 30 개의 지표를 제공하고 최상의 결과를 제안합니다.
NbClust (data = df, 거리 = "euclidean", min.nc = 2, max.nc = 15, 방법 = "kmeans", index = "all")