머신러닝과 관련된 다양한 알고리즘, 유틸리티로 구성된 라이브러리이다.
데이터의 크기에 관계없이 머신러닝을 할 수 있다는 것이 중요한 장점 중 하나이다.
(아직 딥러닝 지원은 미약하다고 한다)
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, MinMaxScalerInputerFeature 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함수 호출로 시작하고 저장했다가 다시 로딩하는것이 가능하다)
한번 만들어두면 반복 모델빌딩이 쉬워진다!