この記事はまだ書きかけです.

はじめに

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

準備

Rのインストールと基本的な使い方については,次のページを見てください.

最初は,標準で使用できるirisデータセットを使います.

data(iris)

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

このデータセットには,150個のデータが含まれています. ランダムに10個のデータを選択して,見てみましょう.

iris[sort(sample(1:150,10)),]

ここでは,treeパッケージ*1*2を使います. install.packagesコマンドを入力すると,パッケージをダウンロードするサーバーを聞かれますので,リストからJapanを選択します.

    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("tree")
library(tree)

ここで,第1引数の「Species ~ .」はモデル式,第2引数の「iris」は訓練データを表しています. モデル式は「目的変数 ~ 説明変数」という形で表現し,説明変数が「.」(ドット)のときは,目的変数以外の全ての変数を表します. したがって,ここでは,irisデータセットのSpeciesを目的変数とし,それ以外のすべての変数(Spepal.Lenght, Sepal.Width, Petal.Length, Petal.Width)を説明変数としています.

次に,学習された決定木を表示します.

iris.tree <- tree(Species ~ ., iris)

テキストでは分かりにくいので,図にします.

iris.tree
iris_decision_tree.png

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

先に表示したテキストと対応させます.

最初の条件で分割する前の集合は 1) で,150個の事例が含まれており,setosa, versicolor, virginicaがそれぞれ1/3ずつ含まれています. どれも同じ確率ですが,ここに含まれる事例をsetosaと予測しています.

最初の条件は「Petal.Length < 2.45」です. この条件に当てはまる事例の集合が 2) で,そうでない事例の集合が 3) です.

2) の集合に含まれる事例は50個で,すべてsetosaです. そこで,これ以上の分割はせずに,ここに振り分けられた事例をsetosaと予測します.

3) の集合に含まれる事例は100個で,その半数がversicolor,残りの半数がvirginicaです. そこで,ここに振り分けられた事例を二つ目の条件によってさらに分割します.

二つ目の条件は「Petal.Width < 1.75」です. この条件に当てはまる事例の集合が 6) で,そうでない事例の集合が 7) です.

二つ目の条件によって振り分けられた事例は,いずれも最初の条件によってすでに振り分けられていることに注意しましょう. たとえば,6) は「Petal.Length > 2.45 かつ Petal.Width < 1.75」を満たす事例の集合であり,7) は「Petal.Length > 2.45 かつ Petal.Width > 1.75」を満たす事例の集合です.

このような分割が以下同様に続きます.

この記事はまだ書きかけです.


*1 Breiman L., Friedman J. H., Olshen R. A., and Stone, C. J. (1984) Classification and Regression Trees. Wadsworth.
*2 Ripley, B. D. (1996) Pattern Recognition and Neural Networks. Cambridge University Press, Cambridge. Chapter 7.
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS