6
フリ Weka DM プリ Constructing a Data Mining Application with Weka * Hidenao Abe and Takahira Yamaguchi Shizuoka University 1 はじめに Waikato ( ) Ma- chine Learning Laboratory マイ Weka (Waikato Envi- ronment for Knowledge Analysis) 1 Weka マイ ( ) Weka [6] マイ [4] マイ Weka Weka ライ (CLI) マイ Weka ラフ ルユ (GUI) マイ 2 Weka の基本情報 Weka Java [2] Waikato Weka GPL(GNU Public Licence) Weka Weka マイ Weka Java ライブラリ OS * 432-8011 3-5-1 Tel:053-478-1473 Fax:053-473-6421 e-mail:[email protected] 1 2004 3 3.4.1 RDBMS JDBC "Knowledge Flow" "Experiment Environment" ARFF ARFF C4.5 CSV CSV + RDBMS API,CLI "Knowledge Explorer" ( ) GUI 1: Weka Weka Waikato Web [7] SourceForge.net [9] Windows MacOSX (Unix プラ ) ZIP イブ 2 Weka Sun Microsystems Java (Java Runtime Environment) Waikato [7] [10] 3 Weka ルゴリ [10] Weka Web ルゴリ パラメ 3.3 “Knowledge Explorer” 2.1 入出力と基本機能 1 Weka Weka 2 ARFF 2 JAR イブ 3 3.0.6

Hidenao Abe and Takahira Yamaguchi Shizuoka …...フリーウェアWekaによるDMアプリケーションの構築 Constructing a Data Mining Application with Weka 阿部秀尚⁄

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hidenao Abe and Takahira Yamaguchi Shizuoka …...フリーウェアWekaによるDMアプリケーションの構築 Constructing a Data Mining Application with Weka 阿部秀尚⁄

フリーウェアWekaによるDMアプリケーションの構築Constructing a Data Mining Application with Weka

阿部 秀尚∗ ,山口 高平Hidenao Abe and Takahira Yamaguchi

静岡大学Shizuoka University

1 はじめに

本稿では,Waikato大学 (ニュージーランド)のMa-chine Learning Laboratory を中心に開発が進められているデータマイニングツールWeka (Waikato Envi-ronment for Knowledge Analysis)1を紹介する.Wekaはデータベースからの知識発見における「データの前

処理」「マイニング」「結果の後処理 (検証)」のそれぞれについて,数多くの手法を提供している.

本稿では,Wekaを用いて実際に行われた慢性ウィルス性肝炎データセット [6]を題材としたデータマイニングの事例 [4]を通して,「データの前処理」と「マイニング」について,Wekaの使用法を紹介する.「データの前処理」ではWekaのコマンドラインインタフェース (CLI)を利用した属性構築について述べ,「マイニング」ではWekaのグラフィカルユーザインタフェース(GUI)を利用したマイニングの実行と可視化について述べる.

2 Wekaの基本情報

Wekaは Java言語 [2]で実装され,オープンソース開発手法によって,Waikato大学の研究者を中心に世界中の人々が開発にあたっている.オープンソースソ

フトウェアであるWekaはGPL(GNU Public Licence)の下に配布されているため,我々はWekaを無料で入手することができ,必要に応じて改変を加え,再配布

を行うことが可能である.このような特徴から,Wekaにはより多くの先端的なデータマイニング手法が含ま

れ,様々な利用法が可能なツールとなっている.また,

Wekaは Javaの実行環境以外の外部ライブラリを必要としない.このため,異なる OS上でも同じ操作感で

∗阿部 秀尚 静岡大学大学院理工学研究科         〒 432-8011 浜松市城北 3-5-1 静岡大学情報学部山口研究室  Tel:053-478-1473   Fax:053-473-6421            e-mail:[email protected]

12004 年 3 月現在,最新版は 3.4.1 である.

�������

��� �

�������������

��� �����

��� � �"!$# %

RDBMS

& #�'���

JDBC

"Knowledge Flow"

"Experiment Environment"

(�) *

+ ,�-�./�0

ARFF�2143��

ARFF�2143��

C4.5�2143��

