이번 포스팅에서는 군집분석을 이용한 분류를 해보기로 했습니다.
군집분석이란 비지도 학습으로서 각 데이터의 유사성을 측정하여 다수의 클러스터로 나누고 각 클러스터간의 상이성을 판단하는 분석입니다. 군집 분석은 계층적 방법과 비계층적 방법으로 나뉩니다.
이번 포스팅에서 는 계층적 방법에대한 설명과 함께 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개의 경계로 나누어진것을 볼 수 있습니다.
이것으로 계층적 방법으로 군집분석 포스팅을 마치겠습니다.
'R > Machine-Learning' 카테고리의 다른 글
R을 이용한 머신러닝 알고리즘 -부스팅- (0) | 2022.03.12 |
---|---|
R을 이용한 머신러닝 알고리즘 -배깅- (0) | 2022.03.12 |
R을 이용한 머신러닝 알고리즘 -랜덤포레스트- (0) | 2022.03.12 |
R을 이용한 머신러닝 알고리즘 -로지스틱회귀분석- (0) | 2022.03.10 |
R을 이용한 머신러닝 알고리즘 -군집분석 2- (0) | 2022.03.07 |