Hierarchical clustering (R 계층적 군집화) Start

BioinformaticsAndMe






Hierarchical clustering (R 계층적 군집화)

: 주어진 데이터에서 모든 두 군집간의 거리를 계산하는 알고리즘 (데이터의 이진트리 구성)

ㄱ) 가장 가까운 거리에 있는 데이터를 서로 묶음 (반복 수행)

ㄴ) 최종적으로 하나의 클러스터로 합쳐질 때까지 진행

ㄷ) Dendrogram 형태의 자연적인 계층 구조로 정렬






Cluster Linkage

: 두 클러스터 간 거리 측정에서 기준점 삼을 데이터를 결정하는 방법

: Linkage 알고리즘에 따라 클러스터 형태가 다르기에, 주어진 데이터에 적절한 Cluster Linkage를 적용

ㄱ) Single Linkage: 두 클러스터 간 가장 가까운 거리를 사용

ㄴ) Complete Linkage: 두 클러스터 간 가장 먼 거리를 사용

ㄷ) Average Linkage: 클러스터 내 모든 데이터와, 다른 클러스터 내 모든 데이터 사이의 거리 평균을 사용




Hierarchical clustering 과정

1) iris 데이터 전처리

# 1~150 사이에서 랜덤하게 40개 추출 idx <- sample(1:nrow(iris), 40) # 랜덤하게 뽑혀진 40개 숫자 인덱스에 대응하는 iris 행 추출 irisSample <- iris[idx,] # Species 칼럼 제거 irisSample$Species <- NULL

2) hclust 함수로 계층적 클러스터링 수행

# dist 함수는 데이터 간 거리 계산 (거리가 멀수록 차이가 큼)

hc <- hclust(dist(irisSample), method="average")

Call:
hclust(d = dist(irisSample), method = "average")

Cluster method   : average 
Distance         : euclidean 
Number of objects: 40 
3) 계층적 클러스터링 시각화 

# 'hang=-1' 은 모든 데이터의 y축(height)을 0부터 시작하게 함

plot(hc, hang=-1, labels=iris$Species[idx])

4) Dendrogram을 3개 클러스터로 나누기

# 'k=3' 은 3개의 클러스터 생성을 의미

rect.hclust(hc, k=3)

5) 각 데이터가 속한 클러스터 확인

groups <- cutree(hc, k=3) groups

 98  73  34  68 133  79  95 150 136  71 123  36 118  42  38  49 117  97  19 129 120  53 149  75 115  89 
  1   1   2   1   1   1   1   1   3   1   3   2   3   2   2   2   1   1   2   1   1   1   1   1   1   1 
143  47  18 147  55  57  10 111 134  54  17  48 100 102 
  1   2   2   1   1   1   2   1   1   1   2   2   1   1







#Reference

1) https://rstudio-pubs-static.s3.amazonaws.com/249084_09c0daf4ceb24212a81ceddca97ba1ea.html

2) http://ropatics.com/data-mining/r-and-data-mining/RDM-Clustering.html

3) https://www.brandidea.com/hierarchicalclustering.html

4) http://blog.naver.com/PostView.nhn?blogId=wjddudwo209&logNo=220046493579&parentCategoryNo=&categoryNo=42&viewDate=&isShowPopularPosts=true&from=search

5) http://girke.bioinformatics.ucr.edu/GEN242/pages/mydoc/Rclustering.html

6) https://bcho.tistory.com/1204




Hierarchical clustering (R 계층적 군집화) End

BioinformaticsAndMe

'R' 카테고리의 다른 글

[R] p value 보정  (0) 2019.10.14
[R Shiny] 샤이니 소개  (0) 2019.10.06
K-medoids clustering (R PAM)  (0) 2019.09.30
K-means clustering (R 군집분석)  (0) 2019.09.24
if, else, else if, ifelse (R 조건문)  (0) 2019.09.16

+ Recent posts