머신러닝의 워크플로
1. 작업 정의
문제영역과 고객요청 이면의 비지니스 로직을 이해한다. 데이터를 수집하고 데이터가 드러내는 내용을 이해하고, 작업의 성공을 측정하는 방법을 선택
1) 문제정의
- 입력데이터는 무엇인가?
- 당면한 문제가 어떤 종류인가?
- 기존 솔루션은?
- 고려해야할 제약은?
2) 데이터 수집
- 모델링의 개선점을 찾는 것 보다 더 많은 데이터를 수집하는 것이 시간을 효과적으로 사용하는 방법이다.
- 지도학습의 경우 입력(데이터)를 수집하고 예측 모델을 훈련할 타깃인 에너테이션을 만들어야 한다.
- 데이터 에너테이션 인프라에 투자: 데이터 에너테이션 과정이 타깃의 품질, 모델의 품질을 결정할 수 있다.
- 대표성 없는 데이터 주의
- 개념이동(concept drift)이해: 제품환경에서 데이터 속성이 시간에 따라 변할 때 일어남.
- 빠르게 변하는 개념 이동에 대처하려면 지속적인 데이터 수집, 에너테이션, 모델 재훈련 필요
3) 데이터 이해
- 데이터를 탐색하고 시각화하여 특성에 대한 통찰을 얻어야 한다. 이를 통해 특성공학에 대한 정보를 얻고 가능성 있는 문제를 거른다.
- 데이터 샘플 직접확인
- 수치는 히스토그램
- 위치는 지도그리기
- 누락값 처리
- 샘플의 개수 파악으로 불균형 고려
- 타깃 누출 확인
4) 성공지표 선택
2. 모델 개발
데이터를 준비하고, 모델 평가 방법과 간단한 기준점 선택
- 일반화 성능을 가진 첫번째 모델을 과대적합하도록 훈련
- 가능한한 최대의 일반화 성능에 도달할 때까지 모델에 규제 추가
1) 데이터 준비
원본데이터를 신경망에 적용하기 쉽도록 만들기
- 벡터화: 부동 소수점 데이터로 이루어진 텐서로 변환
- 정규화: 일반적으로 비교적 큰 값, 균일하지 않은 데이터를 신경망에 주입하는 것은 위험
- 작은값을 취하기: 0~1사이
- 균일하게 하기: 비슷한 범위일것
- x -= x.mean(axis=0)
x /= x.std(axis=0)
- 누락값 처리
- 새로운 범주 만들기
- '0'값(X), 평균이나 중간값으로 대체
2) 평가 방법 선택
- 홀드아웃 검증: 데이터 충분
- k-fold: 샘플개수가 적을때
- 반복 k-fold: 데이터가 적고 매우 정확한 모델 평가필요
3) 기준 모델 뛰어넘기
- 모델의 초기목표: 통계적 검정력 달성( 기준점 통과 모델 )
- 특성공학: 특성 선택, 유용한 새 특성 개발
- 구조에 대한 올바른 가정
- 좋은 훈련 옵션 선택
4) 모델 용량 키우기: 과대적합 만들기
- 층을 추가
- 층의 크기를 키우기
- 더 많은 에포크 훈련
5) 모델 규제와 하이퍼파라미터 튜닝
- 다른 구조시도(층 추가, 제거)
- 드롭아웃 추가
- 규제 추가
- 하이퍼파라미터 변경
- 특성공학 시도
3. 모델 배포
1) 고객에게 설명, 기대치 설정
- 98%의 정확도를 이야기 하기보단 5% 거짓음성비율, 2%의 거짓 양성비율을 이야기 하는 것이 기대치에 대한 설명으로 더 나을 수 있다.
2) 추론모델 배치
- REST API로 모델 배포
- 장치로 모델 배포
- 브라우저에 모델 배포
- 추론모델 최적화
3) 작동 중 모델 모니터링하기
4) 모델 유지관리