최적 클러스터로 개선시키기
앞서 설명한 경험에 따른 법칙(rule of thumb method)을 사용하면 최적화하기 쉽다. 유닉스의 wc 명령으로 개체 인스턴스의 수를 알 수 있다.
wc kmeansdata.csv 75 76 494 kmeansdata.csv
74행이 있는데(x와 y 라벨이 있는 맨 윗줄은 제외), 어림으로 계산하여 75를 2로 나누면 37.5, 제곱근은 6.12다.
명령줄을 수정하여 타깃 클러스터의 개수(-N 플래그)와 난수 시드값(-S 플래그)을 추가할 수 있다.
java -cp /path/to/weka.jar weka.clusterers.SimpleKMeans -t kmeansdata.arff -N 6 -S 42
이번 출력의 결과는 비슷하지만, 클러스터는 더 많다.
kMeans ====== Number of iterations: 3 Within cluster sum of squared errors: 0.523849925862059 Missing values globally replaced with mean/mode Cluster centroids: Cluster# Attribute Full Data 0 1 2 3 4 5 (75) (10) (12) (15) (5) (10) (23) ======================================================================== x 54.88 11.8 105.0833 68.9333 81.6 28.5 43.913 y 92.0267 65.9 118.3333 19.4 106.6 64 146.0435 === Clustering stats for training data === Clustered Instances 0 10 ( 13%) 1 12 ( 16%) 2 15 ( 20%) 3 5 ( 7%) 4 10 ( 13%) 5 23 ( 31%)
이제 우리는 클러스터가 여섯 개 있으며, 클러스터는 할당이 잘 정의된 개체로 구성되어 있다. 유일한 문제는 개체가 어느 클러스터에 속하는지 모르고 있다는 것이다.