데이터마이닝 13강 — 군집분석 R 함수 총정리
안녕하세요! 이번 포스팅에서는 데이터마이닝 13강: 군집분석 R 함수와 사용 예제를 초보자분들도 쉽게 이해할 수 있도록 정리해보겠습니다.
군집분석을 R로 수행할 때 꼭 알아야 하는 함수들과 그 사용법을 자세히 설명드릴게요.
1. 군집분석 관련 R 함수
dist() 함수
행 사이의 거리(비유사성)를 계산하는 함수입니다.
함수 구조
1
|
dist(x, method = “euclidean”)
|
cs |
-
x
: 거리 계산 대상 데이터 행렬 -
method
: 거리 계산 방법 (“euclidean”, “manhattan” 등)
설명
-
거리 계산 후 비유사성 행렬 형태로 반환
-
hclust()
같은 군집화 함수에 사용
hclust() 함수
계층적 군집분석(응집형)을 수행하는 함수입니다.
함수 구조
1
|
hclust(dist, method = “complete”)
|
cs |
-
dist
: dist()로 계산한 거리 행렬 -
method
: 군집화 방법 (“single”, “complete”, “average”)
diana() 함수
분할형 계층적 군집분석을 수행하는 함수입니다.
(cluster 패키지 설치 필요)
함수 구조
1
|
diana(x, metric = “euclidean”)
|
cs |
-
x
: 데이터 프레임 또는 행렬 -
metric
: 거리 계산 방법
kmeans() 함수
K-평균 군집분석을 수행하는 함수입니다.
함수 구조
1
|
kmeans(x, centers, algorithm = “Hartigan-Wong”)
|
cs |
-
x
: 데이터 행렬 -
centers
: 군집 개수 또는 초기 중심점 좌표 행 -
algorithm
: 군집화 알고리즘 (“Hartigan-Wong” 기본, “MacQueen” 가능)
주요 알고리즘 설명
알고리즘 | 특징 |
---|---|
"Hartigan-Wong" |
기본 알고리즘, 가장 빠르고 안정적. 대부분의 경우 적합. |
"MacQueen" |
실시간 업데이트 방식, 반복마다 중심점 갱신. 소규모 데이터에 적합. |
"Lloyd" |
조금 단순한 방식, 대규모 데이터에도 사용 가능. |
plot() 함수
군집화 결과를 시각화할 때 사용
함수 구조
1
|
plot(object)
|
cs |
-
object
: hclust, diana 결과 객체
cutree() 함수
군집 개수에 따라 각 데이터의 군집 번호를 반환하는 함수
함수 구조
1
|
cutree(tree, k = )
|
cs |
-
tree
: hclust, diana 결과 -
k
: 원하는 군집 수
table() 함수
빈도표(분할표)를 생성하는 함수
함수 구조
1
|
table(…)
|
cs |
-
...
: 범주형 변수
tapply() 함수
범주별로 요약통계를 계산하는 함수
함수 구조
1
|
tapply(x, indices, FUN)
|
cs |
-
x
: 데이터 값 -
indices
: 범주형 인덱스 -
FUN
: 적용할 함수 (mean, sum 등)
2. R 사용 예제
예제 코드
코드 설명
-
2열짜리 행렬 생성 : (1,2), (3,6), (7,8) 세 개의 2차원 좌표 데이터
-
관측치 간 유클리드 거리 계산 :
dist()
함수는 관측치 간 거리 행렬을 만듦. -
거리 행렬을 가지고 계층적 군집분석 수행
-
method = "complete"
: 군집 간의 최대 거리 기준으로 병합 (Complete linkage)
-
-
군집 형성 과정을 덴드로그램으로 시각화 : 세 개의 점이 어떤 순서로 병합되는지 확인 가능
-
덴드로그램을 k=2개의 군집으로 자르기
-
cutree()
로 군집 번호 부여 -
결과 : 각 데이터가 속한 군집 번호 확인 → 첫 번째, 두 번째 데이터는 1번 군집 / 세 번째 데이터는 2번 군집
-
-
각 군집별로 첫 번째 변수(data[,1])의 평균 계산
-
tapply()
: 그룹별 함수 적용 -
각 군집의 평균값을 확인할 수 있음
-
중요 내용 정리
-
dist() : 거리 행렬 생성
-
hclust() : 계층적 군집분석
-
diana() : 분할형 계층적 군집분석
-
kmeans() : K-평균 군집분석
-
plot() : 군집분석 결과 시각화
-
cutree() : 군집 번호 할당
-
table() : 빈도표 생성
-
tapply() : 군집별 통계 계산
객관식 문제
1. K-평균 군집분석을 수행하는 함수는?
① dist()
② hclust()
③ kmeans()
④ diana()
정답: ③
해설: kmeans() 함수는 비계층적 K-평균 군집분석을 수행합니다.
2. 계층적 군집분석에서 군집 수를 정하고 군집 번호를 할당할 때 사용하는 함수는?
① cutree()
② table()
③ plot()
④ tapply()
정답: ①
해설: cutree() 함수는 hclust 결과로부터 군집 수를 정해 군집 번호를 반환합니다.
3. hclust() 함수에서 군집화 방법을 정하는 옵션명은?
① centers
② method
③ metric
④ FUN
정답: ②
해설: hclust() 함수의 method 옵션은 단일연결법, 완전연결법 등을 선택합니다.