【KNIME】ParameterをOptimizeしたい。
・機械学習のハイパーパラメータを最適化したいと思って調べてみたところ、以下のKNIME Hubの記事が参考になりそうだった。
・まず、Parameter Optimization関連のノードを使うためには、Extensionをインストールする必要がある(以下)。
・次に、ワークフローを組んでみた(下図)。以前のCross Validationの記事で作成したワークフローをベースに、Irisの分類問題をRandom Forestで解く際のハイパーパラメータを最適化することを考える。
・下半分はデフォルトのハイパーパラメータを用いた場合、上半分は最適化のためのループを組み込んだ場合。モデルの良し悪しは、とりあえずAccuracyで判断する。
・Parameter Optimization Loop Startの設定は以下の通り。振るパラメータとして、決定木の数と深さを設定し、どれだけのレンジで、どれだけの間隔で振るか設定した。パラメータの名前は、出力されてそのままValiableになる。探索手法はいろいろ選べるが、今回は総当たりにした。
・Random Forest LearnerのFlow Variableに先のハイパーパラメータのFlow Variableを設定する。
・Parameter Optimization Loop Endで、どの指標を見て条件を最適化するかを選択する(設定は下図)。今回は、Accuracyを最大にしたい。
・結果は以下の通り。最適化プロセスを経た場合はAccuracyが0.96になるモデルを得られた。ちなみに、デフォルトのハイパーパラメータでのAccuracyは0.953だった。
・Parameter Optimization Loop Endの下側の出力ポートでは、試したハイパーパラメータそれぞれにおけるAccuracyを見ることができる(下図)。
・ハイパーパラメータをきちんと理解しながら最適化しなければならないなぁと感じた。
終わり。