1.4 비계층적 군집 분석
군집의 수가 정해진 상태에서 군집의 중심에서 가장 가까운 개체를 하나씩 포함해 나가는 방법.
대표적인 방법이 K-means clustering
K-means clustering 방법은 군집 수를 미리 알고 있는 경우 군집 대상의 분포에 따라 군집의 초기값을 설정해 주면, 초기값에서 가장 가까운 거리에 있는 대상을 하나씩 더해가는 방식.
계층적 군집 분석을 통해 대략적인 군집의 수를 파악하고 이를 초기 군집 수로 설정하여 비계층적 군집 분석을 수행하는 것이 효과적
장점: 대량의 자료를 빠르고 쉽게 분류 가능
단점: 군집의 수를 미리 알고 있어야 한다.
실습 (K-means 알고리즘에 군집 수를 적용하여 군집별로 시각화)
ggplot2패키지에서 제공하는 diamonds데이터
셋 대상 계층적 군집 분석으로 군집 수를 파악
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)
hclust(): 계층적 군집분석을 실시할때 사용
3단계: 비계층적 군집 분석
result2 <- kmeans(mydia, 3)
names(result2)
result2$cluster
mydia$cluster <- result2$cluster
head(mydia)
kmeans(): 데이터 행렬에 대해 k-평균 군집화를 수행
4단계: 변수 간의 상관계수 보기
cor(mydia[ , -5], method = "pearson")
plot(mydia[ , -5])
cor(): var, cov 및 cor는 x의 분산과 x와 y의 공분산 또는 상관관계를 계산한다. x와 y가 행렬이면 x의 열과 y의 열 사이의 공분산(또는 상관 관계)이 계산됨.
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)
corrgram: corrgram 함수는 상관 행렬의 그래픽 표시를 생성하며, 이를 상관 그래프이다. 행렬의 셀은 상관 값을 표시하기 위해 음영 처리되거나 색칠될 수 있음.
6단계: 비계층적 군집 시각화
plot(mydia$carat, mydia$price, col = mydia$cluster)
points(result2$centers[ , c("carat", "price")],
col = c(3, 1, 2), pch = 8, cex = 5)
'R > 머신러닝 & 딥러닝' 카테고리의 다른 글
[R] 앙상블 기념 및 실습 (랜덤 포레스트) (0) | 2022.11.12 |
---|---|
[R] 앙상블 기념 및 실습 (배깅) (0) | 2022.11.12 |
[R] 군집분석 (1), 계층적 군집 분석 (0) | 2022.11.11 |
[R] 변수제거 개념 및 실습 (0) | 2022.11.11 |
[R] 다차원 척도법 개념 및 실습 (0) | 2022.11.11 |