하이퍼 매개 변수 조정 - 유방암 퇴치
이 자습서에서는 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을 사용하여 최상의 모델 찾기
에서 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)
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()
관련 콘텐츠
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기