Imbalanced data 문제 해결 방법; 1) Down-sampling, 2) Up-Sampling, 3) tree 알고리즘 사용하기, 4) 특정class에 가중치 주기.

머신러닝에서 input data pre-processing은 아주 중요한 과정이다.
Classification 에서 분류 성능을 저하시키는 요인 중에 하나는 class 의 갯수가 균형이 맞지 않을 때 일어난다. 예를들어서 샘플이 총 100개 가 있고 이 100개의 샘플을 class1혹은 clas2로 분류하고 싶다고 가정하자. 샘플 100개 중 50개가 class1, 50개가 class2라면 아주 이상적이라고 할 수 있다. 하지만, class1이 1개이고 class2가 99개이면 어떨까? 

그렇다면 알고리즘이 class1에 대해서 얻는 정보량과 class2에 대해 얻는 정보량이 다를 것이며, 알고리즘은 class2의 갯수가 많은 것을 알고 있기떄문에 어떤 샘플이 주어지든 class2로 분류를 시켜서 전체 accuracy를 높이도록 프로그래밍 될것이다. 

따라서 이렇게 class 갯수가 균형이 맞지않을때는 특별한 방법들로 이를 보정해주고자 노력해야 한다. 그 중 한 방법이 down-sampling이다. 이를 예제 그림으로 보자.





위의 그림처럼 original data에서 class1과 class2는 10배의 갯수차이가 난다.
이때 training data set에서 class2의 샘플갯수를 class1의 갯수로 낮춰서 밸런스를 맞춰준다.
test는 원래 데이터 비율대로 실시한다.