Enjoy Data Mining!

データマイニング手法やデータマイニングツールの使用法などの備忘録

Wekaで分析するためのデータの準備

Wekaを用いたデータの準備をする際,「どのようなデータを用意すべきか」で頭を悩ませることが多いと思います.
今回は,3つの観点からデータの準備について,説明していきます.

データの内容

Wekaで利用可能な機械学習アルゴリズム(一部,回帰分析などの統計的手法),クラスタリング手法では,事例をいくつかの特徴量で表した表形式のデータを用いることを想定しています.
表形式のデータは,データベースで言うところのリレーショナルモデルによる用語でも説明可能です.

データの作成の考え方

特徴量(英語でFeature)は属性(英語でAttribute)と呼ばれますが,この属性に具体的な値(=属性値)を入れて,1つ1つの事例や個体を表します.
特徴量は,回帰分析などでは,「説明変数」(「独立変数」)と「目的変数」(「従属変数」)と分けて呼ばれます.
「目的変数」は,「説明変数」の値をもとに予測される値をもつ変数です.
分類やカテゴリを予測するための機械学習アルゴリズムでは,特徴量や属性により予測される分類やカテゴリの入る属性を「クラス」と呼びます.

では,特徴量がどうやって「説明変数」「目的変数」と分けられるか,「クラス」は何を設定するか,正解はあるのでしょうか?
この疑問に対する回答は,「分析者が(依頼者とともに)決める」ということになります.
簡単に言うと”正解のない問題”なのですが,基本的には因果律(時間的,理論的,統計的)が成立していたり,慣例で決められていたりします.
また,データ収集時から特徴量の割り当ては決めて行うことが理想的であることから,「データがあるから,何でも望めば分析できる」とは限りません.

また,データマイニングでは,様々な背景を持つデータとそれらを扱う分析手法が用いられますので,用語の使われ方が様々入り乱れます.
学校や大学,資格の試験では,正解が問われますが,ここでは,背景となる分野での正誤ではなく,その呼び名が実際のデータで何を指しているか,を理解することが重要です.

データの種類

データマイニングに用いられるデータの種類は,大きく分けて以下の3つがあります.

分類・識別モデルの作成から評価までの典型的プロセス
訓練データ集合

訓練データ集合は,機械学習アルゴリズムによる分類規則(決定木やルール,ニューラルネットワーク等)や回帰分析による回帰式を作成するために用いられるデータのことです.
クラスタリングや相関ルール集合,頻出アイテム集合の作成を行う場合でも,対象のデータ集合を訓練データ集合,と呼ぶことがあります.
なお,訓練データ集合は,モデルとしてより良い推定値を得るため,通常,より多くのデータを必要とします.

訓練データ集合に用いられるデータを用いて,分類規則や回帰式での予測値を求めると,通常は,高い割合(正解率)で元の予測対象の値と同じ予測値が得られます.
訓練データ集合により,分類規則や回帰式の評価を行うことを「再代入評価」と呼びます.

検証用データ集合

検証用データ集合は,得られた分類規則や回帰式の検証用の評価に用いられる,訓練データ集合とは別のデータ集合のことです.
このデータ集合を用いて,機械学習アルゴリズムのパラメータを調整するなどして,再度,分類規則などの作成(洗練化)を行います.
このため,正解の値が必ず入っていることが前提のため,元の訓練データの一部を取り出すことがよく行われます.

検証用データ集合を訓練データ集合の一部から取り出し,機械学習アルゴリズムや回帰分析のパラメータ設定などの比較評価を行うことを「交差検証」(クロスバリデーション;Cross Validation)と呼びます.
交差検証は,n個に元の訓練データ集合をランダム分割し,(n-1)/n個を訓練データ集合,1/n個を検証用データ集合とするn回交差検証(n-fold cross validation)がよく知られています.
Wekaでは,ランダム分割を行う際,各クラスラベルの数の割合(クラス配分)を考慮した「層化交差検証」(stratified cross validation)が行われます.
通常,n-foldのnは10や5がよく用いられますが,層化交差検証を行う場合は,最も少ないクラスラベルのデータ数以下に設定することは好ましくありません.
機械学習アルゴリズム同士の比較では,さらに慎重を期すためn回交差検証をN回繰り返し,その平均正解率を統計的仮説検証で比較することがよく行われます.

n回交差検証のプロセス

検証用データ集合の作成方法は,n-foldのほか,元の訓練データ集合からの復元抽出を繰り返すブートストラップ法もあります.

テストデータ集合

テストデータ集合は,検証用データ集合と同じく正解のあるデータ集合の場合とまったく正解のない場合があります.
どちらも,「訓練データ集合ではない」ことが重要です.(テストデータ集合に訓練データ集合が混じることは,”リーク”として問題となります)

テストデータ集合と訓練データー集合では,暗黙の前提として,特徴量(属性)の種類や特徴量の値の範囲や分布がほぼ等しい,という必要があります.
ところが,実問題では,特徴量の内容が大きく異なる可能性があります.
テストデータ集合は,通常,訓練データ集合より小さくなるため,特徴量の値の一部が異なったり,大きく分布が外れたりすることがあります.
Wekaでは,3.8系列以降で,前者の特徴量(属性)や値の違いをテストデータ集合のファイルを指定しての実行時に,ある程度,自動的に対応付けすることが可能になっています.

WekaのExplorerでのテストデータ集合の利用手順

データの形式

通常,表形式のデータをファイルで扱う場合,多くはCSVファイルとして管理しているところが多くあるかと思います.
ExcelGoogleドライブのスプレッドシートで扱うデータも,CSV形式(文字コードUTF-8)とするとWekaでの読み込みがしやすくなります.
ARFFファイルは,下記のように,@data以下にCSV形式と同じデータを入れ,CSVの1行目にあたる特徴量(属性)の名前は@attribute以下に書きます.

ARFFファイルの記述例
データの値

データの値は,機械学習アルゴリズムでは多くの場合「数値」(numeric value)と「名義値」(nominal value)に分けて扱われます.
Wekaにおいても,大まかな値の分け方は,「数値」と「名義値」です.
ARFFの@attributeの指定では,numericと名義値を表すための{}内への値の列挙のほか,integer(整数),string(分かち書きテキストなどの文字列)が可能です.
Wekaでは,これらの値の変換など様々な処理操作がフィルター(weka.filter.unsupervisedのパッケージ内のクラス)という形で提供されます.

実際の現場でのデータでは,欠測などで値がない事例や個体が生じることがあります.
CSVデータをExcelなどで表示すると空白のセルとなりますが,Wekaでは,値を「?」とすることで欠測値(欠損値,または不明値)を表します.
このため,メモ帳などのテキストエディタで直接ARFFファイルを作る際は,コピー&貼り付けした後,置換機能などを使って欠測値を「?」に変換するひと手間が必要になります.

欠測値のあるデータでのARFF