군집분석(Cluster Analysis)

hottogi·2023년 1월 4일
0

1. 계층적 군집 분석

계층적 군집 분석(Hierarchical Clustering): 개별대상 간의 거리에 의하여 가장 가까운
대상부터 결합하여 나무 모양의 계층구조를 상향식(Bottom-up)으로 만들어가면서
군집을 형성

군집 대상 간의 거리를 산정하는 기준에 따라
단일(최단)연결법(Single Linkage Method): 최소거리 기준
완전(최장)연결법(Complete Linkage Method): 최대거리 기준
평균연결법(Average Linkage Method): 평균 거리 기준
중심연결법(Centroid Linkage Method): 중심값의 거리 기준
Ward 연결법(Ward Linkage Method): 유클리디안 제공 거리 기준

장점: 군집이 형성되는 과정을 파악
단점: 자료의 크기가 큰 경우 분석이 어렵다

유클리디안 거리를 이용한 군집화

1단계: 군집 분석(Clustering)을 위한 패키지 설치
install.packages("cluster")
library(cluster)
cluster 패키지 설치

2단계: 데이터 셋 생성
x <- matrix(1:9, nrow = 3, by = T)

3단계: matrix 객체 대상 유클리디안 거리 생성
dist <- dist(x, method = "euclidean")

4단계: 유클리디안 거리 matrix를 이용한 군집화
hc <- hclust(dist)

신입사원의 면접시험 결과를 군집 분석

1단계: 데이터 셋 가져오기
interview <- read.csv("C:/Rwork/interview.csv", header = TRUE)
names(interview)
head(interview)

2단계: 유클리디안 거리 계산
interview_df <- interview[c(2:7)]
idist <- dist(interview_df)
head(idist)

3단계: 계층적 군집 분석
hc <- hclust(idist)
hc

4단계: 군집 분석 시각화
plot(hc, hang = -1)
plot()함수의 “hang = -1” 속성을 이용하여 덴드로그램에서 음수값 제거

5단계: 군집 단위 테두리 생성
rect.hclust(hc, k = 3, border ="red")

군집별 특징 보기

1단계: 군집별 서브 셋 만들기
g1 <- subset(interview, no == 108 | no == 110 | no == 107 |
 no == 112 | no == 115)
g2 <- subset(interview, no == 102 | no == 101 | no == 104 |
 no == 106 | no == 113)
g3 <- subset(interview, no == 105 | no == 114 | no == 109 |
 no == 103 | no == 111)
 
2단계: 각 서브 셋의 요약통계량 보기
summary(g1)
summary(g2)
summary(g3)

군집분석으로 그룹화된 군집은 다변량적 특성이 그룹 내적으로는 동일하고, 외적으로는
이질적인 특성을 갖는다.

2. 비계층적 군집 분석

군집의 수가 정해진 상태에서 군집의 중심에서 가장 가까운 개체를 하나씩 포함해
나가는 방법.

대표적인 방법이 K-means clustering

K-means clustering 방법은 군집 수를 미리 알고 있는 경우 군집 대상의 분포에 따라
군집의 초기값을 설정해 주면, 초기값에서 가장 가까운 거리에 있는 대상을 하나씩
더해가는 방식.

계층적 군집 분석을 통해 대략적인 군집의 수를 파악하고 이를 초기 군집 수로 설정하여
비계층적 군집 분석을 수행하는 것이 효과적

장점: 대량의 자료를 빠르고 쉽게 분류 가능
단점: 군집의 수를 미리 알고 있어야 한다.

K-means 알고리즘에 군집 수를 적용하여 군집별로 시각화

1단계: 군집 분석에 사용할 변수 추출
library(ggplot2)
data(diamonds)
t <- sample(1:nrow(diamonds), 1000)
test <- diamonds[t, ]
dim(test)
head(test)

mydia <- test[c("price", "carat", "depth", "table")]
head(mydia)

2단계: 계층적 군집 분석(탐색적 분석)
result <- hclust(dist(mydia), method = "average")
result
plot(result, hang = -1)

3단계: 비계층적 군집 분석
result2 <- kmeans(mydia, 3)
names(result2)
result2$cluster
mydia$cluster <- result2$cluster
head(mydia)

4단계: 변수 간의 상관계수 보기
cor(mydia[ , -5], method = "pearson")
plot(mydia[ , -5])

5단계: 상관계수를 색상으로 시각화
install.packages("mclust")
library(mclust)
install.packages("corrgram")
library(corrgram)
corrgram(mydia[ , -5], upper.panel = panel.conf)
corrgram(mydia[ , -5], lower.panel = panel.conf)

6단계: 비계층적 군집 시각화
plot(mydia$carat, mydia$price, col = mydia$cluster)
points(result2$centers[ , c("carat", "price")], col = c(3, 1, 2), pch = 8, cex = 5)

3. 군집 분석 정리

군집 분석에서 중요한 사항:
 군집화를 위해서 거리 측정에 사용되는 변인은 비율척도나 등간척도여야 하며,
인구 통계적 변인, 구매패턴 변인, 생활패턴 변인 등이 이용된다.
 군집 분석에 사용되는 입력 자료는 변수의 측정단위와 관계없이 그 차이에 따라
일정하게 거리를 측정하기 때문에 변수를 표준화하여 사용하는 것이 필요하다.
 군집화 방법에 따라 계층적 군집 분석과 비계층적 군집분석으로 분류된다.

군집 분석에 이용되는 변인
 인구 통계적 변인: 거주지, 성별, 나이, 교육수준, 직업, 소득수준 등
 구매패턴 변인: 구매상품, 1회 평균 거래액, 구매획수, 구매주기 등
 생활패턴 변인: 생활습관, 가치관, 성격, 취미 등

군집 분석의 특징
 전체적인 데이터 구조를 파악하는데 이용된다.
 관측대상 간 유사성을 기초로 비슷한 것끼리 그룹화(clustering)한다.
 유사성은 유클리디안 거리를 이용한다.
 분석 결과에 대한 가설검정이 없다.
 반응변수(y변수)가 존재하지 않는 데이터마이닝 기법이다.
 규칙(Rule)을 기반으로 계층적인 트리구조를 생성한다.
 활용분야: 구매패턴에 따른 고객 분류, 충성도에 따른 고객 분류 등

군집 분석의 절차
 분석대상의 데이터에서 군집 분석에 사용할 변수 추출
 계층적 군집 분석을 이용한 대략적인 군집의 수 결정
 계층적 군집 분석에 대한 타당성 검증(ANOVA분석)
 비계층적 군집 분석을 이용한 군집 분류
 분류된 군집의 특성 파악 및 업무 적용

profile

0개의 댓글