CSV�2143�� CSV�2143��

+& #�'���

RDBMS

API,CLI 576�8:9<;>=@? �

A�B�C �ED 3F�# %

"Knowledge Explorer"

+ ,(�2143���GIH

) J2K �ML �NPO�Q�R �SL �143��

TGUI 576�8:9<;>= /U�V�W�X

図 1: Wekaのシステム構成の概観

作業することが可能である.

Wekaは,Waikato大学のWebサイト [7]あるいはSourceForge.netのサイト [9]から入手することが可能であり,Windows向けパッケージ・MacOSX向けパッケージが用意されている.また,その他 (Unix系プラットホームなど)向けパッケージは,最新版から ZIP形式でアーカイブされ,配布されている2.なお,Wekaの実行には Sun Microsystemsから提供される Java実行環境 (Java Runtime Environment)が必要である.使用法などについての情報は Waikato 大学のサイ

ト [7]や書籍 [10]3より得ることができる.Wekaで利用できる機械学習や統計手法による分類学習・数値予

測,クラスタリング,相関ルール学習,属性選択の各

アルゴリズムについては,[10] 内の参考文献やWekaのWebサイトに掲載されている文献に詳しい記述がある.また,実装されているアルゴリズムと各パラメータ

の簡単な説明に関しては,3.3節で述べる “KnowledgeExplorer”と呼ばれるインタフェースの中で得ることができる.

2.1 入出力と基本機能図 1にWekaの入出力と提供される機能の構成について,概観を示す.

Wekaに入力するデータは,図 2に示す ARFF形式2それまでは,JAR 形式のアーカイブとして配布されていた.3書籍は 3.0.6 を対象としているため,最新版と書籍内の記述に

多少の差異がある.

Page 2: Hidenao Abe and Takahira Yamaguchi Shizuoka …...フリーウェアWekaによるDMアプリケーションの構築 Constructing a Data Mining Application with Weka 阿部秀尚⁄

¶ ³@relation データセット名

% %以降はコメント

% @attribute 属性名 属性値情報

@attribute num_att1 numeric

@attribute num_att2 real

@attribute num_att3 integer

@attribute num_att4 date "yyyyMMdd HH:mm"

@attribute nom_att1 {A, B, C}

@attribute nom_att2 string

@data

1, 0.3, 5, "20040201 23:30", A, home

2.5, 1.2, 8, "20040202 00:01", C, school

?, 6.2,10, "20040202 01:12", B, office

...

% 欠損値は’?’と表記する

µ ´図 2: ARFF形式によるデータセットの記述

が標準とされている.この他に,C4.5形式,CSV形式4のファイルをコンバータを介して入力することがで

きる.また,JDBC(Java Database Connectivity)ドライバを介して,代表的なRDBMSと接続することが可能である.

図 2 に示すように,ARFFはデータセット (リレーション)名・属性の情報を記述するヘッダ部分・@data

以降のデータ部分から成る.各属性情報は@attibute

に続けて属性名とその属性値について記述する.数値

属性を表す場合,numeric・real・integer・date5の

どれか適切なものを用いる.名義属性の場合は {}内に属性値を書き並べるか,stringと記述する.@data

以降のデータセットは,各@attibuteに対応する値を

カンマで区切り,一行づつをひとつのデータ (以下,インスタンスと呼ぶ)として記述していく.なお,分類学習のクラスや数値予測の目的変数は実行時に指定する.

Wekaではデータマイニングの各処理段階について,以下に示すような手法を提供している.

データの前処理 属性フィルタ,インスタンスフィルタ,

属性選択

マイニング 分類学習,数値予測,クラスタリング,相

関ルール学習4一行目にカンマ区切りの項目名があり,二行目以降がそれらに

対応するデータとなる.5フォーマットを指定しない場合は ISO-8601による日付けと時

間の結合フォーマットとして解釈される.

¶ ³[個々のデータマイニング手法の利用]

$ java -cp weka.jar\

weka.classifiers.trees.j48\ クラス名

-t test.arff

[GUIの起動]

$ java -jar weka.jar

µ ´図 3: コマンドラインからのWekaの実行

図 4: Wekaの起動画面

