[Handson_ML]ch02: ML 프로젝트 처음부터 끝까지

  • 머신러닝 프로제트 절차

  • 머신러닝 프로제트 절차

    1. 문제 정의
    2. 데이터 수집
    3. Data Discovery: 탐색과 시각화 for Insight
    4. 데이터 전처리
    5. 모델 선택 및 훈련
    6. 모델 미세 조정
    7. 해법(Solution) 제시
    8. 시스템 구축 및 모니터링, 유지보수

Dataset

머신러닝 프로젝트 체크리스트 (Appendix. B)

  • 머신러닝 프로젝트 주요 단계 (8개)
    1. 문제 정의 및 큰 그림 그리기
    2. 데이터 수집
    3. 통찰을 위해 데이터 탐색
    4. 데이터에 내지된 패턴을 머신러닝 알고리즘으로 잘 드러내도록 데이터 준비
    5. 여러 모델 적용 및 가장 좋은 몇 개 선택
    6. 모델 세밀하게 튜닝
    7. 솔루션 출시
    8. 시스템 런팅, 모니터링, 유지보수

문제 정의

  1. 목표를 비지니스 용어로 정의
  2. 이 솔루션을 어떻게 사용할 것인가?
  3. 현재 솔루션이 있다면 차선택은 무엇이 있는가?
  4. 문제 유형 정의
    • 지도/비지도
    • 온라인/오프라인
  5. 성능 측정 방법 정의
  6. 선능 지표가 비지니스 목표와 연결되어 있는가?
    • 성능 지표의 검증
    • 비지니스 목표와 비교하여 합당한지 확인
  7. 비지니스 목표를 도달하기 위해 필요한 최소한의 성능을 얼마인가?
  8. 비슷한 문제가 있나? 이전 방식이나 도구를 재사용할 수 있나?
  9. 해당 분야의 전문가가 있나?
    • 도메인 지식을 지원 받을 인력 파악
  10. 수동으로 문제를 해결하는 방법은 무엇인가?
    • 도메인 지식 확보
  11. 여러 사람이 세운 가정 나열
  12. 가능하다는 가정 검증

1) 문제 정의 단계

  • 문제를 정확하게 파악하기 위한 작업
  • 문제 정의
    • 타입
    • 성능 측정 방법
    • 선능 지표 거증
    • 성능 요구사항 정의
  • 도메인 지식 확보
    • 기존 처리 방법 확인
    • 도메인 지식 확보 가능한가?
  • 가정 나열 및 검증

2) 데이터 수집

  • 필요한 데이터와 양을 나열
  • 데이터 획득 가능한 Source 찾아 나열
  • 필요한 데이터 사이즈 확인
  • 법률과 라이센스 문제 확인 및 해결
  • 접근 권한 획득
  • 작업 환경 구성 (Data Lake, DB, Server)
  • 데이터 수집
  • 데이터 전처리, 원본은 유지 - 조작하기 편리한 상태로 뱐환
  • 민감 데이터 삭제, 보호 검증 (개인정보 비식별화)
  • 데이터의 크기와 타입을 확인
    • 시계열
    • 표본
    • 지리 정보
  • 데스트 데이터 분리하여 보호 - 데이터 유출에 각별히 조심

3) Data Discovery: 데이터 탐색

  • 데이터 복사본 생성
    • Sampling하여 적절한 크기를 사용
  • Jupyter Notebook 사용
  • Feature의 특성을 조사
    • 이름
    • 타입
      • 범주형
      • 정수/부동소수
      • 최댓값/최솟값
    • 누락된 값의 비율
    • 잡음 정도와 잡음의 종류
      • 확률적, 이상치, 반올림 에러 등
    • 유용성 여부 체크
    • 분포 형태: 가우시안, 균동, 로그
  • 지도 학습이라면 타깃 속성 구분
  • 데이터 시각화
  • 특성간 상관관계 조사
  • 수동으로 문제 해결할 수 있는 방법을 확인
  • 적용 가능한 변환 찾음
  • 필요한 경우 추가 데이터 확인
  • 조사한 내용 기록

4) 데이터 준비: 전처리

  • 데이터 작업은 복사본으로 작업
  • 모든 변환은 함수로 작성 -> 전체적으로 재사용성 및 새로운 데이터셋에 적용이 쉽도록
    • 다음 변환 작업을 용이하게
    • 다음 프로젝트에 재사용
    • 테스트셋에 동일하게 적용
    • 솔루션 서비스 적용 후 새로운 데이터셋에 변환 용이하게
    • 하이터파라미터로 적용

