아파치 스파크 ParamGridBuilder

IT 위키

ParamGridBuilder는 Apache Spark MLlib에서 하이퍼파라미터 튜닝을 위한 도구로, 여러 파라미터 조합을 생성해 CrossValidator나 TrainValidationSplit과 함께 사용된다. 이를 통해 모델의 하이퍼파라미터를 체계적으로 탐색하고 최적의 조합을 찾을 수 있다.

1 개요[편집 | 원본 편집]

ParamGridBuilder는 ML 파이프라인 내 Estimator 객체의 파라미터를 대상으로 여러 후보 값을 설정하고, 가능한 모든 조합을 만들어 파라미터 그리드를 생성한다. 생성된 파라미터 그리드는 교차 검증과 함께 사용되어 모델 성능을 평가하고 최적 파라미터를 결정한다.

2 사용 목적[편집 | 원본 편집]

  • 머신 러닝 모델의 성능을 높이기 위한 하이퍼파라미터 최적화
  • 다수의 하이퍼파라미터 조합을 테스트하여 최적 모델 탐색
  • 분산 환경에서 효율적인 튜닝 수행

3 주요 메서드[편집 | 원본 편집]

  • addGrid(param, values)
    • 특정 파라미터에 대해 여러 후보값을 지정한다.
  • build()
    • 지정된 모든 조합을 기반으로 파라미터 그리드를 반환한다.

4 예시[편집 | 원본 편집]

from pyspark.ml.classification import LogisticRegression
from pyspark.ml.tuning import ParamGridBuilder, CrossValidator
from pyspark.ml.evaluation import BinaryClassificationEvaluator
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("ParamGridExample").getOrCreate()

# 데이터 준비
data = spark.read.format("libsvm").load("data/sample_libsvm_data.txt")

# 모델 정의
lr = LogisticRegression()

# 파라미터 그리드 정의
paramGrid = ParamGridBuilder() \
    .addGrid(lr.regParam, [0.01, 0.1, 1.0]) \
    .addGrid(lr.elasticNetParam, [0.0, 0.5, 1.0]) \
    .build()

# 평가자 및 교차 검증기 정의
evaluator = BinaryClassificationEvaluator()
cv = CrossValidator(estimator=lr,
                    estimatorParamMaps=paramGrid,
                    evaluator=evaluator,
                    numFolds=3)

# 모델 학습 및 평가
cvModel = cv.fit(data)
print("Best model params:", cvModel.bestModel.extractParamMap())

4.1 출력 예시[편집 | 원본 편집]

파라미터 조합별 성능이 평가되며, 최적 조합은 다음과 같이 확인할 수 있다.

Best model params: {
    Param(parent='LogisticRegression_...', name='elasticNetParam', ...): 0.0,
    Param(parent='LogisticRegression_...', name='regParam', ...): 0.1
}

5 장점[편집 | 원본 편집]

  • 복수 파라미터를 동시에 튜닝 가능
  • CrossValidator 및 TrainValidationSplit과 통합되어 쉽게 성능 비교 가능
  • Spark의 분산 처리 기반으로 대규모 데이터에도 적합

6 단점[편집 | 원본 편집]

  • 조합 수가 많아질 경우 실행 시간이 크게 증가
  • 각 조합에 대해 별도 모델 학습이 필요하므로 자원 소모가 큼

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

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