머신러닝 프로젝트 처음부터 끝까지

업데이트:

2장. 머신러닝 프로젝트 처음부터 끝까지

머신러닝 프로세스 대한 개괄적 이해를 위한 챕터 with codes
이번 챕터는 내용이 방대하기 때문에 뼈대만 남기고, 익숙한 내용은 배제

목차

전체 프로세스

  • 머신러닝 프로젝트의 프로세스 순서
    1. 문제 파악, 프로젝트의 방향성과 목표 설정
    2. 데이터 추출, 수집
    3. EDA
    4. 전처리 및 F/E
    5. fitting
    6. hyper parameter tuning
    7. 솔루션 제안
    8. 모니터링 및 유지보수

큰 그림 보기

  • 문제 정의
    • 비즈니스의 목적에 대한 이해 필요
    • 분석과 모델링을 하기 전, 비즈니스가 어떤 문제를 갖고있는지 파악
  • 성능 측정 지표 선택
    • 문제마다 측정해야 할 지표가 다르다.
    • 그리고 어떤 문제냐에 따라 지표가 다르다. (ex. 분류냐 회귀냐)
    • rmse, mae, accuracy, AUC 등… 지표는 참 많음
  • 실제 분석하기 전에
    • 관련 부서와 제대로 커뮤니케이션
    • 그리고 프로세스나 논리에 오류는 없는 지
    • 필요로 하는 결과물의 형태에 대해 제대로 이해하고 있는지 점검

데이터 구조 살펴보기

  • 데이터 형태, 범위, 스케일, 분산 등을 이해
  • 테스트 세트 생성
    • 데이터 스누핑 편향 (data snooping bias)가 일어나지 않도록 주의
      • 테스트 세트가 노출되면, 일반화 성능을 제대로 측정하지 못할 수 있음
      • 낙관적인 추정으로 인해 기대한 성능이 나오지 않을 수 있음
    • 계층적 샘플링
      • 데이터가 특정 계층(혹은 그룹)으로 나뉘어있다면,
      • 예를들어 남성, 여성
      • 그 그룹의 비율을 유지하여 샘플링

데이터 이해를 위한 탐색 및 시각화

  • 데이터 형식과 변수의 수에 맞는 시각화 필요
  • 상관관계 조사
    • 변수 간 서로 상관관계가 있는지 파악
    • -1 ≤ $r$ ≤ 1 (Pearson r)
    • 상관계수는 선형적인 상관관계만 파악 가능, 비선형적 관계는 파악 불가
    • 기울기와는 상관이 없음
  • 특성 조합으로 실험
    • 정규분포에 유사하게 만들기 위해 로그 스케일을 사용하거나
    • 두 피처를 합친다거나 (PCA)
    • 실제 필요 없는 특성을 삭제하거나 등의 작업 필요

알고리즘을 위한 데이터 준비

  • 데이터 정제
    • null값 처리
      1. 결측값이 있는 레코드를 삭제하거나
      2. 해당 피처를 삭제하거나
      3. 적절한 값으로 채워넣거나 등의 방법 가능(통계량이나 예측 등을 통해)
  • 텍스트나 범주형 특성
    • 순서형 데이터일 경우,
      • 적절한 값으로 가중치 부여
    • 단순 범주형일 경우
      • one-hot-encoding 방법을 사용하여 희소행렬로 만듦
  • 특성 스케일링
    • 변수간 스케일이 너무 차이가 클 경우, 모델링에 문제 발생 가능
    • minmax scaler, standard scaler 등을 사용
  • 변환 파이프라인
    • 데이터 정제 과정을 하나의 파이프라인으로 만들어 관리
    • 변환해야하는 단계가 많고, 순서대로 실행되어야함.
    • 이를 실수없고 체계적이고 정확하게 진행하고자 파이프라인화

모델 선택과 훈련

  • 교차검증
    • scikit-learn 내 내장된 cross_val_score를 사용하여 구현 가능하며,
    • K-fold 교차 검증도 구현 가능

모델 세부 튜닝

  • 모델마다 조정할 수 있는 hyperparameter가 다르고, 쓰임새도 다르다.
  • 가장 최적의 값을 찾기 위해 튜닝 과정 필요
  • 그리드 서치
    • 탐색하고자 하는 파라미터를 지정하고, 해당 값들의 성능을 알아볼 수 있음
  • 랜덤 탐색
    • 많은 수의 조합을 실행할 때에는, 랜덤 탐색으로 진행하는 것이 더 효율적
    • 랜덤으로 탐색할 파라미터 조합의 수를 지정하면 바로 구동
    • 조합의 수를 조정하며 컴퓨터 자원을 적절히 사용할 수 있음

론칭, 모니터링, 시스템 유지 보수

  • 모델이 제대로 작동하고 있는지 확인하기 위해 꾸준한 모니터링이 필요함.
  • 다만 수작업으로 하기에는 비용이 많이 들기때문에, 자동화 가능한 부분은 최대한 자동화
  • 백업, 롤백 절차 또한 고민을 해야 모델이 잘못된 학습을 하거나 유지 보수를 잘못 했을 경우 이전으로 돌아갈 수 있음

댓글남기기