BookmarkSubscribeRSS Feed

[EM] Dealing with imbalanced data - Under Sampling, Over Sampling

Started ‎06-10-2020 by
Modified ‎06-10-2020 by
Views 225

안녕하세요 MySAS홍보대사 한노아입니다.

이번 시간부터는 지난시간부터 알아본 계급불균형 자료 문제를 해결할 수 있는 방법에 대해 하나하나 차근차근 알아보도록 하겠습니다.

 

INTRODUCTION

계급불균형자료의 경우 분류기의 학습알고리즘의 특성에 의해 높은 정분류율에도 불구하고 의미 없는 모형이 만들어지는 정확도의 역설 문제가 발생한다는 사실을 지난시간 연재를 통해 알아보았습니다. 따라서 이번 시간부터는 지난 시간에 알아본 이론적인 방법들을 E-miner를 통해 직접 구현하는 방법에 대해 알아보도록 하겠습니다.  

 

1. Under-Sampling , Over-Sampling(단순 임의 추출)

2. Over-Sampling(복원추출), Under&Over-Sampling

3. 비용함수를 이용한 방법 - Decision 노드 활용

4. 모형을 이용한 방법 – RUSBoost, UnderBagging 등

5. SMOTE – Macro를 이용한 방법과 Open Source Integration 노드를 이용한 방법

* 위 순서는 구현 난이도에 따른 것 입니다.

 

오늘은 그 첫 번째 순서로 EM의 샘플링 노드를 이용한 Under-Sampling방법과 Over-Sampling방법을 실습해 보도록 하고, 이를 적용하여 모델링에 이용하는 방법을 알아보겠습니다.

 

SAMPLEING METHODS

1. Under-Sampling

SE22017022315094070.jpg

그림 1 : Under-Sampling

Under-Sampling방법은 [그림 1]을 보면 알 수 있듯 다수 계급에 포함되는 관측치를 소수계급의 숫자만큼 임의 추출하는 방법입니다. 장점은 구현이 간단하고 정보의 왜곡이 비교적 적게 발생(없는 데이터를 생성하는 것은 아니기 때문에)한다는 점입니다. 반면 단점으로는 정보손실이 발생(다수 계급의 데이터를 소수계급의 건수만큼만 활용이 가능함)한다는 것입니다.

 

 

2. Over-Sampling

SE22017022315095670.jpg

그림 2 : Over-Sampling

단순임의 추출에 의한 Over-Sampling방법은 소수계급에 해당하는 관측치는 모두 이용하고, 다수 계급의 관측치를 소수계급보다 더 적게 임의 추출하는 것입니다. 가령 소수계급의 관측치의 수가 200개 다수 계급의 관측치의 수가 800개인 경우 다수 계급에서 150개를 임의 추출하여 전체 균형비를 3:4로 조정하는 것입니다. 이렇게 할 경우 다수계급에 대한 정보 손실은 일반적인 Under-Sampling방법보다 크지만 소수계급에 대한 가중치가 증가하는 효과를 얻을 수 있습니다. 하지만 이 방법 역시 다수계급에서 정보의 손실이 발생한다는 단점이 존재합니다.

 

 

METHODOLOGY

1. Under-Sampling

1.PNG

그림 3 : Under-Sampling Node option

[그림 3]은 Under-Sampling을 구현하기위한 노드 옵션입니다. 먼저 크기에서 [백분율]은 표본추출에 이용할 총 데이터의 수를 의미하기 때문에 100%로 설정해 주어야 합니다. 그 다음 [층화]항목의 [기준]을 동일로 설정하면 Target변수의 level의 비율이 서로 동일하도록 샘플링이 진행됩니다.

 

 

4-1.png

그림 4 : Under-Sampling 결과

[그림 4]는 이전 연재에서 자주 이용했던 Universal Bank데이터를 Sample노드를 이용해 Under-Sampling을 진행한 결과에 대한 [결과]창의 일부입니다. 노드의 이름의 경우 직관적인 이해를 편하게 하기위해서 제가 임으로 변경했습니다. 상단의 Data는 입력된 데이터를 의미하고 Target변수의 레벨에 따른 비율 및 관측치의 수가 나타나 있습니다. 그리고 하단의 Sample항목은 샘플링 노드에 의해서 표본이 추출된 결과를 나타냅니다. 보시는 바와 같이 소수계급의 Target에 맞게 비율이 조정된 것을 알 수 있습니다.

 

2. Over-Sampling

3.PNG

그림 5 : Over-Sampling Node option

