K-means
K-평균은 군집화를 대표하는 알고리즘이다. 군집 중심점 기반 클러스터링인데 군집화 알고리즘 이 중 가장 쉽고, 가장 많이 이용된다.
이용방법
1) 군집화의 기준인 중심점을 우선 임의로 2개 설정해 놓는다. 위치는 상관없다.
2) 임의로 2개 설정해 놓았던 중심점을 데이터들의 평균 중심으로 이동한다.
3) 중심점을 기준으로 주변의 데이터들을 탐색한다. 만약 A중심점 주위에 데이터 data1이 원래는 B중심점을 기준으로 했는데 A중심점과 더 가까이 있다면 data1과 기존 데이터의 중간으로 A중심점이 이동한다.
K-means의 장점
군집화에서 가장 많이 사용된다.
알고리즘이 쉽다
적은 용량 뿐 아니라 큰 용량의 데이터에도 쉽게 쓸 수 있다.
K-means의 단점
K-평균 알고리즘은 거리을 기반으로 하는 알고리즘이기 때문에 만약 데이터의 갯수가 많고 분산되어서 있다면 군집화의 정확도는 떨어질 수 밖에 없다.(보완하는 방법은 PCA로 차원 축소)
군집을 몇 개를 이뤄야 할 지 설정을 잘 해야 한다.
반복 횟수가 많을 수록 속도가 느려진다.
사이킷런패키지
KMeans 클래스
class sklearn.cluster.KMeans(n_clusters=8, *, init='k-means++', n_init=10
, max_iter=300, tol=0.0001, precompute_distances='deprecated', verbose=0
, random_state=None, copy_x=True, n_jobs='deprecated', algorithm='auto')
주요 파라미터
n_clusters : cluster 갯수를 몇 개를 할 건지 결정
init : 초기에 중심점을 설정 할 때 랜덤으로 초기화 하는 알고리즘 중 어떠한 방법을 선택할지 설정한다. 보통 k-means++를 이용한다.
max_iter : 최대로 반복하는 횟수이다. 이 횟수로 반복하지만 만약에 횟수가 채워지기 전에 중심점의 이동이 없으면 자동으로 알고리즘이 종료된다.
n_init : 설정을 하지 않으면 기본적으로 10개가 설정된다. K-Means 알고리즘이 돌아갈 때 초기 중앙점이 무작위로 선택되는데 이 때 최적의 결과를 위해 초기값을 몇 번 셋팅할 지 설정한다.
algorithm : auto, full, elkan이 있는데 기본적으로 auto로 설정된다. 전통적인 EM-스타일의 알고리즘은 full 이다. elkan 알고리즘은 클러스터에서 더 효율적인 알고리즘인데 대신 메모리가 더 쓰인다. auto로 설정하면 기본적으로 alkan 알고리즘으로 선택되는데 상황에 따라 alkan이 선택이 안 될 수도 있다.
주요 속성
labels_ : 각각의 포인트 레이블이다.
cluster_centers : 군집합의 중앙의 좌표를 알려준다. 만약 cluster_centers 가 max_iter 에서 설정한 값 이전에 바뀌지 않는다면 iterator은 중단된다.