머신러닝 프로젝트의 과정
1. 문제를 정의
2. 머신러닝을 사용하지 않는 방법은 없는지 검토
3. 시스템을 설계
4. 사용할 알고리즘을 선택
5. 특징과 정답 , 데이터 , 로그를 설계
6. 데이터를 전처리
7. 학습을 수행하고 파라미터를 튜닝
8. 시스템에 통합
이 과정을 다음처럼 설명할 수 있다.
1. 해결하려는 문제를 머신러닝으로 풀 수 있는 문제로 바꾸기
2. 문제를 풀기 위한 도구 선택 및 전처리
3. 모델 구축하기
4. 기존 서비스에 통합하기
머신러닝으로 해결한 사례를 찾으면 다음 세 가지 사항을 중점적으로 살펴봐야 한다.
1. 어떤 알고리즘을 사용했는가??
2. 어떤 데이터를 특징으로 사용했는가??
3. 머신러닝 부분을 어떻게 통합했는가??
위와 같은 방법으로 진행하다 보면 , 어떤 것이 가능하고 가능하지 않은지 판단할 수 있게 된다.
문제를 정의
è 프로젝트의 목적
머신러닝을 사용하지 않는 방법 검토
è 머신러닝을 정말 꼭 사용해야 하는진를 검토하는 것
머신러닝을 사용하는 시스템을 구축할 때는 다음과 같은 어려움을 겪을 수 있다.
è 확률적인 부분이 있어 자동 테스트가 어렵다
è 오래 운용하면 사용자 경향이 변해 입력 경향도 바뀐다
è 처리 파이프라인이 복잡해 진다
è 데이터 의존관계가 복잡해 진다.
è 실험 코드 혹은 파라미터가 포함되기 쉽다.
è 개발 시스템과 운영 시스템 간의 언어/프레임워크가 제각각이기 쉽다.
시스템 설계하기
1. 예측 결과를 어떻게 이용할 것인가??
2. 예측 오류의 영향을 어떻게 흡수할 것인가??
알고리즘 선택하기
è 데이터의 특성을 모른다면 , 군집화 or 스캐터플롯 매트릭스로 시각화해보고 어떤 방법으로 문제를 풀지 생각을 해본다.
è 데이터양을 예상해보고 온라인 학습과 배치 학습 중 어느 쪽이 적합한지 가늠해 본다.
특징, 정답 데이터, 로그 설계하기
è 특징 : 머신러닝의 예측 모델에 입력된 정보다.
è 정답 데이터 : 여러 범주 중 하나를 예측하는 지도 학습에서 필요한 정답 범주 레이블과 그 정답의 입력 데이터의 쌍을 말한다.
데이터의 전처리
è 전처리는 불필요한 정보를 발라내고, 데이터를 머신러닝에 사용할 수 있는 형태로 바꾸는 과정이다.
è 머신러닝에 입력되는 데이터는 관계형 데이터베이스로 나타낼 수 있는 표 형식을 취한다.
학습 및 파라미터 튜닝
1. 실제로 학습을 수행하는 단계
è 첫 단계 : 로지스틱 회귀 같은 비교적 간단한 알고리즘과 기존 라이브러리 및 프레임워크를 사용하여 간단한 예측 모델을 만들어 본다. 대부분의 경우 일부 데이터가 누락되는 등 데이터 자체에 버그가 잠재되어 있을 수 있다. 이 때문에 문제를 쪼개어 우선 간단한 방법으로 예측 모델을 만들어 보는 것이다.
만약 첫 번째 예측 모델에서 바로 아주 높은 성능이 나온다면 어딘가 실수가 있었는지를 의심해봐야 한다. 이런 경우 대부분은 훈련 데이터에서만 성능이 좋고 처음 보는 데이터는 잘 예측하지 못하는 과적합이나 , 훈련 데이터에 테스트 데이터가 일부 섞이면서 발생하는 데이터 유출이 생긴 것이다 .
과적합된 모델 ??
1. 훈련 데이터에 대한 예측 성능은 높지만 , 처음 보는 데이터에 대한 예측은 훨씬 뒤쳐지는 모델이다. 즉 , 이미 본 데이터에만 지나치게 최적화되어 처음 보는 데이터를 제대로 예측하지 못하는 상태이다.
반대로 , 처음 보는 데이터를 잘 처리하는 모델은 ‘일반화’ 성능이 높다라고 한다.
과적합 방지하기
1. 교차검증으로 파라미터를 튜닝한다.
2. 규제화를 적용한다.
3. 학습곡선을 살핀다.
교차검증 : 훈련 데이터와 모델 검증용 검증 데이터를 분할하여 특정 데이터에 의존성이 낮은 , 즉 일반화 성능이 좋은 모델을 학습시키는 방법이다.
데이터의 구조
개발 데이터(70~80%) + 테스트 데이터(20~30%)
개발 데이터 = 훈련 데이터 + 검증 데이터
시스템에 통합하기
è 이 때 , 주의할 점은 예측 성능과 그에 따른 비즈니스 성과를 모니터링하는 것이다.
è 예측 성능 모니터링에는 미리 사람이 작성한 데이터와 정답 레이블의 쌍으로 이뤄진 데이터셋을 이용하여 성능을 측정한다.
운영 시스템에서 발생하는 머신러닝 문제 대처 방법
머신러닝을 적용한 운영 시스템에는 다음의 문제가 발생할 수 있다.
1. 확률적인 부분이 있어서 자동 테스트가 어렵다.
2. 오래 운용하면 , 사용자 경향이 변해 입력 경향도 바뀐다.
3. 처리 파이프라인이 복잡해진다.
4. 데이터 의존관계가 복잡해진다.
5. 실험 코드 혹은 파라미터가 포함되기 쉽다
6. 개발 시스템과 운영 시스템 간의 언어/프레임워크가 제각각이기 쉽다
이런 문제에 잘 대처하려면 다음과 같은 점을 중시하며 처음부터 변화를 전제로 설계해야 한다.
1. 사람이 직접 작성한 황금기준을 사용하여 예측 성능을 모니터링한다.
2. 예측 모델을 모듈화하여 알고리즘에 대한 테스트를 실시한다.
3. 모델을 버전관리하여 언제든 원하는 시점으로 돌아갈 수 있도록 한다.
4. 데이터 처리 파이프라인 자체를 저장한다.
5. 개발 시스템과 운영 시스템 간의 언어/프레임워크를 일치시킨다.
'학부공부 > 빅데이터기술' 카테고리의 다른 글
Dataset들을 사용해 보자 (0) | 2019.03.28 |
---|---|
분류 ( classification ) 와 회귀 ( regression ) (0) | 2019.03.26 |
Iris Dataset을 다뤄보자 . (0) | 2019.03.23 |
머신러닝이란?? (0) | 2019.03.23 |
데이터 과학이란?? (0) | 2019.03.16 |
#IT #먹방 #전자기기 #일상
#개발 #일상