아파치 스파크 머신 러닝 파이프라인: 두 판 사이의 차이
IT 위키
(새 문서: 아파치 스파크 머신 러닝 파이프라인(Spark ML Pipeline)은 Apache Spark의 머신 러닝 라이브러리인 MLlib에서 제공하는 고수준 API로, 데이터 전처리부터 모델 학습, 평가, 예측에 이르기까지 전체 머신 러닝 흐름을 구조화된 방식으로 구성할 수 있도록 지원한다. 파이프라인은 대규모 분산 처리 환경에서 확장성과 재현성을 높이기 위해 설계되었다. ==개요== 스파크 머신 러...) |
편집 요약 없음 |
||
77번째 줄: | 77번째 줄: | ||
*Apache Spark MLlib 공식 문서: https://spark.apache.org/docs/latest/ml-guide.html | *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. | *Karau, H., Konwinski, A., Wendell, P., & Zaharia, M. (2015). Learning Spark. O'Reilly Media. | ||
[[분류:분산 컴퓨팅]] | [[분류:분산 컴퓨팅]] | ||
[[분류:아파치 스파크]] | [[분류:아파치 스파크]] | ||
[[분류:인공지능]] |
2025년 4월 9일 (수) 09:21 판
아파치 스파크 머신 러닝 파이프라인(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.