DecisionTreeClassifierのパラメータ調整

設定

  • DecisionTreeClassifierの使い方はこちら
  • 下記のデータの分類をDecisionTreeClassifierを使って行う
    • 約10%ほどノイズが入っている。
    • x0: (0.5, 1.5), x1:(0.5, 1.5)で分岐すれば精度90%で分類するごとができる。 f:id:nsb248:20170224165542p:plain
  • 何も制約を入れずに全データを使って学習させると、下記の通りオーバーフィッティングしている。

とりあえずパラメータを変えてみる

  • クロスバリデーションを使ってモデルの評価を行う。

    デフォルトパラメータの場合(ツリーへの制約がない状態)

  • accuracy: 0.800
  • std: 0.039
  • 分類 f:id:nsb248:20170224165616p:plain
  • 分岐ツリー f:id:nsb248:20170224165639p:plain
  • かなり複雑になっている。
  • 90%くらいの精度になってほしいが、80%くらい。

max_depthを調整する。

max_depth=3

  • accuracy: 0.777
  • std: 0.035
  • 分類 f:id:nsb248:20170224170115p:plain
  • 分岐ツリー f:id:nsb248:20170224170128p:plain

max_depth=4

  • accuracy: 0.889
  • std: 0.038
  • 分類 f:id:nsb248:20170224170242p:plain
  • 分岐ツリー f:id:nsb248:20170224170248p:plain

  • max_depth=4でかなりいい感じの結果になった。

GridSearchを使って最適なパラメータを探す。

  • accuracy: 0.882
  • std: 0.044
  • 分類 f:id:nsb248:20170224171535p:plain
  • 分岐ツリー f:id:nsb248:20170224171543p:plain

まとめ

  • ツリーの大きさを制約するようなパラメータを上手く設定することで、汎化性能が上がることを確認。