다음을 통해 공유


HyperParameterTuning - 유방암 퇴치

이 자습서에서는 SynapseML을 사용하여 선택한 분류자용 하이퍼 매개 변수의 최상의 조합을 식별하여 보다 정확하고 안정적인 모델을 빌드하는 방법을 보여 줍니다. 이 자습서에서는 분산 무작위 그리드 검색 하이퍼 매개 변수 튜닝을 수행하여 유방암을 식별하는 모델을 빌드하는 방법을 보여줍니다.

종속성 설정

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]

AutoML을 사용하여 최상의 모델 찾기

에서 SynapseML AutoML 클래스를 가져옵니다 synapse.ml.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)

모형 평가하기

최상의 모델의 매개 변수를 보고 기본 최적 모델 파이프라인을 검색합니다.

print(bestModel.getBestModelInfo())
print(bestModel.getBestModel())

테스트 집합에 대해 점수를 매기고 메트릭을 봅니다.

from synapse.ml.train import ComputeModelStatistics

prediction = bestModel.transform(test)
metrics = ComputeModelStatistics().transform(prediction)
metrics.limit(10).toPandas()