はじめに
Rでグリッドサーチをするためのパッケージとしては、caretが有名なのだが、
決定木でグリッドサーチをしようとすると、一つのパラメータについてしかできなかった。
- rpartモデルではcpのみ
- rpart2モデルではmaxdepthのみ
やりたいことは、cp, maxdepth, minbucketパラメータを同時にグリッドサーチをしたい。
自力でやろうとすると、for文が3つの入れ子構造になって大変だ。
いろいろ調査したら、mlr(Machine Larning for R)というパッケージで
複数パラメータに対して、グリッドサーチがかけられるとわかったので、そのメモを残す。
今回のJupyter Notebookは gistにあげています。以下抜粋。
mlrでグリッドサーチ
今回の題材は、毎度おなじみの kaggleタイタニック問題を利用する。
前処理を自分でやるのがだるかったので、以下の記事の内容を利用することにした。
以下の記事を参考にして、タイタニック問題のためのコードを書いた。
以下の範囲を指定してグリッドサーチ。
gs <- makeParamSet(
makeDiscreteParam("cp", values = c(1e-4, 1e-5)),
makeDiscreteParam("maxdepth", values = seq(5,10,1)),
makeDiscreteParam("minbucket", values = seq(10,100,10))
)
すると、指定した範囲の組み合わせを総当りに計算していく。
最終的に、best scoreとなった値が出力されて終了。
それを提出したら、titanicのランキングでスコアが上がった。やった。