하이퍼 매개 변수 조정 - 유방암 퇴치
이 자습서에서는 SynapseML을 사용하여 선택한 분류자를 위한 최상의 하이퍼 매개 변수 조합을 식별하여 궁극적으로 보다 정확하고 신뢰할 수 있는 모델을 만드는 방법을 보여 줍니다. 이를 입증하기 위해 분산 무작위 그리드 검색 하이퍼 매개 변수 튜닝을 수행하여 유방암을 식별하는 모델을 빌드하는 방법을 보여 줍니다.
1 - 종속성 설정
먼저 pandas를 가져오고 Spark 세션을 설정합니다.
import pandas as pd
from pyspark.sql import SparkSession
# Bootstrap Spark Session
spark = SparkSession.builder.getOrCreate()
다음으로, 데이터를 읽고 튜닝 및 테스트 집합으로 분할합니다.
data = spark.read.parquet(
"wasbs://publicwasb@mmlspark.blob.core.windows.net/BreastCancer.parquet"
).cache()
tune, test = data.randomSplit([0.80, 0.20])
tune.limit(10).toPandas()
사용할 모델을 정의합니다.
from synapse.ml.automl import TuneHyperparameters
from synapse.ml.train import TrainClassifier
from pyspark.ml.classification import (
LogisticRegression,
RandomForestClassifier,
GBTClassifier,
)
logReg = LogisticRegression()
randForest = RandomForestClassifier()
gbt = GBTClassifier()
smlmodels = [logReg, randForest, gbt]
mmlmodels = [TrainClassifier(model=model, labelCol="Label") for model in smlmodels]
2 - AutoML을 사용하여 최상의 모델 찾기
synapse.ml.automl
에서 SynapseML의 AutoML 클래스를 가져옵니다.
HyperparamBuilder
(을)를 사용하여 하이퍼 매개 변수를 지정합니다. DiscreteHyperParam
또는 RangeHyperParam
하이퍼 매개 변수를 추가합니다. TuneHyperparameters
(은)는 균일한 분포에서 임의로 값을 선택합니다.
from synapse.ml.automl import *
paramBuilder = (
HyperparamBuilder()
.addHyperparam(logReg, logReg.regParam, RangeHyperParam(0.1, 0.3))
.addHyperparam(randForest, randForest.numTrees, DiscreteHyperParam([5, 10]))
.addHyperparam(randForest, randForest.maxDepth, DiscreteHyperParam([3, 5]))
.addHyperparam(gbt, gbt.maxBins, RangeHyperParam(8, 16))
.addHyperparam(gbt, gbt.maxDepth, DiscreteHyperParam([3, 5]))
)
searchSpace = paramBuilder.build()
# The search space is a list of params to tuples of estimator and hyperparam
print(searchSpace)
randomSpace = RandomSpace(searchSpace)
다음으로 TuneHyperparameters를 실행하여 최상의 모델을 가져옵니다.
bestModel = TuneHyperparameters(
evaluationMetric="accuracy",
models=mmlmodels,
numFolds=2,
numRuns=len(mmlmodels) * 2,
parallelism=1,
paramSpace=randomSpace.space(),
seed=0,
).fit(tune)
3 - 모델 평가
최상의 모델의 매개 변수를 보고 기본 최적 모델 파이프라인을 검색할 수 있습니다.
print(bestModel.getBestModelInfo())
print(bestModel.getBestModel())
테스트 집합에 대해 점수를 매기고 메트릭을 볼 수 있습니다.
from synapse.ml.train import ComputeModelStatistics
prediction = bestModel.transform(test)
metrics = ComputeModelStatistics().transform(prediction)
metrics.limit(10).toPandas()