본문 바로가기
TIL - 외/빅데이터

불균형 데이터 (imbalanced data) 처리를 위한 샘플링 기법

by chaemj97 2023. 3. 22.
728x90

1. 불균형 데이터란

  • '정상' 범주의 관측치 수와 '이상' 범주의 관측치 수의 차이가 크게 나타나는 경우
  • 클래스 별 관측치의 수가 현저하게 차이가 나는 데이터
  • 문제
    • 정상을 정확히 분류하는 것과 이상을 정확히 분류하는 것 중 일반적으로 이상을 정확히 분류하는 것이 더 중요
    •  불균형한 데이터 세트는 이상 데이터를 정확히 찾아내지 못할 수 있다는 문제점이 존재

 

2. 불균형 데이터 해결 방안

  1. 데이터를 조정해서 해결
    1. 샘플링 기법 (Sampling method)
  2. 모델을 조정해서 해결
    1. 비용 기반 학습 (Cost sensitive learning)
    2. 단일 클래스 분류기법 (Novelty detection)

 

2-1. 샘플링 기법

1) 언더 샘플링 

  • 다수 범주의 데이터를 소수 범주의 데이터 수에 맞게 줄이는 샘플링 방식
  • 장점
    • 다수 범주 데이터의 제거로 계산시간이 감소
  • 단점
    • 데이터 제거로 인한 정보 손실이 발생

 

1-1) Random undersampling

  • 무작위로 다수 클래스 데이터의 일부만 선택하는 방법
  • 샘플링 할때마다 성능의 차이가 남
    • 의외로 잘 작동하는 경우가 있다

 

1-2) Tomek Links

  • 두 범주 사이를 탐지하고 정리를 통해 부정확한 분류경계선을 방지하는 방법
  • 다른 두 클래스의 데이터 2개를 연결했을 때 주변에 다른 임의의 데이터(k)가 존재할 때
    • 선택한 두 데이터에서 k까지의 거리보다 선택한 두 데이터 사이의 거리가 짧을 때
      • 선택한 두 데이터 간의 링크를 Tomek Link라고 한다.

왼쪽X, 오른쪽O

  • Tomek Links를 형성한 후, 다수 범주에 속한 관측치를 제거

 

1-3) CNN Rule

  • Condensed Nearest Neighbor
  • 다수 클래스에 밀집된 데이터가 없을 때까지 데이터를 제거하여 데이터 분포에서 대표적인 데이터만 남도록 하는 방법
    1. 소수 범주에 속하는 데이터 전체와 다수 범주에 속하는 데이터 중 임의로 선택한 데이터 한 개 (A) 로 구성된 서브 데이터를 생성
    2. 다수 범주에 속하는 나머지 데이터들 중 하나씩 K=1 인 1-NN 방식을 이용하여 A와 가까운지 소수 범주와 가까운지 확인하여 가까운 범주로 임시 분류
    3.  2번이 끝나면 정상 분류된 다수 범주 관측치를 제거하여 언더 샘플링

1-4) OSS

  • One Sided Selection
  • Tomek links + CNN


2) 오버 샘플링

  • 소수 범주의 데이터를 다수 범주의 데이터 수에 맞게 늘리는 샘플링 방식을 말합니다.
  • 장점
    • 데이터를 증가시키기 때문에 정보 손실이 없다.
    • 대부분의 경우 언더 샘플링에 비해 높은 분류 정확도를 보인다.
  • 단점
    • 데이터 증가로 인해 계산 시간이 증가
    • 과적합 가능성 (Over-fitting) 존재
      • 학습데이터는 잘 맞추고 예측은 잘 하지 못하는 경우
    • 노이즈 또는 이상치에 민감

 

2-1) Resampling

  • 다수 범주의 관측치 수와 비슷해지도록 소수클래스 관측치 복제
  • 단점
    • 소수 클래스에 과적합이 발생할 가능성이 있음
    • 보완 -> 가상의 관측치를 생성하자

 

2-2) SMOTE

  • synthetic minority oversampling technique
  • 소수 범주에서 가상의 데이터를 생성하는 방법
    1. K값을 정한 후 소수 범주에서 임의의 데이터를 선택
    2. 선택한 데이터와 가장 가까운 K개의 데이터 중 하나를 무작위로 선정해 synthetic 공식을 통해 가상의 데이터 생성
    3. 소수 범주 내 모든 관측치에 대해 과정을 반복하고 가상 관측치 생성
  • K는 무조건 2이상
    • K가 1인 경우 데이터 형태가 이상해짐

 

2-3) Borderline-SMOTE

  • Borderline 부분만을 샘플링
    1. Borderline 찾기
      1. 소수 클래스 xi에 대해서 k개 주변을 탐색 -> k개 중 다수 클래스의 수를 확인
        • 다수 클래스의 데이터 수가 K인 경우 Noise 관측치
        • K/2 ~ K 에 속할 경우 Danger 관측치
        • 0 ~ K/2 에 속할 경우 Safe 관측치
    2. Danger 관측치에 대해서만 SMOTE 적용

 

2-4) ADASYN

  • adpative synthetic sampling approach
  • Borderline SMOTE 방법과 비슷하지만
    • 샘플링 개수를 데이터 위치에 따라 다르게 설정하는 것이 차이
    • 다수클래스쪽에 있는 데이터에도 집중해보자

  • 각 소수 클래스 주변에 얼마나 많은 다수 클래스 관측치가 있는가를 정량화 한 지표
    1. ri 구하기
    2. ri 스케일링(확률로 바꾸기)
    3. G = 다수 클래스 개수 - 소수 클래스 개수
    4. 각 ri에 G를 곱하고 반올림한 결과 == 생성되는 소수 클래스 수
    5. 각 소수 클래스를 할당된 개수 만큼 SMOTE를 적용
  • 장점
    • 소수 범주 데이터 주변의 다수 범주 데이터의 수에 따라 유동적으로 생성이 가능

다수 클래스가 퍼져있을 때 ADASYN가 가장 잘 함

2-5) GAN

  • Generative Adversarial Nets
  • 생성자와 구분자로 구성되어 있고 모델은 딥러닝을 사용하는 최신 오버 샘플링 기법
  • 작동 방식
    1. 무작위로 노이즈를 생성 N(0,1)
    2. 생성자를 통해 가짜 샘플을 생성
    3. 구분자에서 진짜/가짜 샘플 판별
    4. 반복적인 생성자 업데이트를 통해 진짜 샘플과 유사하게 데이터를 생성


2-2. 비용 기반 학습

  • 모델 조정
  • 이상을 정상으로 분류 중 정상을 이상으로 분류 전자가 더 큰 문제
  • 방법
    • 비용 기반 데이터 가중치 부여
    • 각 범주에 따른 오분류 비용을 부여하고 분류기를 생성

 

2-3. 단일 클래스 분류 기법

  • 모델 조정
  • 다수 범주만 고려해서 분류
  • 가능한한 모든 다수 범주를 포함하는 분류경계선 생성

728x90
반응형

'TIL - 외 > 빅데이터' 카테고리의 다른 글

[머신러닝] 회귀 알고리즘 및 실습  (0) 2023.04.13
[머신러닝] K-최근접 이웃(KNN) 알고리즘 및 실습  (0) 2023.04.09
구름 php + MySQL  (0) 2022.11.02
DB  (0) 2022.11.02
처음 만들어보는 GAN Model  (0) 2022.11.01

댓글