Data Science/Statistics

resampling으로 imbalanced data(불균형 데이터 문제) 해결하기

준나이 2018. 12. 6. 20:15

Resampling으로 imbalanced data(불균형 데이터 문제) 해결하기

imbalanced data : 데이터 내 각각의 class들이 차지하는 데이터의 비율이 균일하지 않고 한쪽으로 치우친 데이터

major class : dataset 내에서 상대적으로 다수를 차지하는 class

minor class : dataset 내에서 상대적으로 다수를 차지하는 class


imbalanced data와 같은 문제에 처했을 때 보통 classification algorithm의 성능을 향상시키거나, 학습 전에 resampling을 통해 training set내의 클래스를 균형을 맞춘다. 보편적으로 이 중에서 후자가 선호된다. Resampling 방법은 dataset 내에서 minor class의 비중을 높이거나 (over-sampling) major class의 비중을 낮춰서 (under-sampling) 클래스의 균형성을 유지함으로써 대략적으로 class마다 비슷한 수의 instance를 갖게 하는게 목적이다.




1. Random Under-Sampling


Random Under sampling은 높은 비중을 차지하는 클래스의 값들을 임의로 제거하는 방법

Total Observations = 1000
Fraudulent Observations =20
Non Fraudulent Observations = 980
Event Rate= 2 %

In this case we are taking 10 % samples without replacement from Non Fraud instances.

And combining them with Fraud instances.

Non Fraudulent Observations after random under sampling = 10 % of 980 =98
Total Observations after combining them with Fraudulent observations = 20+98=118
Event Rate for the new dataset after under sampling = 20/118 = 17%

장점 :
    (training set이 충분 할 때) training set의 크기를 줄임으로써 실행 시간과 용량을 줄일 수 있다.

단점:
    - classifier를 만들때 유용하게 사용될 수 있는 data가 유실 될 수 있다.
    - 임의적으로 뽑은 sample이 편향(biased) 됐을 수도 있고 모집단을 대표하지 않을 수도 있다.

이로 인해 test set에서는 부정확한 결과가 초래 할 수 있다.




2. Random Over-Sampling


minor class의 instance를 임의로 복제하여 그 수를 늘리는 것


Total Observations = 1000
Fraudulent Observations =20
Non Fraudulent Observations = 980
Event Rate= 2 %

In this case we are replicating 20 fraud observations 20 times.


Non Fraudulent Observations =980
Fraudulent Observations after replicating the minority class observations= 400
Total Observations in the new data set after oversampling=1380
Event Rate for the new data set after under sampling= 400/1380 = 29 %

장점 :
    under sampling 처럼 data를 잃지 않는다.
    under-sampling 보다 성능이 뛰어 나다.

단점 :
    minor class를 판별(prediction) 시 overfitting 될 가능성이 있다.


3. Cluser-Based Over Sampling


dataset 내의 cluster들을 분별하기 위해 major class, minor class에 k-means clustering을 각각 적용한다. 그 후에, 각각의 클러스터는 oversample되어 동일한 클래스내에 존재하는 클러스터들은 같은 수만큼의 instance를 갖게되고 모든 클래스는 같은 사이즈가 된다.

Total Observations = 1000
Fraudulent Observations =20
Non Fraudulent Observations = 980
Event Rate= 2 %

Majority Class Clusters
Cluster 1: 150 Observations
Cluster 2: 120 Observations
Cluster 3: 230 observations
Cluster 4: 200 observations
Cluster 5: 150 observations
Cluster 6: 130 observations

Minority Class Clusters
Cluster 1: 8 Observations
Cluster 2: 12 Observations

After oversampling of each cluster, all clusters of the same class contain the same number of observations.

Majority Class Clusters
Cluster 1: 170 Observations
Cluster 2: 170 Observations
Cluster 3: 170 observations
Cluster 4: 170 observations
Cluster 5: 170 observations
Cluster 6: 170 observations

Minority Class Clusters
Cluster 1: 250 Observations
Cluster 2: 250 Observations

Event Rate post cluster based oversampling sampling = 500/ (1020+500) = 33 %

장점 :

이 clustering은 클래스 간의 불균형을 극복하게 해준다. positive class가 위치한 장소는 negative class가 위치한 곳과는 다르다.
또한, 클래스 불균형을 극복하고, 클래스는 다른 subcluster로 이르어져 있다. 그리고 각각의 sub cluster는 같은 수의 example을 포함하지 않는다. ????????????????

단점:
    이 방법의 결점은 다른 oversampling 테크닉 처럼 over-fitting을 야기한다는 것이다.



4. Synthetic Minority Over-sampling Technique (SMOTE)

이 방법은 minor class의 instance를 단순하게 복제함으로써 생기는 overfitting을 피하기 위해 사용된다. 소수 클래스로부터 data의 subset을 뽑아낸 다음에 새롭게 비슷한 instance를 생성한다. 이 새롭게 만든 인스턴스들은 원래 dataset에 더해지고 train set으로 사용된다.





Total Observations = 1000
Fraudulent Observations = 20
Non Fraudulent Observations = 980

Event Rate = 2 %


A sample of 15 instances is taken from the minority class and similar synthetic instances are generated 20 times. Post generation of synthetic instances, the following data set is created.

Minority Class (Fraudulent Observations) = 300
Majority Class (Non-Fraudulent Observations) = 980
Event rate= 300/1280 = 23.4 %

장점:

synthetic example은 random하게 oversampling하는 것보다 overfitting이 일어날 가능성이 줄어든다.

정보가 손실될 우려가 없다.

단점:

SMOTE는 minor class의 synthetic data를 생성하는 동안 인접해있는 major class의 instance들의 위치는 고려하지 않는다. 그래서 클래스가 겹치거나 노이즈를 만들 수 있다.

SMOTE는 고차원 데이터에 효율적이지 않다.



5. Modified synthetic minority oversampling technique (MSMOTE)


SMOTE에서 약간 변경된 모델이다. SMOTE는 소수 클래스의 근본적인(underlying) 분포와 잠재적인(latent) 노이즈를 고려하지 않는다. SMOTE의 성능을 향상시키기 위해 MSMOTE가 사용된다.

이 알고리즘은 minor class의 instance들을 3가지 그룹으로 나눈다. security/safe samples, border samples, latent noise sample. 이는 minor class instance와 training data 간의 거리를 계산해서 나눈다. noise samples은 상대적으로 classifier의 성능을 낮추는 반면에 security/safe samples는 높일 수 있는 데이터이다. 이 그룹에 속하지 않는 애매한 것들은 border samples로 구분된다.

MSMOTE의 기본 흐름은 SMOTE와 비슷하지만 data를 만드는 방법은 다르다. SMOTE가 무작위로 데이터를 생성했다면 MSMOTE는 security samples 위주로 데이터를 만들고, latent noise sample 에 대해서는 아무 것도 하지 않는다.



[REFERENCE]

https://www.analyticsvidhya.com/blog/2017/03/imbalanced-classification-problem/
https://www.kaggle.com/rafjaa/resampling-strategies-for-imbalanced-datasets