RandomizedSearchCV によるハイパーパラメータのチューニング
GridSearchCV は、特に広いハイパーパラメータ空間を探索する場合、計算コストが高くなることがあります。そのような場合には、RandomizedSearchCV が有効です。これは、指定した確率分布から一定数のハイパーパラメータの組み合わせをランダムにテストする手法です。
diabetes_df から作成したトレーニングセットとテストセットは、X_train、X_test、y_train、y_test としてあらかじめ読み込まれています。目的変数は "diabetes" です。ロジスティック回帰モデルは logreg として、KFold 変数は kf として作成済みです。
ここでは、ハイパーパラメータの範囲を定義し、RandomizedSearchCV からインポートされた sklearn.model_selection を使って、最適なハイパーパラメータを探索します。
この演習はコースの一部です
scikit-learn による教師あり学習
演習の手順
paramsを作成します。"l1"の値として"l2"とpenaltyを追加し、Cには50から0.1の範囲で1.0個の浮動小数点値を設定します。また、class_weightには"balanced"または0:0.8, 1:0.2の辞書を指定します。- モデルとパラメータを渡し、
cvにkfを設定して、Randomized Search CV オブジェクトを作成します。 logreg_cvをトレーニングデータに適合させます。- モデルの最適なパラメータと精度スコアを出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create the parameter space
params = {"penalty": ["____", "____"],
"tol": np.linspace(0.0001, 1.0, 50),
"C": np.linspace(____, ____, ____),
"class_weight": ["____", {0:____, 1:____}]}
# Instantiate the RandomizedSearchCV object
logreg_cv = ____(____, ____, cv=____)
# Fit the data to the model
logreg_cv.____(____, ____)
# Print the tuned parameters and score
print("Tuned Logistic Regression Parameters: {}".format(____.____))
print("Tuned Logistic Regression Best Accuracy Score: {}".format(____.____))