[그림 5]는 Over-Sampling를 위한 표본추출 노드의 옵션입니다. 먼저 [백분율]의 경우 Under-Sampling에서와 동일한 의미를 갖습니다. 차이 점은 [층화]항목에서 [기준]을 [레벨기반]으로 변해 주어야 한다는 것입니다. 의미는 “층화 추출을 할 것인데 Target변수의 level의 비율에 기반한 추출을 하겠다.”입니다. 

 

그리고 [레벨 기반 옵션]항목의 [레벨 선택]항목에서 [희귀 레벨]을 선택해 줍니다. [레벨 선택]항목에서는 [이벤트]와 [희귀 레벨] 두 가지 옵션을 선택하는 것이 가능한데 [이벤트]항목의 경우 Target변수를 내림차순으로 정렬하여 기준 계급을 정하기 때문에 소수계급이 1인 경우에는 문제가 되지 않지만 0인 경우에는 의도하지 않은 방향으로 샘플링이 진행 될 수 있습니다. 반면 [희귀 레벨]옵션의 경우 순서와 관계없이 level 비율이 더 적은 Target의 레벨을 기준으로 추출이 이뤄지기 때문에 그러한 문제가 발생하지 않습니다.

 

[레벨 비율]옵션은 소수계급에 속하는 데이터를 얼마나 이용할 것인가에 대한 옵션입니다. 100%를 이용하면 우리 데이터의 경우 약 480명의 반응 집단이 존재하기 때문이 이를 전부 이용할 수 있게 됩니다. 그 다음 [표본 비율]옵션은 샘플링 노드의 결과로 얻어질 데이터에서 희귀 레벨의 비율을 몇으로 할 것인가 하는 것에 관한 옵션입니다. 가령 60%로 옵션을 지정하게 되면 480명이 전체의 60%를 차지하도록 다수 레벨에서 320명을 랜덤 추출하게 됩니다.

 

4.PNG

그림 6 : Over-Sampling 결과

[그림 6]은 Over-Sampling노드에 의한 샘플링 결과입니다. 이번에도 Under-Sampling과 마찬가지로 직관적인 이해를 돕기 위해 샘플링 노드의 이름을 Ove-Sampling으로 변경하였습니다. 결과창의 경우 앞선 Under-Sampling과 동일하게 Data 항목은 입력 데이터의 Target에 대한 level비율 및 백분율을 나타내고 Sample항목은 샘플링 결과를 나타냅니다. 차이점은 앞선 Under-Sampling의 경우 백분율이 50:50으로 동일했지만 Over-Sampling의 경우 40:60으로 소수계급이 더 많은 비율을 차지하고 있는 것을 알 수 있습니다.

 

 

 

PREDICTIVE MODELING

이번 순서에서는 앞서 살펴본 Sampling노드들을 응용해 직접 모형을 적합하고 평가하는 방법에 대해 알아보도록 하겠습니다. 일반적으로 모형의 적합도를 평가할 때 샘플링이 추가되는 경우 조심해야하는 경우가 많습니다. 가령 표본의 숫자를 복원추출을 통해 늘린 경우에는 학습용 데이터와 평가용 데이터가 상호 배타적이지 않아 학습에 이용된 데이터가 평가에 그대로 이용 될 수 있기 때문입니다.

 

사실 앞서 살펴본 [표본추출]노드를 이용한 샘플링 방법들의 경우 위 사안에 해당하지 않기 때문에 사전에 Under또는 Over Sampling을 수행한 뒤 데이터 분할을 하여 모형을 평가해도 무관합니다. 하지만 그렇게 될 경우 평가용으로 쓰일 수 있는 많은 샘플들을 잃게 되기 때문에 저 같은 경우 먼저 데이터 분할을 하고 모형을 적합하고 평가하는 방법을 주로 이용합니다.

 

5.PNG

그림 7 : Diagram

[그림 7]은 샘플링의 효과가 실제로 있는 검증해 보기 위한 다이어그램 입니다. [Impute], [Transformation]노드 등은 결측값을 대체하고 변수를 좀 더 정규분포에 가까운 형태로 변환하기 위해 이용하는 노드들입니다. 그 다음 데이터 분할 노드를 이용해 Tarin/Validate 으로 데이터를 분할 했고, 그 비는 70:30을 이용했습니다. 

 

참고로 [표본추출]노드의 경우 학습용 데이터를 입력 받아 샘플링을 하고 다시 학습용 데이터만을 내보내는 형식으로 구성되어 있습니다. 때문에 데이터 분할을 사전에 했더라도 샘플링 노드를 거치고 나면 Train 데이터만 남게 되어서 평가용 데이터를 이용한 평가가 어렵습니다(제가 방법을 모르는 것일 수도 있습니다) 그래서 저 같은 경우 아래 SAS 코드 노드를 활용해 Validation 데이터만을 내보내도록 설정했습니다. SAS 코드 내부코드는 [코드 편집기]항목의 […]을 이용해 수정해 주시면 됩니다. 

 

 

