6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Optunaを用いたハイパーパラメーターチューニングの実践

Posted at

こんにちは!この記事では、機械学習のモデルを最適化するためのハイパーパラメータチューニングにOptunaを使用する方法について説明します。

Optunaとは?

Optunaは、Pythonで書かれた機械学習のハイパーパラメータチューニングを自動化するためのフレームワークです。Optunaは非常にフレキシブルで、各種の機械学習ライブラリ(例えば、scikit-learn、TensorFlow、PyTorchなど)のハイパーパラメータを最適化するために利用できます。

ライブラリのインストール

まずは必要なライブラリをインストールします:

!pip install optuna scikit-learn

Optunaの基本的な使い方

Optunaの使用法を説明するために、scikit-learnのSVC(サポートベクターマシン)を使用します。

import optuna
from sklearn.datasets import load_digits
from sklearn.svm import SVC
from sklearn.model_selection import cross_val_score

# データセットをロードします
digits = load_digits()
X = digits.data
y = digits.target

def objective(trial):
    # SVCのハイパーパラメータの候補範囲を設定します
    C = trial.suggest_loguniform('C', 1e-10, 1e10)
    gamma = trial.suggest_loguniform('gamma', 1e-10, 1e10)
    kernel = trial.suggest_categorical('kernel', ['linear', 'poly', 'rbf', 'sigmoid'])

    # モデルを設定します
    svm = SVC(C=C, gamma=gamma, kernel=kernel)

    # クロスバリデーションによるスコアを計算します
    score = cross_val_score(svm, X, y, n_jobs=-1, cv=3)
    accuracy = score.mean()

    return accuracy

study = optuna.create_study(direction='maximize')
study.optimize(objective, n_trials=50)

# 最良のパラメータを出力します
print('Best parameters: ', study.best_params)

この例では、SVCの3つのハイパーパラメータ(C, gamma, kernel)について、それぞれの候補範囲を設定し、最適なハイパーパラメータの組み合わせを探索しています。

まとめ

Optunaは、機械学習モデルのハイパーパラメータチューニングを容易に行うことができる強力なツールです。さまざまなモデルとライブラリに対応しているため、モデルの性能を向上させるための重要なツールとなります。

これからもOptunaを使って、機械学習のモデルを最適化し、高性能なモデルを作成しましょう!

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?