可視化 (検証) 属性間の 2次元プロット,マイニング結果 (データ予測結果,モデル)可視化

上記の処理を実行するために,以下のような 3種類のインタフェースをWekaでは提供している.

• API(Application Program Interface): Javaアプリケーションからの利用

• CLI(Comand Line Interface): コマンドラインやスクリプト言語からの利用

• GUI(Graphical User Interface): ユーザとの対話的な利用

WekaのAPIを利用する際に必要となるドキュメントは [8]から得ることができる.コマンドラインから各手法を利用するときは,図 3に示すように,手法に対応するクラスを javaコマンドを用いて実行する6.

GUIは,図 3に示すように,javaコマンドで起動した後7,図 4に示すウィンドウが現れるので,対応するボタンを選択して各 GUIを実行する.これらのインタフェースを介して処理をした出力は,

処理内容に応じてデータセット・シリアライズされた6あらかじめ,環境変数で java に path を通しておく必要があ

る.7Windows などでは Weka を解凍してできるフォルダ (weka-

x-x) に存在する weka.jar をダブルクリックすることによって起動することもできる.

Page 3: Hidenao Abe and Takahira Yamaguchi Shizuoka …...フリーウェアWekaによるDMアプリケーションの構築 Constructing a Data Mining Application with Weka 阿部秀尚⁄

オブジェクト・実行結果のテキストとして得ることが

できる.GUIを用いた場合,入力したデータセットの内容や各手法の実行結果を可視化して確認することが

容易である.

2.2 利用可能なデータマイニング手法Weka version 3.4.1では,フィルタとして計 38種類,

分類学習・数値予測として計 48種類 (+メタ学習手法23種類),クラスタリングで 5種類,相関ルール学習で 2 種類の手法を利用することが可能である.属性選択 [3]では,8種類のフィルタアプローチの手法と,28種類 (属性部分集合評価法 4種類 ×探索法 8種類)のラッパーアプローチの手法を利用することができる.

ラッパーアプローチの手法では,属性部分集合評価法

で用いる分類学習・数値予測の手法を選択できるもの

もあるので,実際にはこれらの組合せの数だけ選択肢

が存在する.

最も多くの手法が用意されている分類学習・数値予

測の内訳は以下のようになっている8.

• ベイズ則に基づく学習 (8種類)

• 関数による学習 (12種類)

• インスタンスベース学習 (5種類)

• 決定木・モデル木学習 (10種類)

• ルールベース学習 (10種類)

• その他の学習アルゴリズム (3種類)

• メタ学習手法 (23種類)

分類学習・数値予測ではメタ学習手法とそれ以外の

手法を組み合わせることが可能である.いくつか組合

せが不可能なものがあるが,1000近くの組合せが利用可能である.

3 Wekaによる慢性ウィルス性肝炎データセットからの知識発見

本節では慢性ウィルス性肝炎の患者から得た主に血

液検査と尿検査の結果から成るデータセットを用いて

時系列パターンから成るルールを得るための実験を通

して,Wekaによる処理を紹介する.

3.1 時系列クラスタリングに基づくルール発見支援システム

本システムでは,慢性ウィルス性肝炎データセット

のような時系列データセットから,図 5に示すような8一部,実装によって扱えるパラメータが異なるだけの重複する

アルゴリズムが存在する.

�����������

� ���������

C4.5 ��

������������

�����������

�! ��"$#&%��������'�(

)�* %

+ �

,�-�,�.0/

1325476�8:9<;=?>

@?A7B 9?;=?>

C0D�EF�G�HIKJ G J

LNM�OP�Q G�R

S 6UTV95WYX?Z47[UT7\Gnuplot �]

