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

    はじめに {#-}

    Rでグリッドサーチをするためのパッケージとしては、caretが有名なのだが、

    決定木でグリッドサーチをしようとすると、一つのパラメータについてしかできなかった。

    • rpartモデルではcpのみ
    • rpart2モデルではmaxdepthのみ

    やりたいことは、cp, maxdepth, minbucketパラメータを同時にグリッドサーチをしたい。

    自力でやろうとすると、for文が3つの入れ子構造になって大変だ。

    いろいろ調査したら、mlr(Machine Larning for R)というパッケージで

    複数パラメータに対して、グリッドサーチがかけられるとわかったので、そのメモを残す。

    今回のJupyter Notebookは gistにあげています。以下抜粋。

    mlrでグリッドサーチ {#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のランキングでスコアが上がった。やった。