SAS 코드 노드 내부 코드

 

     %let EM_TRAIN_SCORE = N;

 

 

 

6.PNG

그림 8 : SAS 코드 노드를 이용한 Train 데이터 reject결과

별다른 코드는 없고 위와 같이 EM_TRAIN_SCORE를 N으로 지정해주면 됩니다. 이렇게 하면, [그림 8]처럼 내보낸 데이터에서 Train 데이터가 기각되게 됩니다. 

 

“Non-sampled” 라고 명명되어 있는 노드는 [컨트롤 포인트]노드로 EM에서 버퍼처럼 아무런 작업을 하지 않는 노드입니다. 종종 선정리를 하거나 아니면 위와 같이 아무 처리도 하지 않았음을 나타내기 위해 이용합니다. 의사결정 나무의 경우에는 모두 기본옵션을 그대로 이용하였습니다.

 

GOODNESS-OF-FIT

7.PNG

그림 9 : 모형평가 결과

[그림 9]는 각 모형에 대한 평가 결과입니다. 보시는 바와 같이 Sampling을 이용한 노드들이 비교적 특이도가 높은 것을 알 수 있습니다. 보통 계급불균형 자료에 의한 모형적합 결과를 평가할 때는 KS통계량, AU-ROC와 같은 지표와 파이계수 등이 이용됩니다. 저 같은 경우에는 실질적인 소수계급에 대한 분류 정확도를 살피기 위해서 특이도를 주로 살펴봅니다. 다시 [그림 9]를 살펴보면 민감도의 경우에는 샘플링을 하지 않는 의사결정 나무가 높은 것을 알 수 있습니다. 

 

즉, 샘플링 기법을 적용하게 되면 소수계급에 대한 정확도가 대폭 상승하는 반면 다수 계급에 대한 분류 정확도는 다소 감소하게 된다는 것을 알 수 있습니다. 참고로 위 데이터의 경우 시뮬레이션 데이터로 비교적 모형적합이 쉽고 유의미한 변수들이 많은 경우이기 때문에 위와 같이 계급불균형 자료임에도 불구하고 말도 안되게 높은 특이도를 나타냈지만 일반적으로는 불균형 자료를 그대로 이용하게 되면 보통 높아봐야 30%정도 대의 특이도를 나타내는 경우가 빈번합니다. 따라서 그런 경우에는 랜덤하게 찍어서 맞추는 확률 50%보다 낮기 때문에 큰 의미가 없는 모형이라고 생각할 수 있을 것입니다. 

 

 

CONCLUSION

이번 연재에서는 지난 연재에서 살펴봤던 계급불균형 문제를 해결할 수 있는 방법 중 하나인 샘플링 방법에 대해 알아봤습니다. 샘플링 노드의 옵션을 조금만 조정하면 매우 간단하게 불균형 문제를 일부 해결할 수 있었고, 모형 평가의 경우 저와 같이 데이터 분할을 하고 따로 평가형 데이터를 추출하는 방법을 이용할 수도 있지만 그렇지 않고 균형비를 맞춘 뒤에 데이터 분할을 이용해도 무관하다는 사실도 말씀드린 바 있습니다. 결과적으로 소수계급에 대한 예측력 즉 특이도의 경우 기존 모형에 비해서 샘플링 모형이 위 데이터의 경우엔 소폭 상승한 것을 알 수 있었습니다. 위와 같은 시뮬레이션 데이터가 아닌 경우에는 그 파급효과가 더욱 크다는 점도 말씀드렸습니다. 그럼 오늘 연재는 여기서 마무리하고 다음 시간에는 마이너한 계급의 데이터를 복원추출을 통해 생성하여 불균형 문제를 해결하는 두 가지 방법에 대해 알아보도록 하겠습니다.

 

 

REFERENCES

[1] Wang Ruizhe, Lee Novik, Wei Yun. 2015. “A Case Study: Improve Classification of Rare Events with SAS Enterprise Miner." Proceedings of the SAS Global Forum 2015 Conference, 3282-2015.

[2] Guzman Lina. 2015. “Data sampling improvement by developing SMOTE technique in SAS." Proceedings of the SAS Global Forum 2015 Conference, 3483-2015.

 

 

Version history
Last update:
‎06-10-2020 04:40 AM
Updated by:
Contributors

sas-innovate-white.png

🚨 Early Bird Rate Extended!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.

 

Lock in the best rate now before the price increases on April 1.

Register now!

Article Labels
Article Tags