^�_ Ha`F�G�HIKJ G J

K-means ��

図 5: 時系列クラスタリングに基づく知識発見システムの構成

手順にしたがって,時系列パターンから成るルールを

得ることを目的としている.出力されるルールの結論

部は予後期間の病状変化を示す検査項目9の推移パター

ンであり,条件部は予後の病状変化に影響を与える観

察期間での検査項目の推移パターンとなる.

慢性ウィルス性肝炎データセットに対しては,まず,

表記揺れの統一や値の補正などの「データの洗浄」,患

者毎に検査周期が異なるため「検査周期の均一化」な

どの低水準の前処理を加える必要があった.これらの

前処理はスクリプト言語などを使用して実行した.

低水準の前処理によって整えられたデータセットを

入力として,高水準の前処理として各検査項目の推移

パターンの抽出を行う.本システムでは,1つの検査項目を 1つの属性,その推移パターンを名義値に割り当て,属性値とした.これにより,各患者の検査項目

の推移 (以下,シーケンスと呼ぶ)は推移パターンに抽象化される.推移パターンを表現する方法として,他

にも複数の特徴量を複数の属性として表現する方法が

考えられる.しかし,多くのルール学習が可能なデー

タマイニング手法では,各属性が独立していると仮定

しているため,出力されたルールを直感的に解釈する

ことが困難になる.このため,ここでは時系列から取

り出したサブシーケンスをいくつかのパターンに抽象

化することによって属性を構築する.属性値となる推

移パターンは,各シーケンス数値ベクトルとして表現

し,クラスタリングによって作成する.

設定した観察期間と予後とした期間での検査項目毎

9ここでは GPT(グルタミン酸ピルビン酸トランスアミナーゼ)を利用した.

Page 4: Hidenao Abe and Takahira Yamaguchi Shizuoka …...フリーウェアWekaによるDMアプリケーションの構築 Constructing a Data Mining Application with Weka 阿部秀尚⁄

表 1: 一般的なコマンドラインオプションとその役割オプション 役割

-t file name 訓練データセットの指定

-T file name テストデータセットの指定

-l file name 入力するモデルファイルの指定

-d file name 出力するモデルファイルの指定

-c att name 分類クラス属性の指定

-x num 交差検定回数の指定

-p num モデルによる予測結果の出力

の推移パターン群を各属性として,患者の血液型・年

齢・血液型・肝炎型といった情報を付加して,マイニ

ングを実行するためのデータセットを作成する.ここ

では,C4.5[5]による決定木学習10など,ルールを得る

ことができる分類学習アルゴリズムの利用を仮定して

いる.得られたルールは,テキストで示され,これに

したがって推移パターン情報を取得した後,グラフプ

ロットツールを利用することでユーザに提示すること

が可能である.

3.2 Wekaとスクリプト言語を利用した属性構築

Wekaで提供されるデータマイニング手法はそれぞれが Javaのクラスと対応している.各クラスではmain関数が用意され,コマンドラインからの実行が可能で

ある.コマンドラインからの実行では,共通オプショ

ンと各手法固有のオプションを与えて,モデルをシリ

アライズしたファイルや実行結果のテキストを標準出

力から得る.表 1にコマンドラインからWekaを利用する際に比較的多く使用すると思われるオプションを

示す.

本実験で利用した慢性ウィルス性肝炎データセット

は 771人の患者の最長 20年の検査結果から成るデータセットである.このデータセットには,当初,930種類の検査項目について,1つの検査項目での結果を 1レコード11とした 1,549,299レコードのインスタンスが含まれている.

本実験では,低水準の前処理を行ったデータセット

から検査項目毎に設定した観察期間 (5年間)のシーケンスを 1インスタンスとしたデータセットを作成する.同様に,予後期間 (6ヶ月)の GPTのシーケンスについてもデータセットを作成する.ここでは,シンプル

なクラスタリング手法である K-meansによって推移

10Weka では J4.8 として実装されている.11「患者 ID」「検査日」「項目名」「検査結果」から構成される.

������������� ����� ���������

$ java -cp weka.jar\

weka.clusterers.SimpleKMeans\

-N <num> -S <random_seed>\

-t <labo_test>.arff\

-d <labo_test>.model

�������������! �"�#�$ ��%�&�')(*%

$ java -cp weka.jar\

weka.clusterers.SimpleKMeans\

-T <labo_test>.arff\

-l <labo_test>.model\

-p 0 > <output>

����������+ ��� ����#,�-�� �"�#� .-/10)24365&-'�(*%

������� 087�9;:�-�� �)�#� 0<7�9�=,?>A@ � �;�*���4�

B�C

図 6: クラスタリングによる検査結果推移パターンを表す属性構築

パターンを作成し,これらのデータセットの各インス

タンスに対応する推移パターンの名義値を割り当てる

手順を示す.

まず,推移パターンにあたるクラスタの生成基準を

最低被覆事例数 I ≥ 10,最大クラスタ数 C ≤ 8 と設定した.最低被覆事例数の下限設定は医師のコメ

ントに基づくものである.また,最大クラスタ数は

ルールを認識するために負担にならないと思われる

程度とした.上記の基準を満たし,最適なクラスタを

weka.clustrers.SimpleKMeansによって得るためには‘クラスタ数’と ‘ランダムの種’の 2つのパラメータを調整する必要がある.

パラメータを調整した後,図 6に示すようにコマンドを実行していく.まず,各検査項目のデータセット

に対して,クラスタリングを実行し,クラスタのモデ

ルファイル12を得る.次に,このモデルファイルを読

み込んで,元のデータセットの各インスタンスがどの

クラスタ番号に割り当てられるかを得る.図 6中の ‘-p0’というオプションは,インスタンスの順序番号13と

クラスタ番号を一対として得ることを意味している.

全データセットを推移パターンに変換した後,シーケ

ンス毎の推移パターンを属性値としてスクリプト言語

などでマイニング用のデータセットに統合する.

12Javaでのインスタンスがシリアライズ (直列化)されたファイル.

13Wekaでは読み込んだインスタンスの 0番目の属性としてインスタンス番号を付加している.

Page 5: Hidenao Abe and Takahira Yamaguchi Shizuoka …...フリーウェアWekaによるDMアプリケーションの構築 Constructing a Data Mining Application with Weka 阿部秀尚⁄

図 7: Explorerへの慢性肝炎データセットを読み込み

3.3 Knowledge Explorerによる決定木の実行

ユーザは,まだ手順が確立されていないデータマイ

ニングの初期段階での試行錯誤による各手法をこの

Explorerを利用して実行する.本GUIで最初にすることは,データセットの読み込

みである.まず,Preprocessパネルの “Open file...”からファイルを選択する.ARFF形式以外のファイルを指

定すると,エラーメッセージが表示され,コンバータ

の適用を促される.また,データベースからの読み込

みは “Open DB...”から接続するデータベースと取得するデータセットを設定し,読み込みを実行する.図

7に慢性肝炎データセットを読み込んだ際の画面を示す.このパネルでは,データセット全体の情報と,各

属性毎の簡単な統計値,頻度分布グラフ,クラス分布

が色分けされ表示される.また,このパネルにおいて

各種フィルターを Chooseボタンから選択し,適用することができる14.

データセットを読み込むと “Preprocess” 以外のパネルでの操作が可能になる.“Visualize”パネルでは各属性間でのインスタンスの分布が二次元プロットとし

て表示される.図 8は,横軸に年齢,縦軸にクラスをとったときのプロットの様子である.このとき,各イ

ンスタンスはクラスや目的変数によって色分けされた

点として表示される.

決定木を実行するため,“Classify”のパネルに移動する (図 9).実行するアルゴリズムは,“Classifier”のChooseボタンを開き選択する.決定木のノードでの分割停止条件などのパラメータはこのボタンの横にある

テキストエリアをクリックして開くウィンドウにおい

て設定する.このウィンドウの AboutエリアにMore14最新版では Undo 機能が追加されている.

図 8: Explorerでの慢性肝炎データセットの可視化

図 9: Explorerでの決定木の実行設定

ボタンが用意されているアルゴリズムでは,このアル

ゴリズムについての概要とパラメータの役割について

の情報を得ることができる.

分類学習や数値予測を評価する際に用いる検定法は

Test optionsエリアで選択し,クラスや目的変数はその下にあるプルダウンリストから任意の属性を選択す

る.これらの設定を行い,Startボタンによって実行を開始する.実行結果と評価結果はテキスト形式で右側

の Classifier outputエリアに表示され,結果の可視化は,Result listで任意の実行結果を選択し,マウスの右クリックから選択することで表示される.実行結果の

可視化機能は,各インスタンスに対する予測結果,各

種曲線,学習されたモデル15について提供される.図

10に決定木学習 J4.8を実行し,全データセットに対して学習された決定木の一部を示す.予測結果は,各

クラスによって色分けされたインスタンスが正解 (×)と誤分類 (□)に区別されて表示される.

15モデルが表示されない学習アルゴリズムもある.

Page 6: Hidenao Abe and Takahira Yamaguchi Shizuoka …...フリーウェアWekaによるDMアプリケーションの構築 Constructing a Data Mining Application with Weka 阿部秀尚⁄

図 10: Explorerへの慢性肝炎データセットに対する決定木の実行結果

3.4 Knowledge Flowによるマイニング手順の可視化

3.3での決定木の実行手順をKnowledge Flowによって可視化した際の動作画面を図 11に示す.

Knowledge Flowでは,データセットの読み込み,評価法と分類クラスや目的変数の指定,フィルタ,分類

学習と数値予測,データや結果の可視化の各手法が

アイコンとして表現されている.これらのアイコンを

“Knowledge Flow Layout”パレットの上に並べ,それぞれの操作の流れにしたがって矢印を接続していく.

各手法のアイコンからは何が出力されるかが示され,

指定した出力を入力できる手法にマーカが現れるため,

ユーザが間違いなくデータマイニング手順を作成でき

るよう工夫されている.

以上,Knowledge Flowによる,商用ツールなどで一般的なデータマイニング手順の可視化を伴った,デー

タマイニングを簡単に紹介した.Knowledge Flowでは,作成した手順をファイルに保存し,同じKnowledgeFlowを介して共有することが可能である.

4 まとめ本稿ではオープンソースのデータマイニングツール

であるWekaを実際の適用に基づいて説明した.しかし,Wekaで利用できるデータマイニング手法は数多くあり,本稿での紹介はほんの一部を利用した事例に

過ぎない.また,本稿ではデータの処理を中心にWekaの機能を紹介したが,Wekaを利用して新たなデータマイニング手法を実装することも可能である.この際,

WekaのWebページから得られる UCI MLリポジトリからのデータセットや人工データセットが手法の評

図 11: Knowledge Flowによる慢性肝炎データセットに対する決定木の実行手順の可視化

価の手助けとなるであろう.また,本稿では紹介でき

なかった “Experiment Environment”は複数のデータセットに対し,複数のデータマイニング手法を適用し,

実行結果を検討するために用いる GUIである.今後は,筆者が開設している Weka に関する Web

ページ [1]などを通じて,本稿のような事例紹介を基に利用法の解説を公開していこうと考えている.

参考文献[1] http://panda.cs.inf.shizuoka.ac.jp/̃ hidenao/work/weka/

[2] http://java.sun.com/

[3] Liu, H. and Motoda, H.: “Feature Selection for KnowledgeDiscovery and Data Mining”, Kluwer Academic Publishers(1998).

[4] 大崎 美穂,佐藤 芳紀,北口 真也,横井 英人,山口 高平:時系列医療データにおけるルール発見支援システム:慢性肝炎データセットでのケーススタディ,電子情報信学会人工知能と知識処理研究会,情報処理学会知能と複雑系研究会,人工知能学会人工知能基礎論ならびに知識ベースシステム研究会「アクティブマイニング」合同研究会 (2003).

[5] Quinlan, J. R. :“Programs for Machine Learning”, MorganKaufmann (1992).

[6] 横井 英人,平野 章二,高林 克日己,津本 周作,里村 洋一:慢性ウィルス性肝炎データに関するアクティブマイニング -病院情報システムにおける知識発見プロセスの実現に向けて-,人工知能学会誌,Vol.17,No.5,pp. 622–628 (2002).

[7] http://www.cs.waikato.ac.nz/ml/weka/

[8] http://www.cs.waikato.ac.nz/̃ ml/weka/doc gui/

[9] http://sourceforge.net/projects/weka/

[10] Witten, I., and Frank, E. :“Data Mining: Practical machinelearning tools and techniques with Java implementations”,Morgan Kaufmann Publishers (1999).