총 데이터 개수 1000

A인 경우 20

B인 경우 980

따라서 Event Rate(A) = 2%


이럴 때 쓸 수 있는 방법이 무엇이 있을까?


1. Data level에서


Random Under-Sampling

:B를 다 쓰는게 아니라, 비복원으로 몇개만 뽑아쓰기(ex:10%), 

A인 경우 20

B인 경우 98

Event Rate(A) = 20/118 = 17%

장점:데이터를 적게 사용하므로 run time과 storage prob을 improve

단점:

정보 손실

10%만 뽑은 98개가 980개를 대표하지 않은 biased sample이 될 수도 있다.


Random Over-Sampling

:A를 다 복사해서 쓰기(ex 20배)

A인 경우 400

B인 경우 980

Event Rate(A) = 400/1380 = 28.9%

장점:

정보 손실이 없다

Random Under-Sampling보다 성능이 좋을 때가 많다

단점:overfitting이 일어날 확률이 높아짐


Cluster-Based Over Sampling

:A를 KNN, B를 KNN 각각 clustering한 다음에 each cluster of A의 개수가 다 같게 oversampled, each cluster of B의 개수가 다같게, A의 size와 B의 size가 같게 oversampled한다.

장점:each cluster의 크기가 다를 때 좋음

단점:overfitting이 일어날 확률이 높아짐


Informed Over Sampling:Synthetic Minority Over-sampling technique(SMOTE)

:A에서 몇개를 뽑아 사용하되, 걔를 완전히 복사하기보다 Synthetic Instance(합성 유사 사례)를 만들어 사용한다.

장점:

Random Over-sampling할 때 생기는 overfitting 문제를 완화시킨다.

정보 손실이 적음

단점:

Synthetic Instance를 만들 때 다른 class와 overlapping할 것을 고려하지않고 진행될 때가 생겨서 overlapping가능성이 더 늘어난다.

데이터가 high dimensional인 경우 효과적이지 못하다


Modified Synthetic Minority Over-Sampling Technique(MSMOTE)

:A에서 몇개를 뽑아 Safe samples/Border samples/Noise samples로 분류한다. (Safe는 classifier의 성능을 높혀줄, Noise는 classifier의 성능을 낮게만드는, Border는 Safe와 Noise에 넣기 애매한 놈들), 이후 synthetic Instance를 만든 다음에 Safe sample은 kNN중 택해 사용하고, Border Sample은 가장 가까운 것만 synthetic으로, Noise sample의 경우에선 뽑지 않는 방법을 이용한다.


2. Algorithmic Ensemble Techniques

Bagging Based

:전체 데이터에서 복원추출로 Sample을 N개 만들고, 각 Sample마다 Classifier를 만들어서, Classifier를 10개 사용한 Classifier를 만드는 것이다.

장점:

Stability와 accuracy 상승

variance를 낮춤

overfitting 가능성 낮춤

misclassification rate를 낮춤

noisy data인 경우 boosting보다 성능 좋음

단점:각각의 classifier들이 성능이 어느정도 괜찮아야만 효과가 있음










'MachineLearning > 기본' 카테고리의 다른 글

Speech Recognition  (0) 2018.03.28
신호분석 정리  (0) 2018.03.22
[First Edition]머신러닝 기본  (0) 2016.05.11

+ Recent posts