MLlib이란?
- 스파크(Spark)의 컴포넌트(Component) 중 하나이며, Machine Learining Library의 약자이며 머신 러닝(Machine Learning)을 쉽고 확장성 있게 적용하고 파이프 라인(Pipeline) 개발을 쉽게 하기 위해 만들어졌다.
- 스파크에는 여러가지 컴포넌트가 있는데, 데이터 프레임(Dataframe) API 위에서 동작한다.
- RDD API는 지원이 끊기는 추세여서 데이터 프레임 API를 이용한다.
- 데이터 프레임을 쓰는 MLlib API를 스파크 ML로도 부른다.
MLlib으로 가능한 것
- 피쳐 엔지니어링(Feature Engineering)
- 통계적 연산
- 흔히 쓰이는 ML 알고리즘
- Regression(Linear, Logistic)
- Support Vector Machines
- Naive Bayes
- Decision Tree
- K-Means clustering
- 추천(Alternating Least Squares)
MLlib의 컴포넌트
- 파이프 라인을 만들기 위한 여러가지 컴포넌트가 MLlib에 존재한다.
- 알고리즘
- Classification
- Regression
- Clustering
- Recommendation
- 파이프라인
- Training
- Evaluating(평가)
- Tuning
- Persistence(저장)
- Feature Engineering
- Extraction
- Transformation
- Utils
- Linear algebra(행렬 계산)
- Statistics
- 알고리즘
트랜스포머(Transformer)
- 피쳐 변환과 학습된 모델을 추상화한다.
- 모든 트랜스포머 인스턴스는
transform()
함수를 가졌다. - 데이터를 학습 가능한 포맷으로 변환한다.
- 데이터 프레임을 받아 새로운 데이터 프레임을 만드는데, 보통 하나 이상의 컬럼(column)을 더하게 된다.
- Data Normalization
- Tokenization
- One-Hot Encoding
에스티메이터(Estimatior)
- 모델의 학습 과정을 추상화한다.
- 모든 에스티메이터 인스턴스는
fit()
함수를 가졌다. fit()
은 데이터 프레임을 받아 모델을 반환한다.- 모델은 하나의 트랜스포머이다.
- lr = LinearRegression()
- model = lr.fit(data)
이밸류에이터(Evaluator)
- 매트릭(metric)을 기반으로 모델의 성능을 평가한다.
- RMSE(Root mean squared error)
- 모델을 여러개 만들어서 성능을 평가한 후 가장 좋은 모델을 뽑는 방식으로 튜닝을 자동화할 수 있다.
- BinaryClassificationEvaluator
- CrossValidator
파이프라인(Pipeline)
- 머신 러닝의 워크 플로우이며, 여러 스테이지를 담고 있고 저장(persist)될 수 있다.
예제
스파크 머신 러닝
- 간단한 데이터 프레임을 생성하여 머신 러닝을 구현해본다.
1 |
|
파이프 라인
- 파이프 라인을 구성하는 데에 포커스를 맞춘다.
- 파이프 라인은 데이터의 여러가지 처리 단계를 거칠 때 유용하게 쓰인다.
- 대표적인 예가 텍스트 데이터로서, 토크나이징이나 글자의 수를 센다던 지 원핫 인코딩을 하는 등의 여러가지 처리 방법이 있다.
1 |
|