brunch

매거진 개발노트

You can make anything
by writing

C.S.Lewis

by April Mar 01. 2020

머신러닝 단계에서 필요한 것

 

# 모델 생성


1. 데이터 수집 

- DB, CSV, JSON 등 

- 스파크는 다양한 데이터소스를 불러들일 수 있고 크고 작은 데이터를 처리할 수 있음 


2. 데이터 정제 

EDA 과정 (Exploratory Data Analysis)
대화형 쿼리 및 시각화 방법 등을 사용해 데이터의 분포, 상관관계 및 기타 세부 현황을 파악하는 과정

- 해당 과정을 통해 수집 서버에 잘못 기록되어 삭제해야 하는 값, 누락된 값이 무엇인지 파악할 수 있어야 함 

- 스파크에서는 구조적 api 형태로 함수를 제공하므로 쉽게 데이터를 정제하고 파악할 수 있음 


3. 피처 엔지니어링 

피처 엔지니어링의 프로세스
데이터 정규화, 다른 변수들과의 상호작용을 나타내는 새로운 변수 추가, 범주형 변수 조작 및 머신러닝 모델에서 인식할 수 있도록 적절한 형식으로의 변환 등 다양한 작업 포함 

- 머신러닝 알고리즘에 적용 가능한 형식으로 데이터를 변환하는 과정 

- 피처 엔지니어링은 머신러닝 애플리케이션의 결과에 큰 영향을 미치기 때문에 신중하게 수행되어야함 


4. 모델 학습 

- 과거 정보 데이터셋(ex 스팸메일 또는 스팸메일 아님)과 분석 목적(ex 스팸메일 분류)이 주어지고, 입력을 받았을 때 그에 적합한 출력을 예측하는 모델을 학습시킴 

- 입력 데이터에 대해 모델이 얼마나 잘 동작하는지에 따라 모델 내부 파라미터가 달라질 수 있음 

- 학습 과정의 결과 = 모델

- 모델에 입력변수를 재공해야 예측을 할 수 있음 

- 모델은 입력받은 변수에 수학적 연산을 적용하여 출력을 생성 

- 모델이 본래 목적에 적합한 성능을 내는지 사전에 파악하는 것이 중요하며, 이는 모델 튜닝과 평가로 수행할 수 있음 


5. 모델 튜닝 및 평가 

데이터를 여러 개로 나누어 새로운 데이터에 대해 학습 모델의 효과성을 객관적으로 테스트하는 단계 

- 모델이 주어진 데이터셋의 기본적인 특성을 제대로 반영하고 있는지 또는 학습 데이터셋에만 특화되지 않는지 등을 확인할 수 있음


* 모델을 생성하기 위해 필요한 세 가지 데이터 셋 

1) 학습셋 : 모델을 학습시키기 위해 사용 

2) 검증셋 : 모델을 다양하게 변형시켜 적합성을 테스트하기 위해 사용 

3) 테스트셋 : 다양하게 변형된 모델을 최종 평가하여 그중 어떤 모델이 가장 적합한지 확인하기 위해 사용 


6. 모델 및 Insight 활용하기 

- 모델 학습 및 테스트 과정을 통해 성능이 좋은 모델이 만들어지면 비로소 모델을 사용할 수 있음 





# 모델 활용


7. 모델 저장 및 적용 

- 모델 생성이 완료되면 실제 예측을 수행하기 위해 다른 스파크 프로그램에 모델을 적재할 수 있음 

- 이를 위해서는 특정 알고리즘에 대한 '모델'버전을 사용하여 디스크에 저장된 모델을 불러와야함 

ex) CrossValidator를 사용하려면 CrossValidatorModel이 저장된 버전을 읽어야함 


8. 모델 배포 

- 스파크에는 머신러닝 모델을 운영 환경에 적용하기 위한 다양한 배포 방식을 제공 


1) 머신러닝 모델을 오프라인으로 학습시킨 다음 오프라인 데이터에 적용하는 경우

- 여기서 데이터는 분석을 위해 저장된 데이터를 말하며, 스파크는 이런 종류의 배포에 아주 적합 


2) 오프라인에서 모델을 학습시킨 다음 데이터베이스 (키-값 저장소)에 결과 저장하는 경우 

- 추천 분야에 적합 

- 분류, 회귀에는 적합 X 


3) 머신러닝 알고리즘을 오프라인으로 학습시키고, 모델을 디스크에 저장한 다음 이를 사용하여 서비스하는 경우 

- 만일 스파크를 서비스 부문에 사용한다면 스파크 잡을 시작하는 오버헤드가 클러스터에서 실행하지 않더라도 높을 수 있기 때문에 대기시간이 길어질 수 있음 

- 또한, 이러한 배포 방법은 병렬 처리가 어렵기 때문에 여러 개의 모델 복제본 앞에 로드 밸런서를 배치하고 직접 REST API를 구현하여 추가하는 것까지 고려할 필요가 있음 

- 해당 모델 서비스에 대한 표준은 현재 존재하지 않음 


4) 단일 시스템상에서 사용자의 분산 모델을 훨씬 더 빠르게 수행할 수 있도록 수동변환하는 경우 

- 원시 데이터의 조작이 너무 많이 필요하지 않은 경우에는 잘 작동하나 시간이 지남에 따라 유지 보수가 매우 어려울 수 있음 

- 현재 진행 중인 여러 가지 해결책이 있음 

ex) MLlib은 일부 모델을 공통 모델 상호 교환 형식인 PMML로 내보낼 수 있음 


5) 머신러닝 알고리즘을 온라인으로 학습시키고 온라인에서 사용하는 경우 

- 구조적 스트리밍과 함께 사용할 때는 가능하지만 일부 모델에서는 복잡해질 수 있음 



출처 : 스파크 완벽 가이드





글을 읽는 모든 분들의 라이킷과 댓글을 환영합니다. ;-)


Copyright 2020. April all rights reserved.

매거진의 이전글 개발자의 글쓰기 / 김수철
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari