Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第5回】Optunaを用いたハイパーパラメータのチューニング

はじめに

scikit-learnはPythonオープンソース機械学習ライブラリです。サポートベクターマシン、ランダムフォレスト、k近傍法、などを含む様々な分類、回帰、クラスタリングアルゴリズムを備えており、Python数値計算ライブラリのNumPyとSciPyとやり取りするよう設計されています。

これまで回帰や分類の例を示してきましたが、その際に使用したモデルにはいくつかのハイパーパラメータがあります。ハイパーパラメータの設定によって予測結果は大きく変わってきます。そのため、ハイパーパラメータを調整して最適な設定を探す必要があります。このことをハイパーパラメータのチューニングと言います。ハイパーパラメータのチューニングの方法には、主にグリッドサーチ、ランダムサーチ、ベイズ最適化があります。前記事では、Scikit-learnを用いたグリッドサーチ、ランダムサーチ、ベイズ最適化によるハイパーパラメータのチューニングを行い、最適なハイパーパラメータの設定を用いて学習を行う方法を紹介しました。

これに加え、Optunaというハイパーパラメータ自動最適化フレームワークがあります。Optunaの公式ページでは以下のように紹介されています。

オープンソースのハイパーパラメータ自動最適化フレームワークOptuna™は、ハイパーパラメータの値に関する試行錯誤を自動化し、優れた性能を発揮するハイパーパラメータの値を自動的に発見します。オープンソースの深層学習フレームワークChainerをはじめ、様々な機械学習ソフトウェアと一緒に使用することが可能です。

Optuna - 株式会社Preferred Networks

本記事では、このOptunaを用いたハイパーパラメータのチューニングの一例を紹介します。

Aidemy Premium

 

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

ライブラリのインストールには以下のpipコマンドを実行してインストールしてください。

 

2. Optunaを用いた事例:回帰

2.1 試用したPythonコード

Optunaを用いたハイパーパラメータのチューニングを行う一例を示します。ボストンの住宅価格に関する学習用データセットを用意して、学習データと検証データに分割した後、データを標準化します。

その後、optuna.create_study()でセッションを作成し、directionにmaximizeを設定します。objective関数では、ハイパーパラメータの指定をしてモデルを用意し、5分割による交差検証でのスコアが最大になるようなハイパーパラメータを探索します。

最適化されたハイパーパラメータの内容はstudy.best_paramsで出力、スコアはstudy.best_valueで出力することができます。

そして、study.best_paramsのパラメータを用いて学習し、回帰を行っています。

 

実行結果は以下です。

 

2.2 チューニング前の精度と比較

以前の記事で、適当なハイパーパラメ―タを指定して回帰を行った結果と今回の結果を比較します。結果を以下の表にまとめています。ハイパーパラメータのチューニングを行うことで精度が向上しているのがわかると思います。

  適当な設定 Oputuna
R2 0.77 0.86
MAE 3.16 2.48

 

3. Optunaを用いた事例:分類

今回は乳がんに関する学習用データセットを用いて分類を行った。内容的には2.1と同様のため省略する。

 

出力結果を以下に示す。結果を見てわかる通り、高速で高精度に分類をできていることがわかります。

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

まとめ

Optunaを用いたハイパーパラメータのチューニングの一例を紹介しました。Optunaを用いたハイパーパラメータのチューニングの方法はいくつかあり、より高度な方法でチューニングする方法もあるので、ぜひ調査してみてください。