머신러닝과 관련된 다양한 알고리즘, 유틸리티로 구성된 라이브러리이다.
데이터의 크기에 관계없이 머신러닝을 할 수 있다는 것이 중요한 장점 중 하나이다.
(아직 딥러닝 지원은 미약하다고 한다)
Spark MLib은 RDD기반과 데이터프레입 기반의 두 가지 버전이 존재한다.
spark.mllib
: RDD 기반, 더이상 업데이트가 안됨spark.ml
: 데이터프레임 기반spark.mllib
은 RDD 위에서 동작하는 이전 라이브러이기 때문에 업데이트가 안되고 있다고 한다.
그렇기 때문에 spark.ml
을 사용하는것이 좋다!
>> import pyspark.ml
모델 관리와 서빙을 위한 Ops 관련 기능 제공
MLflow를 사용하면 operation 부분이 깔끔해진다.
API 형태로 access하면 된다.
(근데 사용을 안해봐서 글만 보고는 감이 잘 안오는것같기두,,)
피쳐 값들을 모델 훈련에 적합한 형태로 바꾸는 것을 말한다.
Feature Transformer가 하는일은?
StringIndexer, OneHotEncoder...
Scaler
)StandardScaler, MinMaxScaler
Inputer
Feature Extractor가 하는일은?
2,3을 해결한 ML Pipeline
등장!
자동화로 에러 소지를 줄이고 반복을 빠르게 할 수있도록 해준다.
4가지 요소로 구성
데이터프레임
이미지 데이터소스
, LIBSVM 데이터 소스
도 지원Transformer
입력 데이터프레임을 다른 데이터프레임으로 변환
Feature Transformer
: 입력 데이터프레임의 컬럼으로부터 새로운 컬럼을 만들어내 이를 추가한 새로운 데이터프레임을 출력해줌
(피쳐 엔지니어링을 하는데 사용)
Learning Model
: 머신러닝 모델에 해당
피쳐 데이터프레임을 입력으로 받아 예측값이 새로운 컬럼으로 포함된 데이터프레임을 출력으로 내줌
Q. Learning Model이 결국 머신러닝 모델인데 왜 transformer로 분류?
A. Model에 feature를 input으로 주면 prediction값, classification이면 확률 등의
이런 새로운 컬럼들이 추가된 새로운 데이터 프레임을 만들어내기 때문에
learning model도 transformer로 볼 수 있다.
Estimator
fit
이 메인 함수Parameter
param
: 하나의 파라미터를 정의하고 싶을때paramMap
: 다수의 파라미터를 정의하고 싶을때즉, ML Pipeline은 하나 이상의 Transformerdhk Estimator가 연결된 모델링 workflow
(input: 데이터프레임, output: 머신러닝 모델)
ML Pipeline 자체도 Estimator라고 할 수 있다.
(실행은 fit함수 호출로 시작하고 저장했다가 다시 로딩하는것이 가능하다)
한번 만들어두면 반복 모델빌딩이 쉬워진다!