clock2015.02.04 09:04
SERVICE
home

Rでの決定木の実装|プロ野球データで決定木(Decision Tree) with R 第3回

AUTHOR :   ギックス

10.5k
ギックス
eyecatch_baseball2

プロ野球データで決定木を行った結果を公開していきます

本連載では、3回にわたり、プロ野球のデータで実際に決定木を行った事例を紹介していきます。第3回目の今回は、実践編として、Rを用いた決定木の実装について説明しています。

Rでの決定木の実装

決定木をRで実践するためには、{rpart}という、Rの「パッケージ」を利用します。あとは、決定木の分析を行う、「rpart」という関数を実行するだけです。具体的なコードは、以下の通りです。

※かつては、{mvpart}という、{rpart}の上位にあたるパッケージがありましたが、本稿執筆時点(2015年1月)では、入手不可能になっています。そのため、本稿の実装は、{rpart}パッケージで行っています。

#{rpart}パッケージのロード
library(rpart)
#データの読み込み
df <- read.csv(“xxxx.csv”)
#決定木の分析の実行
data.rp <- rpart(勝敗.1~安打+四死球+犠打飛+失策野選+ホーム,data=df,cp=0.01)
#結果の表示
print(data.rp)
#決定木のプロット
plot(data.match.central.rp,branch=0.6,margin=0.05)
#プロットした決定木にテキストを表示
text(data.match.central.rp,use.n=T,all=T,uniform=T)

rpartの括弧内の左の部分は、「目的変数~説明変数1+説明変数2+…+説明変数n」という形で記述されていますが、これは、Rではよくみる形式です。回帰分析やロジスティック回帰といった、いくつかの説明変数で目的変数を説明するような統計モデルは、ほとんどこのような形で記述されています。

モデルのチューニング

前回で述べたように、目的変数と説明変数の組み合わせによっては分析そのものが機能しなくなることがあることから、まずは、適切な目的変数と説明変数の組み合わせを選択しておく必要があります。そのためには、同じデータセットでロジスティック回帰分析等の分析を行っておいて、説明変数の「当たり」をつけておくのも、一つの方法です。

目的変数については、連続変数でも分析は可能ですし、目的変数が3カテゴリ以上のカテゴリ変数でも、分析することも可能です。しかし、結果の解釈のしやすさを考えると、特に強い問題意識がある場合以外には、目的変数は2値のカテゴリ変数で行うのが無難でしょう。

決定木のモデルをチューニングする上で、最も重要な要素が、複雑度(Complexity。以下、cpと表記します。)という項目です。上記ソースコードでは、rpart関数の引数として、「cp=0.01」と記述している部分が、それに該当します。なお、rpart関数のデフォルトでは、cp=0.01に設定されています。このcpを0.001といったように、より小さい値にすれば、それだけ決定木の分岐が増えていきます。cpの設定値には、こうすべきという決まりはありませんが、cpを無理に小さくして分岐を増やした場合には、解釈が難しくなるだけではなく、無理のあるモデルになってしまうというデメリットもあります。

反対に、増えてしまった分岐を減らす、「剪定」と呼ばれるプロセスもあります。これは、rpart関数の引数であるcp値で調整しなくても、以下のスクリプトを1行挟むことで実行できます。

#決定木の剪定(オプション)
prune(data.rp,cp=0.02)

 まとめに代えて

ここまで述べてきたように、決定木は、モデルのチューニングに多少の慣れが必要な部分はありますが、連載冒頭で述べたように、「分岐条件」という、ビジュアル的に非常にわかりやすい表現方法で、説明変数が「効いて」いるかどうかが表現できるため、分析結果をプレゼンテーションする際には、非常に大きな「武器」になります。この連載を読んでいただいた皆様におかれましても、分析手法のレパートリーの一つに、是非加えていただければと思います。

 

【連載記事】プロ野球データで決定木(Decision Tree) with R
第1回 問題意識と決定木の見方
第2回 決定木のCARTアルゴリズム
第3回 Rでの決定木の実装(本記事)

 

【当記事は、ギックス統計アドバイザーの中西規之が執筆しました。】

nakanishi

中西 規之(なかにし のりゆき)

ギックス統計アドバイザー。公益財団法人日本都市センター研究室主任研究員、フェリス女学院大学国際交流学部非常勤講師(社会統計学)などを歴任。東京工業大学大学院社会理工学研究科社会工学専攻修士課程修了。最近の関心は、市民、民間、行政の3者が「Win-Win-Win」になるような、公共サービスにおけるビッグデータ・オープンデータの活用のあり方について。

 

SERVICE

SERVICE

BANNER

graffe

grip

GiXo BLOG

recruit

Aibou

amazon web service partner network

TAG BOX