ロジスティック回帰をベイズ最適化して
ベイズ最適化を使用してロジスティック回帰モデルのハイパーパラメータを調整する方法は、通常、scikit-optimize(skopt)ライブラリを使用します。以下は、その手順の概要です。
- ベイズ最適化を実行するための目的関数を定義します。この関数は、検証データでのモデルの性能(たとえば、交差検証を使用した精度)を返します。
- ハイパーパラメータの探索範囲を指定します。
BayesSearchCVを使用して、目的関数を最小化するようにハイパーパラメータを調整します。- 最適なハイパーパラメータを使用してモデルを再トレーニングし、最終的な評価を行います。
以下は、これらの手順を実行するための基本的なコードです。
python
from skopt import BayesSearchCV from skopt.space import Real, Categorical, Integer # ロジスティック回帰のパイプラインを定義 pipeline = Pipeline([ ('classifier', LogisticRegression(max_iter=1000, random_state=42)) ]) # 探索するハイパーパラメータの範囲を指定 param_space = { 'classifier__C': Real(1e-6, 1e+6, prior='log-uniform'), 'classifier__penalty': Categorical(['l1', 'l2']), 'classifier__solver': Categorical(['liblinear', 'saga']) } # ベイズ最適化を使用してハイパーパラメータを探索 bayes_search = BayesSearchCV( pipeline, param_space, cv=10, # 交差検証の分割数 n_jobs=-1, n_iter=50, # 試行回数 random_state=42 ) # ベイズ最適化を実行 bayes_search.fit(X_train, y_train) # 最適なモデルを取得 best_model = bayes_search.best_estimator_ # テストデータでの予測と評価 y_pred_test = best_model.predict(X_test) accuracy_test = accuracy_score(y_test, y_pred_test) print("Test Accuracy:", accuracy_test) print("Test Classification Report:") print(classification_report(y_test, y_pred_test)) # AUCの計算 y_proba_test = best_model.predict_proba(X_test) auc_test = roc_auc_score(y_test, y_proba_test, multi_class='ovr') print("Test AUC:", auc_test)
このコードでは、skoptのBayesSearchCVを使用してハイパーパラメータの探索を行っています。param_spaceで指定した探索範囲内で、最適なハイパーパラメータを探索します。そして、最適なモデルを使用してテストデータでの予測と評価を行います。

ディスカッション
コメント一覧
まだ、コメントがありません