본문 바로가기
R프로그래밍

[R 프로그래밍] SMOTE/BLSMOTE/DBSMOTE 적용하기

by 미스터탁 2022. 12. 9.

SMOTE관련 패키지는 smotefamily입니다. 패키지를 설치해주고 library를 호출해줍니다.

 

install.packages("smotefamily")
library(smotefamily)

사용방법은 매우 간단합니다.

 

 

독립변수들로 구성된 data와 target variable를 각각 넣어주시고, hyper-parameter인 (K와 dup_size) 를 설정해주시면됩니다. 아래 코드에서, added_data에는 생성된 데이터가 들어가며, new_data에는 생성된 데이터와 기존 데이터가 함께 합쳐져서 들어갑니다. new_y는 기존 y값과 새로운 y값이 합쳐져서 들어가집니다.

## 2차원 가상 데이터 생성
data_example = sample_generator(5000,ratio = 0.80)
smote1 = SMOTE(data_example[,-3],target = data_example[,3], K = 5, dup_size = 1)
added_data<-smote1$syn_data[,-ncol(smote1$data)]
new_data<-smote1$data[,-ncol(smote1$data)]
new_y<-smote1$data[,ncol(smote1$data)]

 

BLSMOTE와 DBSMOTE도 마찬가지 방식으로 사용하시면 됩니다. 단 DBSMOTE의 경우, 'igraph' 패키지를 필요로 하기때문에 이를 설치하신 후 사용하셔야 합니다. 

blsmote1 = BLSMOTE(data_example[,-3],data_example[,3])
added_data<-blsmote1$syn_data[,-ncol(blsmote1$data)]
new_data<-blsmote1$data[,-ncol(blsmote1$data)]
new_y<-blsmote1$data[,ncol(blsmote1$data)]

# install.packages("igraph")
library(igraph)

dbsmote1 = DBSMOTE(data_example[,-3],data_example[,3])
added_data<-dbsmote1$syn_data[,-ncol(dbsmote1$data)]
new_data<-dbsmote1$data[,-ncol(dbsmote1$data)]
new_y<-dbsmote1$data[,ncol(dbsmote1$data)]

 

각 방법들에 대한 간단한 설명은 다음 포스팅에서 보실 수 있습니다.

 

https://bluediary8.tistory.com/143

 

DS/AI를 공부하기 위해 알아두면 좋은 것 8 - 클래스 불균형(Class imbalanced) 문제2

저번 포스팅에서, 클래스 불균형에 대한 이야기와 해결하기 위한 방법들의 종류에 대해서만 소개하였습니다. https://bluediary8.tistory.com/132 DS/AI를 공부하기 위해 알아두면 좋은 것 8 - 클래스 불균

bluediary8.tistory.com

 

반응형

댓글