[連載] フリーソフトによるデータ解析・マイニング 第20回
WEKAと樹木モデル
1.WEKAとは
樹木モデルに関するアルゴリズムは多く提案されているが、RにはCARTのファミリーの一族tree、rpart、randomForest以外には見当たらない。樹木モデル(決定木)の話題で欠かせないのはC4.5のアルゴリズムである。そこで、本稿では、C4.5のアルゴリズムが実装されているデータマイニングのフリーソフトWEKAを紹介する。
WEKAは、ニュージーランドのワイカト大学(University of Waikato) のIanh. Witten、Eibe. Frankを中心とした機械学習の研究者によって開発され続けている、Java言語によるオープンソースのデータマイニングのフリーソフトである。実は、WEKAはニュージーランドに生息し、飛ぶのが苦手であるが、探究心が非常に強い鳥の名前である。
ソフトWEKAに関する1次情報は、次のページから入手できる。
http://www.cs.waikato.ac.nz/~ml/WEKA/
上記のサイト、あるいは次のサイトからコンピュータのOS(Windows、Mac、Linuxなど)にマッチしたWEKAを入手することができる。
http://prdownloads.sourceforge.net/WEKA/WEKA.ppt
使用しているマシンにJava言語がインストールされていない場合は、Javaが同梱されているバージョンを選んだ方がよい。
WEKAで扱っているデータマイニングのアルゴリズムの基礎に関する本としては、ソフトの開発者の著書(参考文献[1])がある。
WEKAは、データの前処理、分類と予測、クラスタリング、相関ルール、視覚化に関するアルゴリズムの集合体である。
WEKAでは、データセットの中の列(変数)を属性(attribution)、行(個体)をインスタンス(instance)、特定のタスクを実行するアルゴリズムの集まりをスキーム(scheme)、判別・分類を行うスキームを分類器(classifier)、樹木モデルを決定木(decision
tree)と呼ぶ。
本稿で用いたWEKAはWindows用のバージョン3-4-3である。
2.WEKAの基本操作
WEKAのダウンロードとインストールの手順は紙面の都合により割愛する。
WEKAを起動すると図1のようなGUI画面が開かれる。GUIの鳥がWEKAである。GUIの下部には4つのボタンがある。それぞれのボタンを押すとデータを操作するパネルが開かれる。その主な機能を表1に示す。

図1 WEKAのGUI画面
表1 GUIのボタンの機能
WEKAにおける決定木はclassifyのタブの中に分類されている。classifyのタブの中には、分類と回帰に関連するスキームが7つのグループに分けられている。その中のtreesグループの主な決定木を表3に示す。
表3 WEKAの主な決定木
|
DecisionStump |
決定木の切り株(stump)を生成する |
|
LMT |
ロジステックモデルの木を構築する |
|
ID3 |
ID3アルゴリズムに基づいた未剪定の木を生成する |
|
J48 |
QuinlanのC4.5に基づいた決定木を生成する |
|
NBtree |
Naive Bayes分類器による決定木を生成する |
|
RandomForest |
Leo Breimanが2001年に提案した「ランダム森」のモデルを構築する |
|
RandomTree |
属性をランダムに用いた未選定の決定木を生成する |
|
REPTree |
Giniと分散の情報を用いた快速決定・回帰木を生成する |
(1) データを読み込む
Preprocessタブの[Open file]ボタンを押し、データが置かれているフォルダを開き、ファイルを指定して、開かれているパネルの「開く」ボタンを押すとファイルが読み込まれる。WEKAには、幾つかのデータセットがインストールする際に作成されたdataというフォルダに置かれている(例えば、C:\Program Files\Weka-3-4\data)。ここではその中のirisデータセットを用いて説明する。図4にフォルダdataの中のiris.arffを読み込んだパネル画面を示す。

図4 データセットirisを読み込んだ画面
(2)
マイニング方法の選択
目的に応じて、マイニングタブをクリックし、アクティブ化する。決定木の選択は、Classifyのタブをアクティブ化し、[Choose]のボタンを押し、treesフォルダのリストから1つを選ぶ。ここではJ48を選択する。J48が取り入られている画面を図5に示す。[Choose]ボタンの右側にJ48-***が表示されたら、正常に読み込まれている。

