- DB, CSV, JSON 등
- 스파크는 다양한 데이터소스를 불러들일 수 있고 크고 작은 데이터를 처리할 수 있음
EDA 과정 (Exploratory Data Analysis)
대화형 쿼리 및 시각화 방법 등을 사용해 데이터의 분포, 상관관계 및 기타 세부 현황을 파악하는 과정
- 해당 과정을 통해 수집 서버에 잘못 기록되어 삭제해야 하는 값, 누락된 값이 무엇인지 파악할 수 있어야 함
- 스파크에서는 구조적 api 형태로 함수를 제공하므로 쉽게 데이터를 정제하고 파악할 수 있음
피처 엔지니어링의 프로세스
데이터 정규화, 다른 변수들과의 상호작용을 나타내는 새로운 변수 추가, 범주형 변수 조작 및 머신러닝 모델에서 인식할 수 있도록 적절한 형식으로의 변환 등 다양한 작업 포함
- 머신러닝 알고리즘에 적용 가능한 형식으로 데이터를 변환하는 과정
- 피처 엔지니어링은 머신러닝 애플리케이션의 결과에 큰 영향을 미치기 때문에 신중하게 수행되어야함
- 과거 정보 데이터셋(ex 스팸메일 또는 스팸메일 아님)과 분석 목적(ex 스팸메일 분류)이 주어지고, 입력을 받았을 때 그에 적합한 출력을 예측하는 모델을 학습시킴
- 입력 데이터에 대해 모델이 얼마나 잘 동작하는지에 따라 모델 내부 파라미터가 달라질 수 있음
- 학습 과정의 결과 = 모델
- 모델에 입력변수를 재공해야 예측을 할 수 있음
- 모델은 입력받은 변수에 수학적 연산을 적용하여 출력을 생성
- 모델이 본래 목적에 적합한 성능을 내는지 사전에 파악하는 것이 중요하며, 이는 모델 튜닝과 평가로 수행할 수 있음
데이터를 여러 개로 나누어 새로운 데이터에 대해 학습 모델의 효과성을 객관적으로 테스트하는 단계
- 모델이 주어진 데이터셋의 기본적인 특성을 제대로 반영하고 있는지 또는 학습 데이터셋에만 특화되지 않는지 등을 확인할 수 있음
* 모델을 생성하기 위해 필요한 세 가지 데이터 셋
1) 학습셋 : 모델을 학습시키기 위해 사용
2) 검증셋 : 모델을 다양하게 변형시켜 적합성을 테스트하기 위해 사용
3) 테스트셋 : 다양하게 변형된 모델을 최종 평가하여 그중 어떤 모델이 가장 적합한지 확인하기 위해 사용
- 모델 학습 및 테스트 과정을 통해 성능이 좋은 모델이 만들어지면 비로소 모델을 사용할 수 있음
- 모델 생성이 완료되면 실제 예측을 수행하기 위해 다른 스파크 프로그램에 모델을 적재할 수 있음
- 이를 위해서는 특정 알고리즘에 대한 '모델'버전을 사용하여 디스크에 저장된 모델을 불러와야함
ex) CrossValidator를 사용하려면 CrossValidatorModel이 저장된 버전을 읽어야함
- 스파크에는 머신러닝 모델을 운영 환경에 적용하기 위한 다양한 배포 방식을 제공
- 여기서 데이터는 분석을 위해 저장된 데이터를 말하며, 스파크는 이런 종류의 배포에 아주 적합
- 추천 분야에 적합
- 분류, 회귀에는 적합 X
- 만일 스파크를 서비스 부문에 사용한다면 스파크 잡을 시작하는 오버헤드가 클러스터에서 실행하지 않더라도 높을 수 있기 때문에 대기시간이 길어질 수 있음
- 또한, 이러한 배포 방법은 병렬 처리가 어렵기 때문에 여러 개의 모델 복제본 앞에 로드 밸런서를 배치하고 직접 REST API를 구현하여 추가하는 것까지 고려할 필요가 있음
- 해당 모델 서비스에 대한 표준은 현재 존재하지 않음
- 원시 데이터의 조작이 너무 많이 필요하지 않은 경우에는 잘 작동하나 시간이 지남에 따라 유지 보수가 매우 어려울 수 있음
- 현재 진행 중인 여러 가지 해결책이 있음
ex) MLlib은 일부 모델을 공통 모델 상호 교환 형식인 PMML로 내보낼 수 있음
- 구조적 스트리밍과 함께 사용할 때는 가능하지만 일부 모델에서는 복잡해질 수 있음
출처 : 스파크 완벽 가이드
글을 읽는 모든 분들의 라이킷과 댓글을 환영합니다. ;-)
Copyright 2020. April all rights reserved.