Just Fighting
[PySpark] 하이퍼 파라미터 튜닝하기 본문
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
'Big Data' 카테고리의 다른 글
[Kafka] 카프카 개념정리 - 토픽 (0) | 2022.05.11 |
---|---|
[Kafka] 카프카 기본개념 (0) | 2022.05.10 |
[PySpark] Pipeline 사용하기 (0) | 2022.03.29 |
[PySpark] MLlib를 이용한 로지스틱 회귀분석 (0) | 2022.03.24 |
[Spark] 데이터 전처리하기(spark sql사용, 결측값 처리) (0) | 2022.03.15 |
Comments