08 Oct 2017, 03:25

mlrを使って決定木(rpart)の複数パラメータのグリッドサーチをする

はじめに

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のランキングでスコアが上がった。やった。