[캐글 리팩터링] 03 문제해결 프로세스 및 체크리스트
머신러닝, 딥러닝 문제를 해결하기 위한 프로세스를 정리하였다.
3.1 머신러닝 문제해결 프로세스
1. 문제(경진대회) 이해
- 문제 이해
- 경진대회 배경과 목적을 이해해야한다.
- 어떤 데이터를 활용해서 어떤 값을 예측해야하는지 (회귀인지 분류인지, 어떻게 접근해야하는지 등)
- 경진대회 소개 페이지 내용 숙지 또는 토론 내용 읽어보기
-
평가 지표 파악
- 같은 모델을 사용하더라도 평가지표에 따라 등수가 달라질 수 있다.
2. 탐색적 데이터 분석 (목적 - 가장 효과적인 모델을 찾고 최적화 하기 위함)
-
데이터 구조 탐색
- 데이터의 구조를 간단히 훑어보거나 몇 가지 통계를 구해본다.
-
데이터 시각화
- 막대 그래프, 박스플롯, 포인트플롯, 바이올린플롯, 산점도, 히트맵, 파이 차트 등 다양한 그래프를 활용한다.
- 어떤 Feature가 중요한지, Feauture끼리 어떻게 조합해서 새로운 Feature를 만들지, 어떤 점을 주의해서 모델링할지 등의 인사이트를 얻을 수 있다.
3. 데이터 전처리
- 데이터에는 다양한 잡음이 섞여 있고, 형태도 일정하지 않아서 솎아주거나 형태를 일치시키는 등의 전처리 작업을 해주어야한다.
4. 베이스라인 모델
-
모델 훈련 및 성능 검증
- 간단한 모델을 생성, 훈련하여 성능을 확인한다. (기본적인 머신러닝 파이프라인, 뼈대 생성)
- 필요에 따라 간단한 Feature 엔지니어링을 수행할 수 있다.
- 성능에는 신경쓰지 않고 우선은 간단하게 만들어 훈련까지 마친다.
-
결과 예측 및 제출
- 테스트 데이터를 활용해 훈련된 모델의 결과를 예측해 제출한다.
- 예측 결과 제출 이유: 다음 단계에서 성능 개선 후 비교해보기 위함
5. 성능 개선
-
Feature 엔지니어링 - 모델 성능 향상에 큰 영향을 주는 작업!
- 이상치 제거, 결측값 처리, 데이터 인코딩, Feature 스케일링, 파생 Feature 생성, Feature 제거 및 선택 등을 수행한다.
-
하이퍼파라미터 최적화
- 가능한 범위 내에서 최선의 하이퍼파라미터 값을 찾는다.
- 그리드서치, 랜덤서치, 베이지안 최적화 등의 기법을 활용한다.
-
성능 검증
- 훈련 데이터로 훈련시키고, 검증 데이터로 성능을 평가한다. (교차 검증 기법 사용)
- 성능이 좋지 않다면 문제 이해, 탐색적 데이터 분석, Feature 엔지니어링부터 다시 수행해야한다.
-
결과 예측 및 제출
- 성능이 개선된 모델을 활용해 최종 결과를 예측하고 제출한다.
- 결과는 여러가지를 제출할 수 있고, 그 중에서 최종 버전 2개를 선택할 수 있다.
3.2 (이미지 분류) 딥러닝 문제해결 프로세스
1. 문제(경진대회) 이해
-
문제 이해
- 경진대회 배경과 목적을 이해해야한다.
- 어떤 데이터를 활용해서 어떤 값을 예측해야하는지 (회귀인지 분류인지, 어떻게 접근해야하는지 등)
- 경진대회 소개 페이지 내용 숙지 또는 토론 내용 읽어보기
-
평가 지표 파악
- 같은 모델을 사용하더라도 평가지표에 따라 등수가 달라질 수 있다.
2. 탐색적 데이터 분석
-
데이터 구조 탐색
- 대체로 다수의 이미지 파일과 약간의 메타데이터가 주어질 것이다.
-
데이터 시각화
- 불균형 여부를 판단하기 위해 타깃값 분포를 시각화한다.
- 이미지 데이터를 출력해보며 어떤 이미지를 훈련할지 확인한다.
- 데이터 수가 충분히 많은지 살펴본다.
- 너무 적다면 뒷 과정에서 데이터를 더욱 적극적으로 증강해야한다.
- 실전에서는 주어진 이미지를 실제로 살펴보고, 활용할 수 없는 수준의 데이터는 버리거나 재활용할 수 있는 방안을 강구해야한다.
3. 베이스라인 모델
-
환경 설정
- 결과를 재현할 수 있도록 시드값을 고정한다.
- GPU 장비로 설정한다.
-
데이터 준비
- 사용할 딥러닝 프레임워크에 맞춰 데이터를 준비한다.
- ex) 파이토치 - 데이터셋 클래스와 데이터 로더 생성, 배치 크기 조정, 이미지 변환기를 통해 데이터 증강
- 사용할 딥러닝 프레임워크에 맞춰 데이터를 준비한다.
-
모델 훈련 및 성능 검증
- 간단한 모델을 생성, 훈련하여 성능을 확인한다. (기본적인 딥러닝 파이프라인, 뼈대 생성)
- 훈련 전에 손실 함수와 옵티마이저를 설정한다.
- 사전 훈련 모델을 사용하거나 직접 신경망 모델을 설계할 수 있다.
-
결과 예측 및 제출
- 테스트 데이터를 활용해 훈련된 모델의 결과를 예측해 제출한다.
- 예측 결과 제출 이유: 다음 단계에서 성능 개선 후 비교해보기 위함
4. 성능 개선
-
데이터 자체를 가공해 성능을 올리는 비중이 크다.
-
성능 개선 기법 적용
- 더 다양한 이미지 변환기를 활용해 데이터 증강을 더 적극적으로 해본다.
- 옵티마이저와 스케줄러를 새롭게 설정한다.
- 테스트 단계 데이터 증강(TTA), 레이블 스무딩을 적용해본다.
- 몇 가지 하이퍼파라미터를 조정해본다.
- 모델끼리 앙상블해서 성능을 끌어올린다.
-
성능 검증
- 훈련 데이터로 훈련시키고, 검증 데이터로 성능을 평가한다.
- 성능이 좋지 않다면 문제 이해나 탐색적 데이터 분석, 또는 성능 검증 기법 적용 부분을 다시 수행해야한다.
-
결과 예측 및 제출
- 성능이 개선된 모델을 활용해 최종 결과를 예측하고 제출한다.
- 결과는 여러가지를 제출할 수 있고, 그 중에서 최종 버전 2개를 선택한다.
3.3 체크리스트
지금까지 머신러닝, 딥러닝 문제해결을 위한 프로세스를 정리해보았다. 다음 포스트에서는 데이터 탐색을 위한 시각화 기법들을 다뤄볼 것이다.
댓글남기기