Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Weka分類学習アルゴリズムの利用法(その1)

5,744 views

Published on

Wekaで分類学習アルゴリズムをCLIから利用するのと同じように,PHPスクリプトから利用する演習付きのスライドです.

NOTE: This presentation is written in Japanese.
This presentation include a process to use Weka classifiers from CLI.
In this presentation, I'll give you a small practice for use a decision tree learner, called J4.8, from Windows command line.

Published in: Engineering
  • Be the first to comment

Weka分類学習アルゴリズムの利用法(その1)

  1. 1. Wekaによる 機械学習アルゴリズム の実行 その1:PHPスクリプトによるCLIからの 機械アルゴリズムの実行 2014年11月27日 文教大学情報学部情報システム学科阿部秀尚 (hidenao@shonan.bunkyo.ac.jp)
  2. 2. システムの構成(概観) センサーに よる電子化 ... 様々な形態の入力 対象システム 識別器構築 処理 アクチュ エータ 特徴量抽出 処理 様々なタスクの実現(出力)
  3. 3. 入力データと特徴量抽出 • 表形式データ 構造化データ ◦ →離散値,数値を加工処理 とも呼ぶ • 時系列データ(株価や心電図など) ◦ →時点毎の値,波形特徴量,分類 • 音声データ ◦ →時点毎の値,波形特徴量 • テキストデータ ◦ →特徴語の有無や重要度(bag-of-words) • 画像データ ◦ →画素ごとの値,局所特徴量(bag-of-visual-words) 特徴量抽出 処理を行って 作成 非構造化データ とも呼ぶ
  4. 4. Wekaを利用した知能システム構築 ~Wekaとは~ • Weka(ウェカ)は,ワイカト大学(ニュージーランド)の機 械学習グループを中心に作成されたデータマイニングツール • Javaで実装されたオープンソースソフトウェア • 各種インタフェースからデータマイニングでよく利用する処 理や分析手法,視覚化機能が利用可能 コア機能 (データ前処理& 機械学習) データ ローダー 視覚化機能 ARFF CSV C4.5 等 RDB 結果 分析 機能 RDB 視覚化 された モデル・ テキスト・ オブジェクト ファイル コマンドラインから利用できる機能
  5. 5. 分類・識別モデルの生成・適用手順 1. 分類・識別モデルの生成(必須) ◦ 訓練データ集合を入力 ◦ 分類・識別モデルを出力 ◦ 学習アルゴリズムによってモデル(ルールや式な ど)を生成(学習とも呼ばれる) 2. 分類・識別モデルの洗練 ◦ 学習したモデル,検証データ集合を入力 ◦ 洗練したモデルを出力 ◦ 重みづけした訓練用データ集合を出力することもある ◦ モデルの性能を向上させるため,再度モデルの生 成などを行うこともある 3. 分類・識別モデルの評価 ◦ モデルとテストデータ集合を入力 ◦ テストデータに付けてあった正解ラベルと分類・ 識別モデルの予測ラベルとの比較を行う →数値化して比較する 訓練データ 集合 分類・識別モデル の生成(学習) 分類・識別モデル の洗練 検証データ 集合 分類・識別モデル の評価 テストデータ 集合 分類予測結果付き ファイル 特徴量抽出 アクチュエータ
  6. 6. Wekaを利用した分類・識別モデルの 生成手順→分類予測の獲得 1. データ集合(訓練,テスト(検証用))を用意する ◦ 入力データ集合はARFF形式に変換する ◦ テストデータ集合は訓練データ集合と同じ属性情報のもとに構築され なければならない ◦ テストデータ集合はクラスが付いている必要があり→クラスが全く未知の場合はすでにある クラスの1つを用いるなど 2. 分類器・識別モデルを構築する ◦ 入力:分類学習・パターン認識アルゴリズムに対応するwekaの分類器 クラス名,訓練データ集合とパラメータ ◦ 出力:分類器モデル(シリアライズされたオブジェクト) 3. 分類器・識別モデルをテストデータ集合に適用 ◦ テストデータ集合の各データに構築された分類器・識別モデルによる 分類予測を付与 →アクチュエータは付与された予測ラベルを読み取って利用 ※上記の流れはlibSVMやR, Pythonのライブラリなどを利用しても同じ
  7. 7. ARFFの概要 @relation weather @attribute outlook string @attribute temperature numeric @attribute humidity integer @attribute windy {true, false} ※ARFFはWekaに直接入力できる @attribute time_s date “yyMMdd HH:mm” @attribute play {yes, no} @data sunny,85,85,false,010822 10:00,no overcast,83,86,false,010911 11:00,yes rainy,70,?,true,010921 10:30,yes データ集合の記述形式 データセットの名前 属性名を縦に列挙する 数値属性を示す (実数:real,整数:integer) 名義属性は属性値 をカンマ区切りで示す 日付はdate+フォーマットで 定義する クラスも他の名義属性と 同様に記述(実行時に指定) @data以降CSV形式の データ 欠損値は’?’で表す
  8. 8. Wekaのコマンドラインでの実行 1. データ集合(ARFFファイル)を用意する ◦ データ形式変換: $java –cp <weka.jarまでのパス> weka.core.converters.[ファイル形 式]Loader 入力ファイル名> ARFFファイル名 ◦ フィルタ適用: $java –cp <weka.jarまでのパス> weka.filters.フィルタータイプ.対象. フィルタ名[各フィルタのパラメータ] –i 入力ファイルARFF名–o 出力 ファイルARFF名 2. 分類器・識別モデルを訓練データ集合に対して構築 ◦ $ java –cp <weka.jarまでのパス> weka.classifiers.アルゴリズムのタイプ.クラス名 –t <訓練データ集合ファイル名> -d <分類・識別モデルファイル名> 3. 分類器・識別モデルをテストデータ集合に適用 ◦ $ java –cp <weka.jarまでのパス> weka.classifiersアルゴリズムのタイプ.クラス名 –T <テストデータ集合ファイル名> -l <分類・識別モデルファイル名>
  9. 9. Wekaの分類器系クラス(weka.classifiers.*) 共通のコマンドラインオプション • -t:訓練データ集合のARFFファイル名 • -x:n回交差検証(n-fold CV)のnを指定(既定値は10) • -c:クラスの属性番号(既定値はlast) • -d:出力する分類器・識別モデルのファイル名 • -T:テストデータ集合の指定 ◦ ただし,これを指定するとモデルファイルは出力されない • -l:テストデータに適用する分類器・識別モデルのファ イル名 • -p:分類予測を行って示す属性の範囲を指定する (0を指定すると正解として与えたクラス,分類予測ク ラス,異なるか( /+),予測確度が表示される)
  10. 10. Wekaに用意された分類器・パターン 認識アルゴリズムのクラス • Wekaの分類器・パターン認識アルゴリズムクラス →weka.classfires.分類器タイプ.* • 事例ベース学習(IBk, k-NN) ◦ weka.classifiers.lazy.IBk • 決定木学習(J4.8) ◦ weka.classifiers.trees.J48 • その他,クラス名は エクスプローラーの“分類” パネルにある「選択」で表示 されるように多数ある
  11. 11. 事例ベース学習(IBk),決定木(J48)の パラメータ • パラメータ:アルゴリズムの性能を左右する要因となる 方法の指定や設定値 ◦ エクスプローラーの“分類”で設定できる値や方法の指定をコマ ンドラインオプションで行う • 事例ベース学習(weka.classifiers.lazy.IBk) ◦ -K:k-NNのkを指定 ◦ -A:近隣データの探索方法を指定する ◦ -A "weka.core.neighboursearch.LinearNNSearch -A "weka.core.EuclideanDistance -R first-last"" • 決定木(weka.classifiers.trees.J48) ◦ -M:最少分割時データ数(既定値2) ◦ -C:枝刈り基準の危険率(既定値0.25) ◦ -U:枝刈りを行わないことを指定
  12. 12. 演習:コマンドラインでのWekaの実行 • exec_wekaディレクトリ以下でweka-3-6-11.zipを展開 ◦ http://prdownloads.sourceforge.net/weka/weka-3-6-11.zip 1. 分類器・識別モデルの構築 2. 分類器・識別モデルの適用
  13. 13. 演習: コマンドライン実行のスクリプト化 • ひな形:exec_weka_classifiers.php http://weka-jp.info/archives/exec_weka_classifiers.zip ◦ 第一引数→アルゴリズム名,第二引数→訓練データ集合ファイル名, 第三引数→テストデータ集合ファイル名 ◦ PHPでの外部コマンド実行→system関数 ◦ exec関数でも実行可能 ◦ 訓練データ集合:$training_set ◦ テストデータ集合:$test_set ◦ モデルファイル:$model_file (テストデータ集合ファイル名から生成) • 演習内容 1. 上記変数を使ってコマンドラインからの一連の流れを実行している 部分を完成させよう 2. 作成したPHPスクリプトを実行する ◦ Y:exec_weka> c:xamppphpphp.exe exec_weka_classifiers.php J48 <訓練データ集合ファイル名> < テストデータ集合ファイル名> 3. (可能であれば)実行できるアルゴリズム名を増やしてみよう

×