본문 바로가기

DATA SCIENCE/MACHINE LEARNING

[R] Clustering Algorithms (kmeans, PAM, CLARA)

1) kmeans
가장 통상적으로 알려진 클러스터링 기법이다.
k개 클러스터 중심(centeroid)를 데이터 내에서 랜덤하게 잡은 뒤, 거리 기반으로 분류를 진행한다.
그리고 각 클러스터에 속한 데이터 평균을 클러스터 중심(centeroid)로 재설정한다.
이러한 알고리즘을 기반으로 진행되는 것이 kmeans 알고리즘이다.
하지만 데이터 '평균'을 이용하므로 이상치에 민감하다는 단점이 있다.

코드) https://heehehe-ds.tistory.com/17

2) PAM(Partitioning Around Medoids)
kmeans의 단점을 보완한 기법으로, 데이터 평균 대신 medoid를 이용한다.
medoid란 클러스터 내에서 가장 중심에 위치한 데이터, 즉 중앙값으로 보면 된다. 
이를 통해 클러스터 내에서 다른 모든 개체들과의 평균거리, 즉 비유사도를 가장 낮게 해주며 이상치에 민감한 단점을 보완해준다.
하지만 데이터 크기가 크면 불안정하다는 단점이 있다.

### pam : cluster 개수 직접 설정
library(cluster)
k <- 3    # cluster 개수 설정
pamResult <- pam(data, k)

# plot으로 확인
par(mfrow=c(1,2))   # plot 화면 2등분해서 보기 위해 설정
plot(pamResult)
par(mfrow=c(1,1))   # 다시 plot 화면 원래대로 돌려놓기 위해 설정

### pamk : 함수에서 적합한 k를 찾아줌
library(fpc)
pamkResult <- pamk(data)

# plot으로 확인
par(mfrow=c(1,2))   # plot 화면 2등분해서 보기 위해 설정
plot(pamkResult)
par(mfrow=c(1,1))   # 다시 plot 화면 원래대로 돌려놓기 위해 설정

3) CLARA
PAM의 단점을 보완한 기법으로, PAM에서 모든 데이터를 사용하지 않고 random sample을 이용하는 것이다.

library(cluster)
k <- 3
claraResult <- clara(data,k)

# 결과 plot 확인
par(mfrow=c(1,2))
plot(claraResult, color=T, shade=T)

# pairplot 확인
par(mfrow=c(1,1))
with(data, pairs(data, col=c(1:k)[claraResult$clustering]))

 


참고자료)
https://bioinformaticsandme.tistory.com/138
http://ropatics.com/data-mining/r-and-data-mining/RDM-Clustering.html
http://slidesplayer.org/slide/15150112
https://win100.tistory.com/167
https://www.datanovia.com/en/lessons/clara-in-r-clustering-large-applications/
https://frhyme.github.io/python-lib/clustering_evaluation/
https://www.kaggle.com/pranav84/lightgbm-experiment-with-clara-algorithm/comments#311343
https://medium.com/analytics-vidhya/partitional-clustering-using-clarans-method-with-python-example-545dd84e58b4

 

 

 

반응형