불균형 데이터

2020. 9. 20. 20:38

* 불균형 데이터


Class Imbalanced problem이란

 - 클래스 불균형 문제는 다수 클래스(majority class)의 수가 소수 클래스(minority class)의 수보다 월등히 많은 학습상황에서 발생하며, 해당 상황에서 분류모델을 학습하면 분류성능이 저하되는 문제를 클래스 불균형 문제라고 한다.

 - 즉 주어진 테스트 데이터에 대해 overfitting 하여, 소수클래스에 해당하는 데이터를 잘 구분하지 못하는 현상이다.(즉 모델이 소수의 데이터를 무시하는 경향이 생기는 문제)

 - 이런 클래스 불균형 문제는 의료, 반도체, 보험, 텍스트 등 여러분야에 걸쳐서 발생하고 있는 문제이다.

 - 클래스 불균형 문제에 대한 지수를 IR(class imbalanced ratio) = # of majority class / # of minority class 라고 한다.

 - Class Imbalanced problem이 발생했을 때 사용하는 모델성능 지표

    G-mean: 제1종 오류와 제2종 오류중 성능이 나쁜쪽에 더 가중치는 주는 지표

    F1 measure: 불량에 관여하는 지표인 정밀도와 재현율만 고려하는 지표

    정밀도: precision, 옳게 분류된 불량 데이터 수/불량으로 예측한 데이터, 분류모형이 불량을 진단하기 위해 얼마나 잘 동작했는지 보여주는 지표

    재현율: recall, 옳게 분류된 불량 데이터 수/실제 불량 데이터의 수, 불량데이터 중 실제로 불량이라고 진단한 비율(=진단확률)

    특이도: specificity, 옳게 분류된 정상 데이터 수/실제 정상 데이터의 수, 분류모형이 정상데이터를 정상이라고 진단한 비율

    ROC curve

     - 가로축을 '1-특이도'로 계산한 값, 세로축을 재현율로 하여 시각화한 그래프(그래프가 볼록해질수록 좋은 성능을 가진다)

     - AUC: ROC curve의 면적(0~1값을 가진다)


Class Imbalanced problem을 해결하기위한 방법

 - resampling method

     over sampling: 소수의 데이터를 부풀리는 방법 -> 모델이 소수데이터를 무시못하게함(선정되는 데이터마다 성능편차가 심하며, minority 데이터에 대해 over-generalization이 되는 경향성을 가지는 단점이 있음)

       -> over sampling기법의 종류(over sampling을 위해 소수의 데이터를 생성하는 방법)

            random over sampling: 소수의 데이터를 random하게 sampling시켜 기존데이터와 합치는 방법

            SMOTE(synthetic minority over-sampling technique): over sampling에서 많이 쓰이는 기법, 소수의 데이터의 sample에 KNN을 적용 후, 샘플과 이웃간의 사이에 random하게 데이터는 생성하는 방법

              -> SMOTE의 변형기법: BLSMOTE(borderline SMOTE), DBSMOTE(dbscan SMOTE)

     under sampling: 다수의 데이터를 줄이는 방법 -> 다수에 해당하는 데이터를 제거하여 소수데이터의 비중을 높임(over sampling기법에 비해 잘 사용되지는 않는다. 학습에 불필요한 데이터를 제거해 학습속도가 향상되나, decision boundary 부근의 데이터를 제거했을 경우, 학습에 악영향을 끼칠 수 있는 단점이 있음)

     hybrid resampling: over & under sampling를 결합하여 사용하는 압법

 - cost-sensitive learning: class의 오분류(잘못된 분류)에 대한 cost의 가중치를 조절하여 학습하는 방법

 ->resampling method는 학습전 데이터 단계에서 완화시키는 방법, cost-sensitive learning은 학습알고리즘 단계에서 완화시키는 방법이다.

   resampling method이 많이 사용된다



'Study > Deep_Machine learning' 카테고리의 다른 글

딥러닝2  (0) 2020.10.20
딥러닝1  (0) 2020.10.03
클러스터링  (0) 2020.09.06
앙상블기법  (0) 2020.09.06
기본적인 머신러닝 모형  (0) 2020.08.22

+ Recent posts