[TIL] day38

Hyebin·2022년 3월 3일
0

TIL

목록 보기
39/47

TIL

Spark MLib?

머신러닝과 관련된 다양한 알고리즘, 유틸리티로 구성된 라이브러리이다.
데이터의 크기에 관계없이 머신러닝을 할 수 있다는 것이 중요한 장점 중 하나이다.
(아직 딥러닝 지원은 미약하다고 한다)

Spark MLib은 RDD기반과 데이터프레입 기반의 두 가지 버전이 존재한다.

  • spark.mllib: RDD 기반, 더이상 업데이트가 안됨
  • spark.ml: 데이터프레임 기반

spark.mllib은 RDD 위에서 동작하는 이전 라이브러이기 때문에 업데이트가 안되고 있다고 한다.
그렇기 때문에 spark.ml을 사용하는것이 좋다!

>> import pyspark.ml

Spark MLlib의 장점

  • 대용량 데이터 처리가 가능
  • 원스톱 ML 프레임웍
    • 데이터프레임과 SparkSQl등을 이용해 전처리
    • Spark MLlib을 이용해 모델 빌딩
    • ML Pipeline을 통해 모델 빌딩 자동화
    • MLflow로 모델 관리하고 서빙

MLflow?

모델 관리와 서빙을 위한 Ops 관련 기능 제공
MLflow를 사용하면 operation 부분이 깔끔해진다.
API 형태로 access하면 된다.
(근데 사용을 안해봐서 글만 보고는 감이 잘 안오는것같기두,,)


Spark MLib feature 변환

피쳐 추출과 변환

피쳐 값들을 모델 훈련에 적합한 형태로 바꾸는 것을 말한다.

  • Feature Transformer
  • Feature Extractor

Feature Transformer가 하는일은?

  • 피쳐 값들은 숫자 필드여야 하기 때문에 categorical 값들을 숫자 필드로 변환
    • StringIndexer, OneHotEncoder...
    • Indexer모델을 만들고(fit), Indexer 모델로 데이터프레임을 transform
  • 숫자 필드 값의 범위 표준화 (Scaler)
    • StandardScaler, MinMaxScaler
    • Feature Scaling 혹은 Normalization이라 부른다.
  • 비어있는 필드들의 값을 Inputer를 사용해서 채우기
    • Inputer
    • Inputer 모델을 만들고(fit), Inputer 모델로 데이터프레임을 transform

Feature Extractor가 하는일은?

  • 기존 피쳐에서 새로운 피쳐를 추출
  • 텍스트 데이터를 어떤 형태로 인코딩하는 것이 여기에 해당되기 때문에, 텍스트 관련 데이터에서 많이 사용됨

모델 빌딩과 관련된 문제들

  1. 트레이닝 셋의 관리가 안됨
  2. 모델 훈련 방법이 기록이 안됨
  3. 모델 훈련에 많은 시간이 소요됨

2,3을 해결한 ML Pipeline 등장!
자동화로 에러 소지를 줄이고 반복을 빠르게 할 수있도록 해준다.

ML 파이프라인이란?

  • 데이터프레임 기반으로 머신러닝 개발과 테스트를 쉽게 해주는 기능이다.
  • 머신러닝 알고리즘에 관계없이 일관된 형태의 API를 사용해 모델링이 가능하다.
  • ML 모델개발과 테스트를 반복가능하게해준다.

4가지 요소로 구성

  • 데이터프레임

    • 데이터 프레임이 기본 데이터 포맷
    • 기본적인 csv, json 등 뿐만이 아니라 이미지 데이터소스, LIBSVM 데이터 소스도 지원
  • Transformer

    • 입력 데이터프레임을 다른 데이터프레임으로 변환

    • Feature Transformer: 입력 데이터프레임의 컬럼으로부터 새로운 컬럼을 만들어내 이를 추가한 새로운 데이터프레임을 출력해줌
      (피쳐 엔지니어링을 하는데 사용)

    • Learning Model: 머신러닝 모델에 해당
      피쳐 데이터프레임을 입력으로 받아 예측값이 새로운 컬럼으로 포함된 데이터프레임을 출력으로 내줌

      		Q. Learning Model이 결국 머신러닝 모델인데 왜 transformer로 분류?
      		A. Model에 feature를 input으로 주면 prediction값, classification이면 확률 등의 
      			이런 새로운 컬럼들이 추가된 새로운 데이터 프레임을 만들어내기 때문에 
      			learning model도 transformer로 볼 수 있다. 
  • Estimator

    • 머신러닝 알고리즘에 해당
    • 저장과 읽기 함수 제공 (save & load)
    • fit이 메인 함수
  • Parameter

    • param: 하나의 파라미터를 정의하고 싶을때
    • paramMap: 다수의 파라미터를 정의하고 싶을때

정리

즉, ML Pipeline은 하나 이상의 Transformerdhk Estimator가 연결된 모델링 workflow
(input: 데이터프레임, output: 머신러닝 모델)
ML Pipeline 자체도 Estimator라고 할 수 있다.
(실행은 fit함수 호출로 시작하고 저장했다가 다시 로딩하는것이 가능하다)
한번 만들어두면 반복 모델빌딩이 쉬워진다!

profile
공부중입니다 :D

0개의 댓글

관련 채용 정보