2 분 소요

머신러닝, 딥러닝 문제를 해결하기 위한 프로세스를 정리하였다.

3.1 머신러닝 문제해결 프로세스

image

1. 문제(경진대회) 이해

  • 문제 이해
    • 경진대회 배경과 목적을 이해해야한다.
    • 어떤 데이터를 활용해서 어떤 값을 예측해야하는지 (회귀인지 분류인지, 어떻게 접근해야하는지 등)
    • 경진대회 소개 페이지 내용 숙지 또는 토론 내용 읽어보기
  • 평가 지표 파악

    • 같은 모델을 사용하더라도 평가지표에 따라 등수가 달라질 수 있다.

2. 탐색적 데이터 분석 (목적 - 가장 효과적인 모델을 찾고 최적화 하기 위함)

  • 데이터 구조 탐색

    • 데이터의 구조를 간단히 훑어보거나 몇 가지 통계를 구해본다.
  • 데이터 시각화

    • 막대 그래프, 박스플롯, 포인트플롯, 바이올린플롯, 산점도, 히트맵, 파이 차트 등 다양한 그래프를 활용한다.
    • 어떤 Feature가 중요한지, Feauture끼리 어떻게 조합해서 새로운 Feature를 만들지, 어떤 점을 주의해서 모델링할지 등의 인사이트를 얻을 수 있다.

3. 데이터 전처리

  • 데이터에는 다양한 잡음이 섞여 있고, 형태도 일정하지 않아서 솎아주거나 형태를 일치시키는 등의 전처리 작업을 해주어야한다.

4. 베이스라인 모델

  • 모델 훈련 및 성능 검증

    • 간단한 모델을 생성, 훈련하여 성능을 확인한다. (기본적인 머신러닝 파이프라인, 뼈대 생성)
    • 필요에 따라 간단한 Feature 엔지니어링을 수행할 수 있다.
    • 성능에는 신경쓰지 않고 우선은 간단하게 만들어 훈련까지 마친다.
  • 결과 예측 및 제출

    • 테스트 데이터를 활용해 훈련된 모델의 결과를 예측해 제출한다.
    • 예측 결과 제출 이유: 다음 단계에서 성능 개선 후 비교해보기 위함

5. 성능 개선

  • Feature 엔지니어링 - 모델 성능 향상에 큰 영향을 주는 작업!

    • 이상치 제거, 결측값 처리, 데이터 인코딩, Feature 스케일링, 파생 Feature 생성, Feature 제거 및 선택 등을 수행한다.
  • 하이퍼파라미터 최적화

    • 가능한 범위 내에서 최선의 하이퍼파라미터 값을 찾는다.
    • 그리드서치, 랜덤서치, 베이지안 최적화 등의 기법을 활용한다.
  • 성능 검증

    • 훈련 데이터로 훈련시키고, 검증 데이터로 성능을 평가한다. (교차 검증 기법 사용)
    • 성능이 좋지 않다면 문제 이해, 탐색적 데이터 분석, Feature 엔지니어링부터 다시 수행해야한다.
  • 결과 예측 및 제출

    • 성능이 개선된 모델을 활용해 최종 결과를 예측하고 제출한다.
    • 결과는 여러가지를 제출할 수 있고, 그 중에서 최종 버전 2개를 선택할 수 있다.

3.2 (이미지 분류) 딥러닝 문제해결 프로세스

image

1. 문제(경진대회) 이해

  • 문제 이해

    • 경진대회 배경과 목적을 이해해야한다.
    • 어떤 데이터를 활용해서 어떤 값을 예측해야하는지 (회귀인지 분류인지, 어떻게 접근해야하는지 등)
    • 경진대회 소개 페이지 내용 숙지 또는 토론 내용 읽어보기
  • 평가 지표 파악

    • 같은 모델을 사용하더라도 평가지표에 따라 등수가 달라질 수 있다.

2. 탐색적 데이터 분석

  • 데이터 구조 탐색

    • 대체로 다수의 이미지 파일과 약간의 메타데이터가 주어질 것이다.
  • 데이터 시각화

    • 불균형 여부를 판단하기 위해 타깃값 분포를 시각화한다.
    • 이미지 데이터를 출력해보며 어떤 이미지를 훈련할지 확인한다.
    • 데이터 수가 충분히 많은지 살펴본다.
      • 너무 적다면 뒷 과정에서 데이터를 더욱 적극적으로 증강해야한다.
    • 실전에서는 주어진 이미지를 실제로 살펴보고, 활용할 수 없는 수준의 데이터는 버리거나 재활용할 수 있는 방안을 강구해야한다.

3. 베이스라인 모델

  • 환경 설정

    • 결과를 재현할 수 있도록 시드값을 고정한다.
    • GPU 장비로 설정한다.
  • 데이터 준비

    • 사용할 딥러닝 프레임워크에 맞춰 데이터를 준비한다.
      • ex) 파이토치 - 데이터셋 클래스와 데이터 로더 생성, 배치 크기 조정, 이미지 변환기를 통해 데이터 증강
  • 모델 훈련 및 성능 검증

    • 간단한 모델을 생성, 훈련하여 성능을 확인한다. (기본적인 딥러닝 파이프라인, 뼈대 생성)
    • 훈련 전에 손실 함수와 옵티마이저를 설정한다.
    • 사전 훈련 모델을 사용하거나 직접 신경망 모델을 설계할 수 있다.
  • 결과 예측 및 제출

    • 테스트 데이터를 활용해 훈련된 모델의 결과를 예측해 제출한다.
    • 예측 결과 제출 이유: 다음 단계에서 성능 개선 후 비교해보기 위함

4. 성능 개선

  • 데이터 자체를 가공해 성능을 올리는 비중이 크다.

  • 성능 개선 기법 적용

    • 더 다양한 이미지 변환기를 활용해 데이터 증강을 더 적극적으로 해본다.
    • 옵티마이저와 스케줄러를 새롭게 설정한다.
    • 테스트 단계 데이터 증강(TTA), 레이블 스무딩을 적용해본다.
    • 몇 가지 하이퍼파라미터를 조정해본다.
    • 모델끼리 앙상블해서 성능을 끌어올린다.
  • 성능 검증

    • 훈련 데이터로 훈련시키고, 검증 데이터로 성능을 평가한다.
    • 성능이 좋지 않다면 문제 이해나 탐색적 데이터 분석, 또는 성능 검증 기법 적용 부분을 다시 수행해야한다.
  • 결과 예측 및 제출

    • 성능이 개선된 모델을 활용해 최종 결과를 예측하고 제출한다.
    • 결과는 여러가지를 제출할 수 있고, 그 중에서 최종 버전 2개를 선택한다.

3.3 체크리스트

머신러닝 문제해결 체크리스트

(이미지 분류) 딥러닝 문제해결 체크리스트



지금까지 머신러닝, 딥러닝 문제해결을 위한 프로세스를 정리해보았다. 다음 포스트에서는 데이터 탐색을 위한 시각화 기법들을 다뤄볼 것이다.

댓글남기기