図5 J48が読み込まれている画面
J48はC4.5をWEKAに実装したものである。C4.5では、ゲイン比(gain ratio)を分岐基準としている。ゲイン比は、エントロピーとゲイン値から求められる。
最も簡単なデータの例として、表4のような男女別の意思表示(賛成、反対)に関するデータがあるとする。意思表示の結果を目的・被説明変数、性別を説明変数とする。
表4 データの例
|
|
意思表示 賛成 反対 |
合計 |
|
|
男 |
4 |
3 |
7 |
|
女 |
6 |
2 |
8 |
|
合計 |
10 |
5 |
15 |
=![]()

=![]()

=
−![]()
=![]()
=![]()

=![]()
=![]()
紙面の都合により、ここでは1つの変数(性別)のみのゲイン比を求めた。このように全ての説明変数についてゲイン比を求め、その中で最も大きいゲイン比を持つ「変数」を決定木の分岐に用いる変数の第1候補とする。
変数が連続の量的データの場合は、群間の平方和が最大になる変数を第1候補とする。
(3) 決定木の生成
Classifyパネルの左側のTest optionsの下には、学習データセット(Use training set)、テストデータセット(Supplied test set)、交差確認法(Cross-validation Folds)、データセットの1部分(Percentage split)がある。決定木を求める前に、この中から1つを選択しなければならない。ここでは、学習データセット(Use training set)を指定する。
出力の結果に関しては[More options…]ボタンを押し、開かれる分類器環境(Classifier evaluation)パネルで自由に指定することができる。ここでは図6のように設定し、[OK]ボタンを押す。

図6 出力の関するオプションパネル
ボタン[More options…]の下部の窓には目的変数を指定する。
上記の設定が終ったら、[Start]ボタンを押すとプログラムが実行され、計算結果が返される。その結果の画面を図7に示す。

図7 J48が実行された画面
パネルの右側のClassifier outputの下の窓には決定木に関する結果がテキスト形式で出力される。結果は、用いたデータに関する情報、決定木のルール、決定木生成に関する情報の要約、正・誤判別の行列(Confusion Matrix)の順になっている。出力される結果は、分類器環境パネルの設定に依存する。決定木のルール画面コピーを図8に示す。

図8 テキスト結果のウインドウ
パネルの左下部のResult list(right-clickfor options)の下の窓に行ったマイニングの結果のリスト返される。リストの項目を右クリクすると図9のようなメニューが開かれる。

図9 結果の表示リスト
メニューの中のView in separate windowを左クリックすると操作パネルと分離されたテキスト結果のウインドウが開かれる。
メニューリストの中のVisualize treeを左クリクすると生成した木のグラフがTree viewウインドウで作成される。マウスポインタを木のグラフに合わせ、左ボタンを押したまま移動することで自由にグラフの位置を変えることができる。
Tree viewウインドウの空白部分を右クリックすると図10に示すような、グラフの配置スタイルや文字列のサイズを調整するメニューが開かれる。

図10 決定木のグラフウインド
(4) パラメータの調整
Classifyパネルの[Choose]ボタンの右にある文字列の窓をクリックするとその方法のオプションパネルが開かれる。図11にJ48のオプションパネルを示す。

図11 J48のオプションパネル
返されたJ48の決定木は、開かれているパネルに示されている条件の下で生成されている。表5にパネルのパラメータを簡潔に説明する。
表5 J48のパラメータ
|
binarySplits |
名義(nominal)尺度の変数を2分岐するか(True)しないか(False)の指定 |
|
confidence Factor |
剪定のための信頼要因。値が小さいほどより多く剪定される |
|
debug |
コンソールに返す情報をコントロールする |
|
minNumObj |
葉における最少の個体数 |
|
numFolds |
データを分割する組数。1組をREP(reduced-error pruning)という剪定に、その残りを木の生成に用いる |
|
reducedError Pruning |
C4.5の剪定の代わりにREPを用いるかどうかの指定 |
|
saveInstance Data |
視覚化のために学習したデータを保存するかどうかの指定 |
|
seed |
REPを行うときに無作為化に用いる種(seed) |
|
subtree Raising |
剪定を行うとき部分木の扱いの指定 |
|
unpruned |
剪定を行うかどうかの指定 |
|
useLaplace |
葉の計算はラプラス(Laplace)における平滑に基づくかどうかの指定 |
オプションの設定例として、オプションのminNumObjを4に設定した決定木のグラフを図12に示す。図で分かるように葉の中に含められている個体数が4以下の葉を刈り切った木が出力されている。
[1]
I.H. Witten, E. Frank: Data Mining: MORGAN KAUFMANN: ISBN
1-55860-552-5