본문 바로가기
R/Machine-Learning

R을 이용한 머신러닝 알고리즘 -군집분석 1-

by 씩2 2022. 3. 7.

이번 포스팅에서는 군집분석을 이용한 분류를 해보기로 했습니다.

군집분석이란 비지도 학습으로서 각 데이터의 유사성을 측정하여 다수의 클러스터로 나누고 각 클러스터간의 상이성을 판단하는 분석입니다. 군집 분석은 계층적 방법과 비계층적 방법으로 나뉩니다.

이번 포스팅에서 는 계층적 방법에대한 설명과 함께 R로 직접 분석을 해보도록 하겠습니다.

우선 계층적방법은 다음과 같습니다. 계층분석 방법에서는 병합적방법과 분할적 방법을 통해 분석을 실시합니다.

병합적방법이란 가까운 관찰단위끼리 군집을 형성하는것을 말하고 , 분할적 방법은 거리가 먼 관찰단위들을 나누어 나가는 것을 의미합니다.

또한 계층적분석에는 여러 알고리즘이 존재합니다. 알고리즘의 경우는 다음과 같습니다

최단 연결법은 가장 짧은 거리의 관측치끼리 군집을 형성합니다. 최장 연결법은 가장 먼 거리를 기반으로 군집을 형성합니다.

평균 연결법은 모든 관측치간의 거리의 평균을 이용하여 군집을 형성합니다. 와드 연결법은 군집내 편차들의 제곱합을 이용하여 군집을 형성 합니다. 

이론적인 포스팅은 완료되었고 이제 R 코드를 이용하여 직접 분류를 해보겠습니다.

data(USArrests)
str(USArrests)
d <- dist(USArrests, method = 'euclidean')
fit <- hclust(d, method = 'ave')

windows()
par(mfrow = c(1,2))
plot(fit)
plot(fit, hang = -1) # hang - 길이의 조절

par(mfrow = c(1,1))
groups <- cutree(fit, k = 6)
groups
windows()
plot(fit)
rect.hclust(fit, k = 6, border = 'red')

데이터셋은 USArrests(내장셋)를 이용하겠습니다. 

dist()함수로 각 변수의 거리를 구해줍니다 여기서 method는  "euclidean" , "maximum" , "manhattan" , "canberra" , "binary"  "minkowski" 를 이용 할 수 있습니다.

hclust()함수를 이용하면 군집분석을 실행할수있습니다. 위의 경우 알고리즘을 평균연결법을 이용하겠습니다.

마지막으로 군집을 6개로 나눈뒤 그래프로 시각화하는 함수입니다.

평균연결법으로 분류를 실행한 모습입니다. 6개의 경계로 나누어진것을 볼 수 있습니다.

이것으로 계층적 방법으로 군집분석 포스팅을 마치겠습니다.