본문 바로가기
Machine Learning

통계 분석 #11 : 군집분석의 개념, 유형, 종류선택 with R (k-means clustering)

by 무적물리 2020. 3. 29.

군집분석 이란?

군집분석은 동일한 성격을 가진 여러 개의 그룹으로 대상을 분류하는 것을 말합니다. 군집화 혹은 군집분석이라고 말하는 분석 방법은 대상 개체를 유사하거나 서로 관련있는 항목끼리 묶어서 몇 개의 집단으로 그룹화하거나, 각 집단의 성격을 파악함으로써 데이터 전체의 구조에 대한 이해를 돕고자하는 탐색적 분석방법 입니다. 




군집분석의 특징

군집 분석은 종속변수에 대한 독립변수의 영향과 같이 사전에 정의된 특수한 목적이 없으며, 데이터 자체에 의존해서 데이터 구조와 자료를 탐색하고 요약하는 기법입니다. 대용량 데이터의 경우에는 전체에 대한 의미 있는 정보를 얻어낼 수 있으며 전체를 유사한 군집으로 구분한다면 전체에 대한 의미 있는 정보를 얻어낼 수 있습니다. 



또한, 동일한 군집 내 개체들은 유사한 성격을 가집니다. 이말을 다르게 표현해보면 서로 다른 군집은 이질적인 성격을 갖도록 군집이 형성 됩니다. 전자는 집단내 동질성, 후자는 집단간 이질성이라는 말로 표현됩니다.


1. 사전에 정의된 특수 목적 없음

2. 데이터 전체에 대한 의미 있는 정보 습득 가능

3. 동일 군집 내 개체는 유사 성격을 가짐


군집의 유형

상호 배반적 군집 : 각 관찰치가 군집 중 오직 하나에 속함

계보적 군집 : 한 군집이 다른 군집에 포함, 상하종속 관계

중복 군집 : 두 개이상의 군집에 한 관찰치가 소속

퍼지(Fuzzy) 군집 : 각 군집에 속할 확률을 표현하는 방법



계층적 군집화

계층적 군집화 방법에서 병합적 방법과 분할적 방법을 바탕으로 군집이 형성됩니다. 한 관찰단위는 한 군집에 속하면 다른 군집에는 다시 속할 수 없습니다. 군집은 덴드로그램(Dendrogram)이라는 군집들 간의 관계를 파악하고 구조적 관계를 살펴보는데 사용되는 도표로 표현합니다.


병할적 방법 : 가까운 관찰단위끼리 군집을 만들어가는 방법

분할적 방법 : 거리가 먼 관찰단위들을 나누어가는 방법


계층적 군집화의 알고리즘 종류는 아래와 같습니다. 알고리즘의 종류에 따라 네가지로 나눠지며 최단 연결법, 최장 연결법, 평균 연결법, 와드 연결법이 계층적 군집화 알고리즘의 종류입니다.


최단 연결법 : 가장 가까이 있는 두 관측치 사이의 거리 기반

최장 연결법 : 가장 멀리 떨어진 두 관측치 사이의 거리 기반

평균 연결법 : 모든 가능한 거리의 평균 거리 기반

와드 연결법 : 군집 내 편차들의 제곱합을 기반으로 군집 형성


비계층적 군집화

비계층적 군집화의 방법으로 주로 K-means 클러스터링을 사용합니다. 이는 사전에 결정된 군집 수 K에 기초하여 전체 데이터를 상대적으로 유사한 K개의 군집으로 구분하는 방법입니다. 이 방법은 상호배반적인 K개의 군집을 형성함으로써 군집을 형성하며, 군집수 K를 사전에 결정해야 합니다. 아래 그림은 군집을 3로 형성한 예시입니다.



K-means 클러스터링의 과정은 아래와 같습니다. 클러스터의 개수를 결정하게 되면 데이터 공간에 K개의 클러스터가 형성되며 각 클러스터의 중심은 해당 클러스터에 포함된 데이터의 평균으로 조정되게 됩니다. 클러스터의 중심이 변하지 않을 때까지 클러스터 중심을 조정하며 군집을 형성합니다.


1. 클러스터 개수 K값 결정

2. 데이터 공간에 클러스터 중심 K개 할당

3. 각 클러스터 중심을 해당 클러스터 데이터의 평균으로 조정

4. 클러스터 중심이 변하지 않을 때까지 3~4 반복


K-means 클러스터링의 장단점은 아래와 같습니다. 장점은 빠르고 간단하다는 점이지만, 사용자가 군집개수인 K값을 설정하는데 어려움이 있습니다. 또한 K값을 잘못 선택하면 군집 형성의 결과가 좋지 못하다는 단점이 있습니다.


장점 : 빠르고 간단하게 군집화 가능

단점 : 적절하지 못한 군집 설정시, 결과가 좋지 못함



군집분석 종류 선택

군집분석을 할 데이터에 따라서 세가지 카테고리에 맞는 군집분석을 실시해야 합니다. 군집 대상의 중복여부에 따라 1차 스크리닝을 하며, 자료의 크기에 따라 2차 스크리닝을 해주면 됩니다. 빅데이터 기반 군집분석에는 K평균 군집화 방법이 사용되는데 이는 자료의 크기가 제약이 없기 때문입니다.



R을 이용한 K-means 군집화

데이터는 붓꽃 데이터인 iris를 사용하였으면 K의 수는 해당 데이터 붓꽃의 종류에 따라 3으로 부여했습니다. 


# 데이터 불러오기

data(iris)

a=iris


# 붓꽃의 종에 대한 사전정보 제거

a$Species=NULL

a


# K=3, K-means Clustering

kc=kmeans(a,3)

summary(kc)

table(iris$Species,kc$cluster)

plot(a[c("Sepal.Length","Sepal.Width")],col=kc$cluster)


댓글