프로그래밍

[R] R을 이용한 군집분석

RainIron 2021. 5. 29. 16:30
반응형

1. 군집화

1) 개념

* 군집분석: 동일한 성격을 가진 여러 개의 그룹으로 대상을 분류하는 것

  - 대상 개체를 유사하거나 서로 관련있는 항목기리 묶어 몇 개의 집단으로 그룹화 하는 것

  - 각 집단의 성격을 파악함으로써 데이터 전체의 구조에 대한 이해를 돕고자 하는 탐색적 분석방법

  (집단 간 이질성: 크게 / 집단 내 동질성: 작게)

 

2) 군집 분석의 특징

* 사전에 정의된 어떤 특수한 목적이 없음

  -> 종속변수에 대한 독립변수의 영향과 같이, 사전에 정의된 어떤 특수한 목적이 없음

  -> 데이터 자체에 의존하여 데이터의 구조와 자료를 탐색하고 요약하는 기법

 

* 대용량 데이터의 경우, 전체에 대한 의미 있는 정보를 얻어낼 수 있음

  - 전체를 유사한 관찰치들의 군집으로 구분(잘 대표하는 군집)

    -> 전체에 대한 의미 있는 정보를 얻어낼 수 있음

 

* 동일한 군집 내의 개체들은 유사한 성격을 가짐

  -> 서로 다른 군집에 속한 개체들은 이질적인 성격을 갖도록 구성되어야 함

 

3) 군집의 유형

* 상호 배반적 군집: 각 관찰치가 상호배반적인 여러 군집 중 오직 하나에만 속하는 경우

  예) 국적별로 군집화

 

* 계보적 군집: 한 군집이 다른 군집의 내부에 포함되는 형태, 군집간의 중복은 없으며 군집들이 매 단계 계층적인 관계를 형성하는 경우, 군집 내 상하종속관계를 보임

  예) 생물표본 분류: 종-속-과-목

 

* 중복 군집: 두 개 이상의 군집에 한 관찰치가 동시에 소속되는 것이 허용되는 경우

 

* 퍼지 군집(Fuzzy): 관찰치가 소속되는 특정한 군집을 표현하는 것이 아닌, 각 군집에 속할 확률을 표현하는 방법

  예) 평균키, 평균 몸무게

 

4) 계층적 군집화와 비계층적 군집화

* 계층적 군집화

  - 구성 방법

구분 의미
병합적 방법 가까운 관찰단위들끼리 묶어 군집을 만들어가는 방법
분할적 방법 거리가 먼 관찰단위들을 나누어가는 방법

  - 한 관찰단위는 한 군집에 속하면 다른 군집에는 다시 속하지 못함

  - 덴드로그램으로 표현함(덴드로그램: 어떤 특정 단계에서 병합 혹은 분할되는 군집들 간 관계를 파악하고 전체 군집들 간의 구조적 관계를 살펴보는데 사용되는 도표)

  - 계층적 병합 군집화 알고리즘 분류

    # 최단 연결법

    # 최장 연결법

    # 평균 연결법

    # 와드 연결법

 

* 비계층적 군집화

  - K-means 클러스터링: 사전에 결정된 군집 수 K에 기초하여 전체 데이터를 상대적으로 유사한 K개의 군집으로 구분하는 방법

  - 상호배반적인 K개의 군집을 형성함

  - 군집의 수 K를 사전에 결정

  - 과정

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

    2. 데이터가 분포된 공간 상에 클러스터 중심으로 가정할 임의의 지점 K개를 선택(각 데이터는 근처에 있는 클러스터 중심에 할당됨)

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

    4. 더 이상 클러스터의 중심이 변하지 않을 때까지 3~4단계를 반복

  - 장/단점: 빠르고 간단하고 군집화 가능, 분석자가 적절한 클러스터링의 K를 선정하지 못함, 적절하지 못한 군집수 결정 시 결과가 좋지 않을 수 있음

 

5) 군집 분석의 장/단점

* 장점

  - 탐색적 기법: 군집분석 자체로, 대용량 데이터에 대한 탐색적 분석이 가능, 주어진 데이터의 내부 구조에 대한 사전 정보나 사전분석의 필요 없이 의미 있는 자료 구조를 찾아낼 수 있음

  - 다양한 데이터에 적용 가능: 관찰단위간의 거리를 데이터 형태에 맞게 정의하면 거의 모든 형태의 데이터에 적용 가능

  - 분석방법 적용의 용이: 대부분의 군집 분석 방법은 분석 대상 데이터에 대해 사전 정보를 요구하지 않으므로 분석 방법의 적용에 큰 어려움이 없음, 모형화에 사용되는 분석들과 같이 특정 변수들에 대한 역할 정의(독립, 종속, 매개 등)가 불필요

 

* 단점

  - 가중치와 거리 정의: 군집분석의 결과는 관찰단위 사이의 유사성을 나타내는 거리를 어떻게 정의하느냐가 크게 좌우함(특히, 여러 자료유형(수치, 범주형 등)을 포함하는 데이터의 경우에는, 관찰단위 사이의 거리를 정의하고 각 변수에 대한 가중치를 결정하는 것이 매우 어려움)

  - 결과 해석의 어려움: 사전에 주어진 목적이 없으므로, 결과 해석이 명확하지 않음, 주어진 변수에 따라 잘 구분된 군집이라고 해도, 그 결과를 실제로 활용하기 어려움

  - 초기군집수의 결정: K-평균 군집분석에서는 만일 군집 수 K가 원 데이터 구조에 부적합하면, 좋은 결과를 얻기 힘듬(사전에 정의된 군집 수를 기준으로 사전정의 군집과 동일한 수의 군집을 찾게 되기 때문, 이를 방지하기 위해 여러 번의 탐색적인 군집 분석 과정이 필요)

 

2. 군집화의 활용

1) 군집 분석 절차

  - 1단계: 연구문제 확정

  - 2단계: 대상 개체 및 변수 확정

  - 3단계: 군집 방법 결정

  - 4단계: 연결방법 및 거리척도 결정

  - 5단계: 군집계수 결정 및 해석

 

2) 군집 분석 종류 선택

  [군집 대상의 중복 여부]

    -> 있음: 비계층적 군집분석(중복군집)

    -> 없음(자료의 크기에 따라 분류)

      [자료의 크기]

        -> 작음: 계층적 군집분석(최단 연결법, 최장 연결법, 평균 연결법, 와드 연결법)

        -> 제약 없음: 비계층적 군집분석(K평균 군집화)

 

3. R을 이용한 군집화

* Iris를 이용해 K = 3인 K-means 군집화

# 데이터 로드
data(iris)
a = iris
# 붓꽃의 종에 대한 사전정보를 제거(군집분석은 사전정보가 필요 없음)
a$Species = NULL

# k=3인 k-means 군집분석
kc = kmeans(a, 3)

summary(kc)

table(iris$Species, kc$cluster)

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

반응형