데이터 전처리 절차

  1. 데이터 정제
    • 이상치 제거
    • 누락된 값 채우기 - 0, 평균, 중간값
    • 행, 열 제거
  2. 특성 선택(Optional)
  3. 특성 공학
    • 연속 특성 이산화하기
    • 특성 분해(범주형, 날짜/시간)
    • 특성 변환(log, sqrt)
    • 특성 조합으로 새로운 특성 만들기
  4. 특성 스케일 조정: 표준화, 정규화

5) 모델 선택

  • selection {Linear Model, Naive-base, SVM, Random Forrest, Neural Network}
  • 특정 성능 비교
  • 가중 두드러빈 변수를 분석
  • 모델이 만드는 에러 분석
    • 이런 오류를 피하는 도메인 지식 파악
  • 특성 선택과 특성 공학
  • 여기까지 1-2회 반복
  • 대표적인 알고리즘 3-5개 선택

6. 정밀 튜닝

  • 모델 변환도 하이퍼파라미터로 관리할 것
    • Missing Value 변환
    • 탐색할 하이퍼파라미터가 많다면 그리드서치보다는 랜덤 서치를 사용 ㅜㅍ효
  • 교차 검증을 통해서 정밀 튜닝
  • 앙상블 시도해 볼것
  • 최정 모델에 확신한 후에 일반화 오차를 추정하기 위해서 테스트셋을 실행
    • 일반화 오차를 특정한 후에는 모델을 변경하지 말것.
    • 일반화 오차 츠겅후 모델 변경하는 테스트셋에 과대적합

7. 솔루션 출시

  • 문서화
  • 솔루션이 어떻게 비지니스 목표에 달성했는지 설명(설득)
  • 과정에서 발견한 인사이트를 소개
    • 성공한것 그렇지 못한것
    • 신기했던 것
    • 가정과 시스템 한계
  • 시각화로 내용 전달
    • 중간 소득이 주택 가격에 대한 가장 중요한 예측 변수

8. 시스템 런칭

  • 성능을 일정 간겨으로 확인
  • 성능 감소시 알림을 받는 방법 적용
    • 성능 감소는 지속적으로 느리게 발생할 수 있음
    • 클라우드 소싱도 적극적으로 사용
    • 입력 데이터의 품질 모니터링
      • 온라인 학습일 경우 매우 중요

문제 정의

  • 분석의 목적을 파악해야 한다.

    • 모델 만들기가 최종 목표가 아니다.
    • 분석의 목적이 무엇인지를 파악해야 한다.
  • 대상 모델의 출력은 다른 신호(sigmal)과 함께 다른 머신러닝이 입력이 된다.

    • 중간 주택 가격에 대한 예측

  • 필수 질문
    • 현재 솔루션은 어떻게 구성되어 있나요?
      • 문제 해결에 대한 근거
      • 참고 성능으로 사용 (baseline)
    • 시나리오
      • AS-IS: 팀이 구역 정보 수집, 중간 주택 가격이 없을 경우, 복잡한 규칙을 사용
      • TO-BE: 구역 데이터를 기반으로 중간 주택 가격을 예측하는 모델 훈련
  • 문제 정의로 부터 설계
    • 지도 유형
      • 지도학습
      • 비지도학습
      • 강화학습
    • 학습 타입
      • 배치
      • 온라인

성능 지표 선택

  • (Self Question)성능 지표를 왜 선택해야 하는가?

    • 모델을 학습시킬때 수 많은 버전이 만들어 짐
    • 모델의 선택 기준이 필요
  • RMSE

    • Root Mean Square Error
    • $RMSE(X, h) = \sqrt{\frac{1}{m}\sum(h(X^{(i)})-y^{(i)})^2}$
  • MAE

    • Mean Absolute Error
    • $MAE(X, h) = \frac{1}{m}\sum(|h(X^{(i)})-y^{(i)})|)$
    • 이상치가 많은 경우에 사용
  • Norm 요약 정리

  • RMSE는 L2 Norm

  • 노름의 지수가 클수록 큰 값의 원소에 치우치며 작은 값을 무시

    • RMSE가 MAE보다 이상치에 대한 영향이 큼
    • 이상치가 많치 않을 경우 MAE보다 RMSE가 많이 사용됨

성능 지표 선택

  • Hypothesis에 대한 공유
  • 시나리오 체크 포인트
    • 하위 시스템에 입력 변수는 카테고리
    • 저렴/보통/고가
    • 정확한 값이 필요 없음
    • 현재 시스템은 회귀 문제가 아닌 분류 문제임
김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 빅데이터와 Machine Learning을 중점에 두고 있습니다.
E-mail: taewanme@gmail.com