류동균의 R 공부방입니다.
K-평균 군집(K-means clustering) 본문
K-평균 군집(K- means clustering)이란 무엇인가 ?
데이터를 K개의 군집으로 묶는 알고리즘이다. 각각의 군집사이의 거리를 최소화하여 군집을 이룬다. 쉽게말해 공간상의 점들을 서로 가까운 점들끼리 묶어서 K개의 군집으로 나누는 방법이다. KNN과 다르게 K-평균은 트레이닝과 라벨이 없이 데이터를 처리할 수 있다. K-평균은 다음의 그림과 같이 그룹을 만든다.
K-평균으로 iris데이터의 군집화
K-평균 알고리즘으로 iris데이터의 Species(종)을 분류해 볼 것이다. 그동안 블로그에서 많은 알고리즘으로 iris데이터의 Species를 분류하는 작업을 하였지만 라벨이 있는 training이 된 모델들 이였다. K-평균에서는 라벨과, Training 없이 Species의 분류라는 동일한 목표를 수행 할 것이다.
# Species를 제외한 iris데이터
kmean_iris <- iris[,1:4]
# k=3으로 k-means 적용
clusters <- kmeans(kmean_iris, 3)
clusters를 실행시켰을때 다음과 같은 결과가 나올것이다. K-평균은 별도의 라벨을 가지고 있지 않으며 vector로 1, 2, 3으로 표현된 것을 볼 수 있다.
K-평균과 실제 iris 데이터의 비교
이제 군집라벨과 실제 iris 데이터의 Species와 비교해보자.
# K-평균과 iris데이터의 Species의 비교
table(clusters$cluster, iris$Species)
다음의 table을 보면 setosa는 2, versicolor는 3, viginica는 1로 분류 된것을 확인할 수 있다.
Petal.Length, Petal.Width에 따른 군집 시각화
이번엔 시각적으로 어떻게 군집이 이루어졌는지를 살펴보자.
# Petal.Length, Petal.Width에 따른 군집
plot(kmean_iris[c("Petal.Length", "Petal.Width")],
col=clusters$cluster, pch = c(15,16,17)[as.numeric(clusters$cluster)])
points(clusters$centers[,c("Petal.Length", "Petal.Width")],col=1:3, pch=8, cex=2)
다음과 같이 K-평균을 중심으로 setosa, virginica, versicolor가 군집화 된 것을 알 수 있다.
'Machine Learning' 카테고리의 다른 글
서포트 벡터 머신(Support Vector Machine) (0) | 2019.09.25 |
---|---|
K-최근접 이웃(K-Nearest Neighbor) (0) | 2019.09.25 |
뉴럴 네트워크(Neural Network) (0) | 2019.09.24 |
랜덤 포레스트(Random Forest) (0) | 2019.09.22 |
의사결정 나무(Decision Tree) (0) | 2019.09.20 |