[ML/Clustering] Kmeans
군집화에서 가장 일반적으로 사용되는 알고리즘이다.
군집중심 이라는 특정한 임의의 지점을 선택해 해당 중심에 가장 가까운 포인트들을 선택하는 군집화 기법이다.
군집중심점은 선택된 포인트의 평균 지점으로 이동하고 이동된 중심점에서 다시 가까운 포인트를 선택하고 다시 중심점을 평균지점으로 이동하는 프로세스를 반복적으로 수행한다.
모든 데이터 포인트에서 더이상 중심점의 이동이 없을 경우에 반복을 멈추고 해당 중심점에 속하는 데이터 포인트들을 군집화 하는 기법이다.
| 장점 | 단점 |
|---|---|
| 쉽고 간결 | 속성의 개수가 매우 많을 경우 군집화 정확도가 매우 떨어짐(PCA를 활용해 차원감소가 필요할 수 있음) 반복횟수가 많을 경우, 수행횟수 매우 느림 cluster 수를 지정하기 어려움 |
Kmeans Clustering Tutorial
1 | |
군집화용 데이터 생성기
sklearn은 다양한 유형의 군집화 알고리즘을 테스트 해보기 위해 데이터 생성기를 제공한다. 대표적으로 make_blobs , make_classification API가 있다.
두 API는 비슷하게 여러개의 클래스에 해당하는 데이터 세트를 만드는데, 하나의 클래스에 여러개의 군집이 분포 될 수 있게 데이터를 생성할 수 있다.
make_blobs
: 개별 군집의 중심점과 표준편차제어 기능 존재make_classification
: 노이즈를 포함한 데이터를 만드는데 유용하게 사용make_circle,make_moon
: 군집화로 해결하기 어려운 데이터 세트 생성
make_blobs를 이용해 임의의 데이터셋을 생성해보자.
1 | |
cluster_std 파라미터로 데이터 분포도를 조절한다.
cluster_std가 작을 수록 군집중심에 데이터가 모여있고, 클수록 데이터가 퍼져있다.
Practice
- Clustering link
Reference
- 파이썬 머신러닝 완벽가이드 서적