본문 바로가기
데이터사이언스/인공지능을 처음공부하는 사람들을 위한 글

SMOTE와 SMOTE 변형 기법들을 활용한 oversampling

by 미스터탁 2022. 12. 9.

저번 포스팅에서, 클래스 불균형에 대한 이야기와 해결하기 위한 방법들의 종류에 대해서만 소개하였습니다.

 

https://bluediary8.tistory.com/132

 

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

이진 분류(Binary classification)문제에서 학습되는 모델들은 일반적으로 확률 값을 출력합니다. 그리고 우리는 0.5를 기준으로 하여 1 또는 0으로 분류를 합니다. 즉, 일반적으로 우리는 데이터를 다

bluediary8.tistory.com

 

이번 포스팅에서는 클래스 불균형(Class imbalanced) 문제를 해결 하기 위한 여러 방법들 중 oversampling 방법에 대해 소개하겠습니다. 

 

 

Random over sampling

Oversampling 은 말 그대로 소수의 데이터를 부풀려서 학습하는 모델이 소수 데이터를 무시하지 못하도록 하게하는 방법입니다. 가장 간단한 방법으로는 Random over sampling이 있습니다. 아래 그림처럼 소수의 데이터를 랜덤하게 선택해서 그대로 다시 사용하는 기법입니다. 매우 간단한 방법이지만, 생각 보다 어느정도 좋은 성능을 보이기도 합니다.

 

SMOTE(Synthetic Minority Over-sampling Technique)

SMOTE는 가장 널리 사용되는 oversampling 방법들 중 하나입니다. 소수 클래스 데이터의 sampleKNN을 적용 후, 샘플과 이웃간의 사이에 random하게 데이터를 생성하는 기법입니다. point를 연결하는 segment상에 존재 하는 datarandom sampling 한다라고 볼 수 있습니다. 소수 데이터를 증강 시키면서 많은 경우에 모델의 성능 향상을 이끌 수 있습니다. 그런데 SMOTE의 경우 모든 소수 데이터가 증강시킬 대상이기 되기 때문에, 때에 따라 너무 과하게 sampling하기도 합니다.

아래 그림은 SMOTE전과 후의 decision boundary를 시각화 시킨 그림이며 그때의 F-measure를 표기 하였습니다. 분명 SMOTE를 적용한 이후에, 성능이 올라간 것을 확인 할 수 있지만, 조금 과하게 decision boundary가 커졌다라는 것을 알 수 있습니다. 이 데이터는 2차원의 데이터이기 때문에 시각화를 시켜서 확인이 가능하지만, 고차원의 데이터의 경우에는 SMOTE를 적용한 이후에, decision boundary가 커졌는지 확인하기는 어렵습니다.  

 

Borderline SMOTE (BLSMOTE)

기존 SMOTE의 단점을 보완하기 위한 방법론들이 많이 개발되었는데, 그 중 대표적인것이 BLSMOTE입니다. 소수 데이터의 군집에서 가운데 있는 데이터들과 outlier라 판단 되는 데이터들을 제외하고 군집의 borderline에 걸친 데이터들만 찾아서 SMOTE를 적용하자는 컨셉입니다. 즉 과하게 oversampling되는 것을 막고 decision boundary에 좋은 영향을 끼치는 데이터들만 찾아서 oversampling 시키겠다라는 것입니다.

우선 Minority 데이터에 대하여 세개의 category로 분류(safe, borderline, noise)합니다. 그리고 Minority 데이터에 대하여 이웃 데이터를 찾아 그 중 절반이상이 Majority 데이터라면 borderline에 있다고 판단합니다. 최종적으로. Borderline data에 대하여 SMOTE적용합니다.

 

 

아래 그림을 보시면 SMOTE에 비해 BLSMOTE가 확실히 적은 양의 데이터를 oversampling 시켰으며, 학습한 decision boundary 또한 과하게 커지는것이 방지 되었다라는 것을 확인 할 수 있습니다. 

 

DBSCAN SMOTE(DBSMOTE)

DBSMOTE는 DBSCAN 기법을 활용한 SMOTE기법입니다. DBSCAN은 하이퍼 파라미터에 따라 outlier cluster를 만들 수 있고, 이 이점을 활용하면 outlier를 제외한 cluster들에 대하여 oversamping시킬 수 있는 장점이 있습니다.우선 Minority data에 대하여 DBSCAN cluster 생성하고 clustercentroiddata 사이의 segment 상에서 새로운 데이터를 random sampling시킵니다.

DBSMOTE 또한 BLSMOTE처럼 과하지 않게 oversampling 된것을 확인 할 수 있고, decision boundary또한 적절하게 형성 된것을 확인 할 수 있습니다. 해당 데이터에 대해서는 DBSMOTE가 F-measure성능이 가장 잘 나온것을 확인할 수 있습니다.

 

 

SMOTE, BLSMOTE, 그리고 DBSMOTE의 결과를 함께 비교하면 아래 그림과 같습니다. 해당 예시에선 DBSMOTE가 가장 좋은 결과를 보였지만, 사실 resampling기법은 데이터에 따라 편차가 매우 심합니다. 그렇기 때문에 resampling를 적용 시킬때에는 3~5가지 이상 기법을 사용하고 비교하는 것을 권장 해 드립니다. 그리고 BLSMOTE가 DBSMOTE가 적절히 oversampling 시켰다고하자 여전히,소수데이터에 대하여 over-generalization되는 경향성이 있습니다. 

반응형

댓글