아파치 스파크 머신 러닝 파이프라인

IT 위키
빅데이터분석기사 (토론 | 기여)님의 2025년 4월 9일 (수) 09:22 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

아파치 스파크 머신 러닝 파이프라인(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 – 평가 메트릭 제공

같이 보기[편집 | 원본 편집]

참고 문헌[편집 | 원본 편집]