はじめに
scikit-learnはPythonのオープンソース機械学習ライブラリです。サポートベクターマシン、ランダムフォレスト、k近傍法、などを含む様々な分類、回帰、クラスタリングアルゴリズムを備えており、Pythonの数値計算ライブラリのNumPyとSciPyとやり取りするよう設計されています。
これまで回帰や分類の例を示してきましたが、その際に使用したモデルにはいくつかのハイパーパラメータがあります。ハイパーパラメータの設定によって予測結果は大きく変わってきます。そのため、ハイパーパラメータを調整して最適な設定を探す必要があります。このことをハイパーパラメータのチューニングと言います。ハイパーパラメータのチューニングの方法には、主にグリッドサーチ、ランダムサーチ、ベイズ最適化があります。
本記事では、グリッドサーチ、ランダムサーチ、ベイズ最適化を用いたハイパーパラメータのチューニングを行い、最適なハイパーパラメータの設定を用いて学習を行う方法を紹介します。
- はじめに
- 1. 本記事で扱う学習データセット
- 2. グリッドサーチ(Grid Search)
- 3. ランダムサーチ(Random Search)
- 4. ベイズ最適化
- 5. まとめ
- オススメ書籍
- スキル修得&転職
- おわりに
1. 本記事で扱う学習データセット
本記事ではボストンの住宅価格に関するデータセットを用います。回帰にて説明変数から住宅価格を予測します。
sklearn.datasets.load_boston — scikit-learn 1.1.2 documentation
ボストンの住宅価格のデータが格納されています。説明変数は以下の表で、目的変数(target)は住宅価格になります。
説明変数の項目 | 意味 |
---|---|
CRIM | 町ごとの一人当たりの犯罪率 |
ZN | 25,000 平方フィートを超える区画に分類される住宅地の割合 |
INDUS | 町ごとの非小売業の割合 |
CHAS | Charles Riverのダミー変数 (= 区画が川に接する場合は1、それ以外の場合は0) |
NOX | 一酸化窒素濃度 (1000 万分の 1) |
RM | 1住居あたりの平均部屋数 |
AGE | 1940年以前に建てられた持ち家の割合 |
DIS | ボストンの5つの雇用センターまでの加重距離 |
RAD | 主要高速道路へのアクセス性指標 |
TAX | $10,000あたりの固定資産税の税率 |
PTRATIO | 町ごとの生徒と教師の比率 |
B | 1000(Bk - 0.63)^2、Bkは町ごとの黒人の割合 |
LSTAT | 低所得者人口の割合 |
2. グリッドサーチ(Grid Search)
グリッドサーチはsklearn.model_selection.GridSearchCVを用います。
コード例は以下です。途中までグリッドサーチとコードが同じなので省略しています。
算出結果は以下になります。
3. ランダムサーチ(Random Search)
ランダムサーチはsklearn.model_selection.RandomizedSearchCVを用います。
コード例は以下です。途中までグリッドサーチとコードが同じなので省略しています。
算出結果は以下になります。
4. ベイズ最適化
ベイズ最適化はskopt.BayesSearchCVを用います。
コード例は以下です。
算出結果は以下になります。
5. まとめ
上記の精度スコア、決定係数R2、MAE、処理時間(Time)をまとめると以下の表になります。トータルの計算コストを考慮するとベイズ最適化の手法が良いことがわかります。データによってはランダムサーチやグリッドサーチの方が良い場合もあるので、データごとに検討が必要になります。
手法 | スコア | R2 | MAE | Time[s] |
---|---|---|---|---|
グリッドサーチ | 0.86 | 0.82 | 2.27 | 777.93 |
ランダムサーチ | 0.84 | 0.82 | 2.71 | 7.40 |
ベイズ最適化 | 0.87 | 0.88 | 2.28 | 42.01 |
オススメ書籍
Pythonによるあたらしいデータ分析の教科書
Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。
データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析
こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。
東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~
こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。
スキル修得&転職
近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。
以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
おわりに
グリッドサーチ、ランダムサーチ、ベイズ最適化を用いたハイパーパラメータのチューニングを行い、最適なハイパーパラメータの設定を用いて学習を行う方法を紹介しました。機械学習を精度よく実施するには必須の内容になりますので、ぜひ方法を覚えて使いこなせるようになりましょう。