インフォームド手法:遺伝的アルゴリズム

Pythonでのハイパーパラメータチューニング

Alex Scriven

Data Scientist

遺伝学の基礎

 

現実の遺伝的進化では、次のように進みます。

  1. 多数の生物が存在する(子孫)
  2. 強い個体が生き残り、つがいになる
  3. 交配により「交叉」が起きて子孫ができる
  4. 子孫の一部にランダムな突然変異が起きる
    • これが有利に働くことがある
  5. (1) に戻る
Pythonでのハイパーパラメータチューニング

機械学習における遺伝学

 

同じ考え方をハイパーパラメータチューニングに適用できます。

  1. いくつかのモデル(ハイパーパラメータ付き)を作る
  2. スコア関数で最良を選ぶ
    • それが「生き残る」個体
  3. 最良に似た新しいモデルを作る
  4. ランダム性を加えて局所最適を避ける
  5. 納得いくまで反復
Pythonでのハイパーパラメータチューニング

なぜ有効か

 

これは情報を活用する探索で、次の利点があります。

  • 反復から学習できる(ベイズ最適化に似る)
  • さらに一定の「ランダム性」がある
  • (使用するパッケージが)機械学習の面倒な作業を多く自動化
Pythonでのハイパーパラメータチューニング

TPOT の紹介

 

遺伝的チューニングに有用なライブラリに TPOT があります。

TPOT はデータサイエンスのアシスタントです。TPOT は、遺伝的プログラミングで機械学習のパイプラインを最適化する Python の自動機械学習ツールです。

パイプラインにはモデル(複数も可)だけでなく、特徴量処理なども含まれます。さらに、作成したパイプラインの Python コードを返します。

Pythonでのハイパーパラメータチューニング

TPOT の構成要素

TPOT 分類器の主な引数:

  • generations: 学習の反復回数。
  • population_size: 各反復後に保持するモデル数。
  • offspring_size: 各反復で生成するモデル数。
  • mutation_rate: ランダム性を適用するパイプラインの割合。
  • crossover_rate: 各反復で交配させるパイプラインの割合。
  • scoring: 最良モデルを決める評価関数。
  • cv: 使用する交差検証法。
Pythonでのハイパーパラメータチューニング

簡単な例

簡単な例:

from tpot import TPOTClassifier
tpot = TPOTClassifier(generations=3, population_size=5, 
                      verbosity=2, offspring_size=10,
                      scoring='accuracy', cv=5)

tpot.fit(X_train, y_train) print(tpot.score(X_test, y_test))

mutation_rate と crossover_rate は既定値のままにします。遺伝的プログラミングの深い知識がない場合、既定が最適です。

注意: アルゴリズム固有のハイパーパラメータは不要?

Pythonでのハイパーパラメータチューニング

Let's practice!

Pythonでのハイパーパラメータチューニング

Preparing Video For Download...