Posts 2022-10-05 TIL
Post
Cancel

2022-10-05 TIL

Today

  • 자기소개서 5번째 모델링이 데이터 불균형으로 인해 성능이 좋게 나오지 않는다.
  • 데이터가 충분했다면 언더샘플링하여 균형을 맞추었을텐데, 데이터가 충분하지 않기에 오버샘플링을 고려하였다.
  • 결국 Smote, BorderLine Smote, ADASYN을 고려하였고, 셋중 ADASYN을 선택하였다.
    • 증강된 데이터를 시각화하여 분포를 살펴보니, ADASYN이 적당히 아웃라이어에도 붙어주고, 중앙에 밀집되어 있어서 선택하였다.
    • 물론 오버샘플링을 통해 성능도 향상되었다. F1 0.09 -> 0.45 정도..

TIL

  • MLOps 도입 가이드라는 책으로 머신러닝 서빙을 위해 공부 중이다.
  • 책은 두껍지 않으나, 하나의 모델이 생성되고 서빙되는 과정까지 어떤 직무가 필요하고 해당 직무가 어떤 일을 해야하는지, 잘 정리해 놓았다.
    1. SMOTE
    • K값을 정한 후 소수 범주에서 임의의 데이터를 선택한 후 선택한 데이터와 가장 가까운 K개의 데이터 중 하나를 무작위로 선정해 Synthetic 공식을 통해 가상의 데이터를 생성하는 방법
      1. BorderLine SMOTE
    • Borderline 부분에 대해서만 SMOTE 방식을 사용하는 것
    • Borderline 을 찾는 것은 임의의 소수 범주의 데이터 한 개에 대해서 주변의 K개 데이터를 탐색하고 그중 다수 범주 데이터의 수를 확인
    • 이때 다수 범주 데이터의 수가 K와 같을 경우 소수 범주의 데이터를 Noise 관측치라고 하며, 다수 범주 데이터의 수가 K/2 ~ K 에 속할 경우 Danger 관측치, 0 ~ K/2 에 속할 경우 Safe 관측치라고 함
    • 이 중 Danger 관측치에 대해서만 SMOTE를 적용하여 오버 샘플링을 진행
      1. ADASYN
    • ADASYN 방법은 Borderline SMOTE 방법과 비슷하지만 샘플링 개수를 데이터 위치에 따라 다르게 설정하는 것의 차이가 있음
    • 모든 소수 범주 데이터에 대해 주변의 K개의 데이터를 탐색하고 그중 다수 범주 데이터의 비율을 계산
    • 계산된 각 비율들을 비율의 총합으로 나눠 스케일링을 진행
    • (다수 범주 데이터 수 - 소수 범주 데이터 수) 를 스케일링이 진행된 비율에 곱함
    • 반올림된 정수의 값만큼 각 소수 범주 데이터 주변에 SMOTE 방식으로 가상 데이터를 생성
    • 소수 범주 데이터 주변의 다수 범주 데이터의 수에 따라 유동적으로 생성이 가능하다는 장점이 있음

오늘의 결론

  • 불균형 문제는 오버샘플링으로 해결
  • Smote, Border Line Smote, ADASYN 등 상황에 맞게 사용
  • 실제 서비스에 서빙도 고려해서 작성하자.
This post is licensed under CC BY 4.0 by the author.