Just Fighting

[PySpark] 하이퍼 파라미터 튜닝하기 본문

Big Data

[PySpark] 하이퍼 파라미터 튜닝하기

yennle 2022. 4. 2. 17:06
728x90

2022.03.29 - [ETC] - [PySpark] Pipeline 사용하기

이전 게시글에 이어서 모델을 튜닝해보고자 한다.

 

 

모델 튜닝을 위해서 ParamGridBuilder와 CrossValidator를 사용한다.

ParamGridBuilder를 통해 조절하고 싶은 변수들의 값들을 지정해준다.

그리고 CrossValidator를 이용해 각 경우의 수에 따라 모델을 생성한다.

# 모델 튜닝

from pyspark.ml.tuning import ParamGridBuilder, CrossValidator

paramGrid = (ParamGridBuilder()
             .addGrid(lr.maxIter, [100, 120])
             .addGrid(lr.regParam, [0.0, 0.1])
             .addGrid(lr.elasticNetParam, [0.03, 0.05, 0.1])
             .build())

cv = CrossValidator(
    estimator=pipeline,
    estimatorParamMaps=paramGrid,
    evaluator=bcEvaluator,
    numFolds=3
)

 

CrossValidator를 실행하면 가장 정확도가 높은 모델을 최종모델로 선정한다.

from pyspark.ml.evaluation import BinaryClassificationEvaluator
 
bcEvaluator = BinaryClassificationEvaluator(rawPredictionCol='rawPrediction', labelCol='win', metricName="areaUnderROC")
# CrossValidator 실행

cvModel = cv.fit(train_data)
lr_cv_predictions = cvModel.transform(test_data)
bcEvaluator.evaluate(lr_cv_predictions)

 

모든 경우의 수를 보고 싶다면 아래 코드를 실행하면 된다.

cvModel.getEstimatorParamMaps()

 

가장 성능이 좋은 모델의 파라미터를 보고 싶다면 아래 코드 이용하면 된다.

# Best Model

import numpy as np

cvModel.getEstimatorParamMaps()[ np.argmax(cvModel.avgMetrics) ]

 

 

 

모델 튜닝 전

 

모델 튜닝 후

 

큰 차이는 없지만 이런 방식으로 모델 튜닝을 하면 될 것 같다!!

 

728x90
Comments