아파치 스파크 머신 러닝 파이프라인
IT 위키
아파치 스파크 머신 러닝 파이프라인(Spark ML Pipeline)은 Apache Spark의 머신 러닝 라이브러리인 MLlib에서 제공하는 고수준 API로, 데이터 전처리부터 모델 학습, 평가, 예측에 이르기까지 전체 머신 러닝 흐름을 구조화된 방식으로 구성할 수 있도록 지원한다. 파이프라인은 대규모 분산 처리 환경에서 확장성과 재현성을 높이기 위해 설계되었다.
개요[편집 | 원본 편집]
스파크 머신 러닝 파이프라인은 여러 처리 단계를 연결하여 순차적으로 실행할 수 있는 구조로, 각 단계는 변환기(Transformer) 또는 추정기(Estimator) 객체로 구성된다. 학습이 완료되면 전체 파이프라인이 하나의 모델(PipelineModel)로 저장되며, 동일한 방식으로 새로운 데이터에 적용할 수 있다.
주요 구성 요소[편집 | 원본 편집]
- DataFrame
- Spark ML 파이프라인은 입력 데이터로 DataFrame을 사용한다. 이 DataFrame은 구조화된 테이블 형태이며, 스키마를 포함한다.
- Transformer
- 입력 DataFrame을 다른 DataFrame으로 변환하는 객체
- 예: Tokenizer, VectorAssembler, StandardScaler, 학습 완료된 모델
- Estimator
- Transformer를 생성할 수 있는 객체. .fit() 메서드를 통해 학습하고 Transformer를 반환한다.
- 예: LogisticRegression, DecisionTreeClassifier
- Pipeline
- 여러 개의 Transformer와 Estimator를 순서대로 연결한 구조
- PipelineModel
- 학습이 완료된 Pipeline 인스턴스. .transform()을 통해 예측 및 처리 수행 가능
예제[편집 | 원본 편집]
아래는 간단한 텍스트 분류 파이프라인 구성 예시이다.
from pyspark.ml import Pipeline
from pyspark.ml.feature import Tokenizer, HashingTF
from pyspark.ml.classification import LogisticRegression
# 단계별 구성
tokenizer = Tokenizer(inputCol="text", outputCol="words")
hashingTF = HashingTF(inputCol="words", outputCol="features")
lr = LogisticRegression(maxIter=10, regParam=0.001)
# 파이프라인 구성
pipeline = Pipeline(stages=[tokenizer, hashingTF, lr])
# 학습 데이터
training = spark.createDataFrame([
(0, "spark is great"),
(1, "hadoop is old"),
(0, "spark is fast"),
(1, "mapreduce is slow")
], ["label", "text"])
# 파이프라인 학습
model = pipeline.fit(training)
# 테스트 데이터 예측
test = spark.createDataFrame([
(0, "spark wins again"),
(1, "hadoop struggles")
], ["label", "text"])
predictions = model.transform(test)
predictions.select("text", "prediction").show()
장점[편집 | 원본 편집]
- 분산 환경에서 대규모 데이터 처리 가능
- 파이프라인 구조로 전처리, 학습, 예측 단계를 일관성 있게 정의
- 모델과 파이프라인을 직렬화하여 저장 및 재사용 가능
- CrossValidator, TrainValidationSplit 등과 통합 가능
단점[편집 | 원본 편집]
- scikit-learn보다 낮은 수준의 유연성
- MLlib API가 아직 일부 알고리즘에 한정적일 수 있음
관련 모듈[편집 | 원본 편집]
- pyspark.ml.feature – 전처리용 Transformer 제공
- pyspark.ml.classification – 분류 모델
- pyspark.ml.regression – 회귀 모델
- pyspark.ml.tuning – 교차 검증, 하이퍼파라미터 튜닝
- pyspark.ml.evaluation – 평가 메트릭 제공
같이 보기[편집 | 원본 편집]
참고 문헌[편집 | 원본 편집]
- Apache Spark MLlib 공식 문서: https://spark.apache.org/docs/latest/ml-guide.html
- Karau, H., Konwinski, A., Wendell, P., & Zaharia, M. (2015). Learning Spark. O'Reilly Media.