Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tutorial ini menunjukkan cara menggunakan SynapseML untuk mengidentifikasi kombinasi hiperparameter terbaik untuk pengklasifikasi yang dipilih, untuk membangun model yang lebih akurat dan andal. Tutorial menunjukkan cara melakukan penyetelan hiperparameter pencarian kisi acak terdistribusi untuk membangun model yang mengidentifikasi kanker payudara.
Menyiapkan dependensi
Impor panda dan siapkan sesi Spark:
import pandas as pd
from pyspark.sql import SparkSession
# Bootstrap Spark Session
spark = SparkSession.builder.getOrCreate()
Baca data dan bagi menjadi set penyetelan dan pengujian.
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()
Tentukan model yang akan digunakan:
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]
Gunakan AutoML untuk menemukan model terbaik
Imporkan kelas AutoML SynapseML dari synapse.ml.automl
. Tentukan hiperparameter dengan HyperparamBuilder
. Tambahkan hyperparameter DiscreteHyperParam
atau RangeHyperParam
.
TuneHyperparameters
secara acak memilih nilai dari distribusi seragam:
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)
Jalankan TuneHyperparameters untuk mendapatkan model terbaik:
bestModel = TuneHyperparameters(
evaluationMetric="accuracy",
models=mmlmodels,
numFolds=2,
numRuns=len(mmlmodels) * 2,
parallelism=1,
paramSpace=randomSpace.space(),
seed=0,
).fit(tune)
Evaluasilah model
Lihat parameter model terbaik, dan ambil alur model terbaik yang mendasar:
print(bestModel.getBestModelInfo())
print(bestModel.getBestModel())
Skor terhadap set pengujian, dan lihat metrik:
from synapse.ml.train import ComputeModelStatistics
prediction = bestModel.transform(test)
metrics = ComputeModelStatistics().transform(prediction)
metrics.limit(10).toPandas()