DevCourse TIL Day4 Week17 - sparkml

김태준·2023년 7월 26일
0

Data Enginnering DevCourse

목록 보기
80/93
post-thumbnail

spark의 기타기능과 파티션에 대해 알아봤는데 본격적으로 sparkml에 대해 학습해보고자 한다.

✅ sparkml

ML 관련 알고리즘, 유틸리티로 구성된 라이브러리
(ex. classification ,regression, clustering, collaborative filtering, dimensionality, reduction)

RDD 기반(spark.mllib), DF기반(spark.ml) 두 버전이 존재 -> 현재는 spark.ml만 사용

✨ sparkml 장점

  • 원스톱 ML 프레임워크 (DF, sparkSQL등으로 전처리 가능)
  • Spark MLlib을 이용해 모델 빌딩
  • ML Pipeline을 통해 모델 빌딩 자동화
  • MLflow로 모델 관리 및 서빙 위한 Ops 기능도 제공
  • 대용량 데이터도 처리 가능 (여러 서버위에서 모델이 빌딩되기에)

MLflow

  • 모델 개발, 테스트, 관리 및 서빙까지 제공하는 End-to-End 프레임워크
  • python, java, R, API 지원
  • 트래킹, 모델, 프로젝트 지원

대표적인 예제인 보스턴 주택가격 예측, 타이타닉 승객 생존 예측을 sparkml로 실습해보자

✅ BEST practice

🎈 보스턴 주택가 예측

🎈 타이타닉 승객 생존 예측

✅ feature extractor & transformer

🎈 feature transformer

  • 먼저 feature들은 모두 숫자 필드여야 함. (인코딩(ordinal, onehot, label 등), stringIndexer 등 필요, )
  • 숫자 필드 값 범위 표준화 (scaling(standard, minmax), normalization)
  • 비어있는 필드 값 채우기 (imputer)

🎈 feature extractor

  • 기존 feature에서 파생변수 생성
  • TF-IDF, Word2vec (주로 NLP, 텍스트 데이터를 어떤 형태로 인코딩?)

✅ spark ml pipeline

모델 빌딩 시 아래 문제들이 발생한다.

    1. 트레이닝 데이터 관리 X
    1. 모델 훈련 방법 기록 X (어떤 트레인?, 어떤 피처 사용?, 하이퍼파라미터?)
    1. 모델 훈련에 많은 시간 소요 (훈련 자동화 必, 에러 발생 여지 多)
      -> spark ml pipeline을 통해 앞서 문제인 2,3 해결할 수 있음.
      -> 자동화를 통해 에러 소지 줄이고 반복을 빠르게 가능토록 함.

ML Pipeline 관련 개념을 정리하면 다음과 같다.

  • DS가 ML 개발, 테스트를 쉽게 (+ 반복적으로 )하도록 하는 기능 (DF 기반)
  • ML 알고리즘 관계없이 일관된 형태의 API 사용해 모델링 가능
  • 4개의 요소로 구성 (DF, Transformer, estimator, parameter)
  1. DF
  • ML Pipeline에서 df가 기본 데이터 포맷이며 csv, json, parquet, jdbc를 지원한다.
  • 추가로 이미지 데이터소스(jpeg, png), LIBSVM 데이터소스(label, feature 2개의 컬럼, features 컬럼은 벡터 형태구조)도 지원
  1. Transformer
  • 입력 df를 다른 df로 변환 (하나 이상 새로운 컬럼 추가)
  • 2종류의 transformer 존재(feature transformer, learning model), transform이 메인함수.
    -> Feature transformer : 입력 DF 컬럼들로부터 파생변수 만듬
    ex) imputer(기본값 지정), stringindexer(범주형 정보 숫자형으로 변환), vectorassembler (주어진 컬럼 통합해 하나의 벡터 컬럼으로 변환)
    -> learning model : ML모델에 해당하며, DF를 입력받아 예측값이 포함된 DF 출력
  1. Estimator
  • ML 알고리즘에 해당하며 fit이 메인 함수
    -> train df를 입력받아 ML모델(Transformer 생성)
    -> ML pipeline도 Estimator로 저장과 읽기 함수를 제공해 추후 재사용도 가능
  1. Parameter
  • Transformer, Estimator의 공통 API로 다양한 인자 적용 가능
  • 두 종류의 파라미터 존재 (Param : 하나의 이름, 값, ParamMap : Param리스트)
    ex) iteration 지정을 위한 setMaxIter()
    -> fit 또는 transform에 인자로 지정 가능!

ML Pipeline을 정리하면 결국 다음과 같다.

  • 하나 이상의 transformer, estimator가 연결된 모델링 워크플로우
  • 입력은 df, 출력은 ML 모델
  • Pipeline도 사실상 하나의 estimator, 따라서 실행은 fit으로 시작하며 estimator 특성상 저장 후 재사용을 위한 로딩 가능
    -> 재사용을 통해 한번 파이프라인 생성 시 추후 반복 모델빌딩 쉬움.
profile
To be a DataScientist

0개의 댓글