HyperParameterTuning - Melawan Kanker Payudara
Tutorial ini menunjukkan bagaimana SynapseML dapat digunakan untuk mengidentifikasi kombinasi hiperparameter terbaik untuk pengklasifikasi pilihan Anda, pada akhirnya menghasilkan model yang lebih akurat dan andal. Untuk menunjukkan hal ini, kami akan menunjukkan cara melakukan penyetelan hiperparameter pencarian kisi acak terdistribusi untuk membangun model untuk mengidentifikasi kanker payudara.
1 - Menyiapkan dependensi
Mulailah dengan mengimpor panda dan menyiapkan sesi Spark kami.
import pandas as pd
from pyspark.sql import SparkSession
# Bootstrap Spark Session
spark = SparkSession.builder.getOrCreate()
Selanjutnya, 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]
2 - Temukan model terbaik menggunakan AutoML
Impor kelas AutoML SynapseML dari synapse.ml.automl
.
Tentukan hiperparameter menggunakan HyperparamBuilder
. Tambahkan atau DiscreteHyperParam
RangeHyperParam
hyperparameter. TuneHyperparameters
akan memilih nilai secara acak 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)
Selanjutnya, 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)
3 - Mengevaluasi model
Kita dapat melihat parameter model terbaik dan mengambil alur model terbaik yang mendasar
print(bestModel.getBestModelInfo())
print(bestModel.getBestModel())
Kita dapat mencetak terhadap set pengujian dan melihat metrik.
from synapse.ml.train import ComputeModelStatistics
prediction = bestModel.transform(test)
metrics = ComputeModelStatistics().transform(prediction)
metrics.limit(10).toPandas()
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk