[連載] フリーソフトによるデータ解析・マイニング 第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-8-1である。

2.WEKAの基本操作

  WEKAのダウンロードとインストールの手順は紙面の都合により割愛する。
  WEKAを起動すると図1のようなGUI画面が開かれる。GUIの鳥がWEKAである。GUIの右側には5つのボタンがある。それぞれのボタンを押すとデータを操作するパネルが開かれる。その主な機能を表1に示す。

図1 WEKAのGUI画面

表1 GUIのボタンの機能
 Explorer  メニュー選択型の操作環境
 Experimenter  学習スキームの間の統計検定などを行う環境
 KnowledgeFlow   データ処理・マイニングのプロセスをアイコンで連結して 
 マイニングを行うGUI環境
 Workbench  ワークベンチ
 SimpleCLI  コマンドによる操作環境

  WEKAを扱っている書籍 “Data Mining”(参考文献[1])ではコマンドラインを用いて解説しているが、本稿ではGUIの Explorer 環境を用いることにする。WEKAのGUIにおける [Explorer] ボタンを押すと図2のパネルが開かれる。

図1 Explorer 画面

  Explorerのパネルの上部には6つのタブが設置されている。WEKAのデータ処理・マイニングに関する機能はこの6つのタブに分類されている。この6つのタブに含まれている機能及び主なスキームを表2に示す。
  WEKAは、カンマ区切りのCSV形式、C4.5形式、ARFF形式などを読み込むことができる。 
  CSV形式は表計算ソフトExcelでも簡単に作成できる。
  ARFF形式のデータファイル概観を示すため、データセットIris のARFF形式の一部分のコピーを図3に例示する。

表2 WEKA-3-8-1のタブとスキーム
 Preprocess  データの選択と修正などのための前処理に関するフィルタ環境で、
 44種類(supervised 7種類、unsupervised 37種類)のアルゴリズムがある
 Classify  分類と予測に関する環境で、71種類(Bayes 7種類、function 12種類、lazy 5種類、
 meta 23種類、misc 3種類、trees 11種類、rules 10種類)のアルゴリズムがある
 Cluster  クラスタに関する環境で5種類のアルゴリズムがある
 Associate  相関ルールに関する環境で、3種類のアルゴリズムがある
 Select attributes   属性の選択に関する環境で、20種類(Attribute Evaluator 12種類、
 search Method 8種類)のアルゴリズムがある。
 Visualize  データの2次元グラフの環境である

図3 ARFF ファイルの形式

  ARFFファイルは、データの属性部とデータの部分に分けて記述する。属性の部分は、属性のデータの性質について具体的に記述し、データの部分は属性の順序の順にカンマでデータを区切る。データはローカルディスク、インターネット、データベースから直接読み込むことができる。

3.WEKAと決定木

  WEKAにおける決定木は classify のタブの中に分類されている。classify のタブの中には、分類と回帰に関連するスキームが7つのグループに分けられている。その中の trees グループの主な決定木を表3に示す。

表3 WEKA の主な決定木
 DecisionStump  決定木の切り株(stump)を生成する
 Hoeffding Tree  Naive Bayes分類器による決定木を生成する
 J48  QuinlanのC4.5に基づいた決定木を生成する
 LMT  ロジステックモデルの木を構築する
 M5P  線形回帰式を葉に持つモデル木
 RandomForest   Leo Breimanが2001年に提案した「ランダム森」のモデルを構築する 
 RandomTree  属性をランダムに用いた未選定の決定木を生成する
 REPTree  Giniと分散の情報を用いた快速決定・回帰木を生成する

(1) データを読み込む

  Preprocess タブの [Open file] ボタンを押し、データが置かれているフォルダを開き、ファイルを指定して、開かれているパネルの「開く」ボタンを押すとファイルが読み込まれる。WEKAには、幾つかのデータセットがインストールする際に作成された data というフォルダに置かれている(例えば、C:\Program Files\Weka-3-8\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)という剪定に、
 その残りを木の生成に用いる
 reduced Error Pruning   C4.5の剪定の代わりにREPを用いるかどうかの指定
 saveInstance Data  視覚化のために学習したデータを保存するかどうかの指定
 seed  REPを行うときに無作為化に用いる種(seed)
 subtree Raising  剪定を行うとき部分木の扱いの指定
 unpruned  剪定を行うかどうかの指定
 useLaplace  葉の計算はラプラス(Laplace)における平滑に基づくかどうかの指定

  オプションの設定例として、オプションの minNumObj を4に設定した決定木のグラフを図12に示す。図で分かるように葉の中に含められている個体数が4以下の葉を刈り切った木が出力されている。

図12 個体数が4以下の葉を切り取った iris の決定木

  静岡大学理工学研究科阿部秀尚氏が公開したWEKAに関する資料がある。2017年3月現在のURLを次に示す。

  http://www.weka-jp.info/archives/weka_intro_200304.pdf


参考文献:
[1] I.H. Witten, E. Frank: Data Mining: MORGAN KAUFMANN: ISBN 1-55860-552-5