Spark ML 이란
- 머신러닝 관련 다양한 알고리즘, 유틸리티로 구성된 라이브러리
- Classification, Regression, Clustering, Collaborative Filtering, Dimensionality Reduction.
- https://spark.apache.org/docs/latest/ml-classification-regression.html
- 아직 딥러닝은 지원은 아직 미약
- 여기에는 RDD 기반과 데이터프레임 기반의 두 버전이 존재
- spark.mllib vs. spark.ml
- spark.mllib가 RDD 기반이고 spark.ml은 데이터프레임 기반
- spark.mllib는 RDD위에서 동작하는 이전 라이브러리로 더 이상 업데이트가 안됨
- 항상 spark.ml을 사용할 것!
- import pyspark.ml (import pyspark.mllib)
- spark.mllib vs. spark.ml
Spark ML의 장점
- Onestop ML Framework
- 데이터프레임과 SparkSQL등을 이용해 전처리
- Spark ML를 이용해 모델 빌딩
- ML Pipeline을 통해 모델 빌딩 자동화
- MLflow로 모델 관리하고 서빙
- 대용량 데이터도 처리 가능
- 데이터가 작은 경우 꼭 spark를 쓸 필요는 없음
MLflow
- 모델의 관리와 서빙을 위한 Ops 관련 기능도 제공
- 모델 개발과 테스트와 관리와 서빙까지 제공해주는 End-to-End 프레임웍
- MLflow는 Python, JAVA, R, API(Python, JAVA, R이 아닌 다른 언어를 API로 연결 가능)를 지원
- MLflow는 트래킹(Tracking), 모델(Models), 프로젝트(Projects)를 지원
Spark ML에서 제공하는 알고리즘
- Classification
- Logistic regression, Decision tree, Random forest, Gradient-boosted tree, …
- Regression
- Linear regression, Decision tree, Random forest, Gradient-boosted tree
- Clustering
- K-means, LDA(Latent Dirichlet Allocation), GMM(Gaussian Mixture Model)
- Collaborative Filtering
- 명시적인 피드백과 암묵적인 피드백 기반
- 명시적인 피드백의 예) 리뷰 평점
- 암묵적인 피드백의 예) 클릭, 구매 등등
Spark ML 기반 모델 빌딩의 기본 구조
- 다른 라이브러리를 사용한 모델 빌딩과 크게 다르지 않음
- Training Set 전처리
- 모델 빌딩
- 모델 검증 (confusion matrix)
- Scikit-Learn과 비교했을 때 장점
- 차이점은 결국 데이터의 크기
- Scikit-Learn은 하나의 컴퓨터에서 돌아가는 모델 빌딩
- Spark ML는 여러 서버 위에서 모델 빌딩
- 트레이닝셋의 크기가 크면 전처리와 모델 빌딩에 있어 Spark이 큰 장점을 가짐
- Spark은 ML 파이프라인을 통해 모델 개발의 반복을 쉽게 해줌
위 포스팅은 [파이썬으로 해보는 Spark 프로그래밍 with 프로그래머스] 강의를 듣고 정리한 내용입니다
728x90
반응형