Aracılığıyla paylaş


HyperParameterTuning - meme kanseriyle mücadele

Bu öğreticide synapseML kullanarak seçilen sınıflandırıcılar için en iyi hiper parametre bileşimini belirleme ve daha doğru ve güvenilir modeller oluşturma işlemleri gösterilmektedir. Eğitimde, meme kanserini tanımlayan bir model oluşturmak için rastgele dağıtılmış ızgara arama hiperparametre ayarlamasının nasıl gerçekleştirildiği gösterilmektedir.

Bağımlılıkları ayarlama

Pandas'ı içeri aktarma ve Spark oturumu ayarlama:

import pandas as pd
from pyspark.sql import SparkSession

# Bootstrap Spark Session
spark = SparkSession.builder.getOrCreate()

Verileri okuyun ve ayarlama ve test kümelerine bölün:

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()

Kullanılacak modelleri tanımlayın:

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]

En iyi modeli bulmak için AutoML kullanma

SynapseML AutoML sınıflarını synapse.ml.automl içeri aktarın. Hiperparametreleri HyperparamBuilder ile belirtin. DiscreteHyperParam veya RangeHyperParam hiper parametreleri ekleyin. TuneHyperparameters tekdüzen dağılımdan rastgele değerler seçer:

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)

En iyi modeli elde etmek için TuneHyperparameters komutunu çalıştırın:

bestModel = TuneHyperparameters(
    evaluationMetric="accuracy",
    models=mmlmodels,
    numFolds=2,
    numRuns=len(mmlmodels) * 2,
    parallelism=1,
    paramSpace=randomSpace.space(),
    seed=0,
).fit(tune)

Modeli değerlendirme

En iyi modelin parametrelerini görüntüleyin ve temel alınan en iyi model işlem hattını alın:

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

Test kümesine göre puan ve ölçümleri görüntüleyin:

from synapse.ml.train import ComputeModelStatistics

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