• 追加された行はこの色です。
  • 削除された行はこの色です。
*はじめに [#l5c5557f]

『Rによるバイオインフォマティクスデータ解析』の7.13節「決定木」を参考にして,決定木を学習します.

#html{{
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=tohgoroh-22&o=9&p=8&l=as1&asins=4320057082&ref=tf_til&fc1=444B4C&IS2=1&lt1=_blank&m=amazon&lc1=444B4C&bc1=FFFFFF&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
}}


*準備 [#l6dbc2a1]


Rのインストールと基本的な使い方については,次のページを見てください.
-[[MacでRを使う>機械学習/MacでRを使う]]
-[[WindowsでRを使う>機械学習/WindowsでRを使う]]
-[[Rの基本>バイオ・データ・マイニング/Rの基本]]


最初は,標準で使用できる''irisデータセット''を使います.
#geshi(rsplus){{
> data(iris)
}}

このデータセットは,アヤメの種類(Species)を花びらの長さ(Sepal.Length),幅(Lepal.Width),がくの長さ(Petal.Length),幅(Petal.Width)によって分類する問題です.
長さと幅は連続値,種類はsetosa, versicolor, virginicaのいずれかをとる離散値です.

このデータセットには,150個のデータが含まれています.
ランダムに10個のデータを選択して,見てみましょう.
#geshi(rsplus){{
> iris[sort(sample(1:150,10)),]
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
4            4.6         3.1          1.5         0.2     setosa
22           5.1         3.7          1.5         0.4     setosa
65           5.6         2.9          3.6         1.3 versicolor
97           5.7         2.9          4.2         1.3 versicolor
100          5.7         2.8          4.1         1.3 versicolor
108          7.3         2.9          6.3         1.8  virginica
116          6.4         3.2          5.3         2.3  virginica
122          5.6         2.8          4.9         2.0  virginica
136          7.7         3.0          6.1         2.3  virginica
146          6.7         3.0          5.2         2.3  virginica
}}

ここでは,''tree''パッケージを使います.
''install.packages''コマンドを入力すると,パッケージをダウンロードするサーバーを聞かれますので,リストからJapanを選択します.
#geshi(rsplus){{
> install.packages("tree")
> library(tree)
}}



*決定木を学習する [#fdfa0f93]

''決定木学習''は,説明変数に対する条件を用いて事例集合を分割することによってラベル(カテゴリー)を予測するための''決定木''を学習するものです.
実物を見た方が理解しやすいので早速決定木を学習します.

まず,''tree''コマンドを用いて決定木を学習します.
#geshi(rsplus){{
> iris.tree <- tree(Species ~ ., iris)
}}
ここで,第1引数の''Species ~ .''はモデル式,第2引数の''iris''は訓練データを表しています.
モデル式は「目的変数 ~ 説明変数」という形で表現し,説明変数が「.」(ドット)のときは,目的変数以外の全ての変数を表します.
したがって,ここでは,irisデータセットのSpeciesを目的変数とし,それ以外のすべての変数(Spepal.Lenght, Sepal.Width, Petal.Length, Petal.Width)を説明変数としています.

次に,学習された決定木を表示します.
#geshi(rsplus){{
> iris.tree
node), split, n, deviance, yval, (yprob)
      * denotes terminal node

 1) root 150 329.600 setosa ( 0.33333 0.33333 0.33333 )  
   2) Petal.Length < 2.45 50   0.000 setosa ( 1.00000 0.00000 0.00000 ) *
   3) Petal.Length > 2.45 100 138.600 versicolor ( 0.00000 0.50000 0.50000 )  
     6) Petal.Width < 1.75 54  33.320 versicolor ( 0.00000 0.90741 0.09259 )  
      12) Petal.Length < 4.95 48   9.721 versicolor ( 0.00000 0.97917 0.02083 )  
        24) Sepal.Length < 5.15 5   5.004 versicolor ( 0.00000 0.80000 0.20000 ) *
        25) Sepal.Length > 5.15 43   0.000 versicolor ( 0.00000 1.00000 0.00000 ) *
      13) Petal.Length > 4.95 6   7.638 virginica ( 0.00000 0.33333 0.66667 ) *
     7) Petal.Width > 1.75 46   9.635 virginica ( 0.00000 0.02174 0.97826 )  
      14) Petal.Length < 4.95 6   5.407 virginica ( 0.00000 0.16667 0.83333 ) *
      15) Petal.Length > 4.95 40   0.000 virginica ( 0.00000 0.00000 1.00000 ) *
}}

テキストでは分かりにくいので,図にします.
#geshi(rsplus){{
> plot(iris.tree)
> text(iris.tree)
}}
#ref(iris_decision_tree.png,nolink,50%)

上から順に読みます.
最初にPetal.Lengthの値が2.45より小さいか大きいかによって事例を分けます.
Petal.Lengthの値が2.45よりも小さい事例は左に,そうでない事例は右に振り分けます.

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS