02-05) Project-01-revisit

slow_starter·2025년 7월 29일
0
post-thumbnail

2주차 프로젝트는 1주차 프로젝트에서 연장된 내용이라서
별로 할 일이 없었다.
그런데 이번 수업 강의 자료를 보니 Class imbalance극복 위해
Under(Over) sampling을 하는데 train_test_split 하기 전에
하더라고? 이상하다고 느껴져서 GPT/Gemini에게 물어보았다.

01. 짚고 넘어갈 용어

  • Class imbalance
    • 데이터셋의 클래스별 샘플 수에 큰 차이가 있는 상태
    • 예시
      • 의료 진단: 양성(positive) 1%, 음성(negative) 99%
      • 사기 탐지: 정상 거래 수십만 건 vs 사기 거래 수백 건
    • 문제점
      • 모델이 다수 클래스에 편향됨 → Accuracy는 높지만 minority class는 거의 예측 못 함
      • 실제론 recall, precision, F1-score가 더 중요
  • Under sampling
    • 다수 클래스의 데이터를 줄이는 기법, 소수 클래스의 크기에 맞춤
    • 장점 : 학습속도 향상, 클래스 정보 맞춰줌
    • 단점 : 다수 클래스 정보 손실, 성능 저하
  • Over sampling
    • 소수 클래스의 데이터를 인위적으로 늘리는 기법
    • 장점 : 소수 클래스 정보 보존, imbalance완화
    • 단점 : 과적합 위험

02. 내가 의아하다고 느낀 부분

  • Under(Over) sampling을 수행하고 나서, train/test 데이터를 분할할
    수 있는가?
    • Under(Over) sampling 하고 나서, train/test를 나누면 test
      데이터도 train 데이터처럼 Under(Over) sampling의 영향을 받음
    • 다시 말해, 모형 학습할 때 'test'데이터의 정보를 이용한다고
      볼 수 있음(Data leakage)
  • Kaggle에서 모델 성능을 끌어올려서, 높은 순위를 차지하고 싶은 사람들은
    가끔 Data leakage로 해석될 수 있는 행동을 하는 경우가 있으나, 본래
    그렇게 해서는 안됨
    • 모델 train 시점에서는 test 데이터를 몰라야 하는 것이 맞기 때문
      (흔히 교재에서는 전체 full-dataset이 갖춰진 상태에서, train/test를 나누지만, 본래 train-set만 정답지(y값, 또는 label)이 주어지고 test 데이터는 정답지가 주어지지 않기 때문.)
  • 그래서 강의안에서는 Under(Over) sampling 후에 train-test 데이터를 나눴으나, 나는 관련된 이유를 적고 train-test 데이터를 나눈 뒤에
    train 데이터에만 Under(Over) sampling을 적용하였다.
profile
2025화이팅!

0개의 댓글