SnapCrab_2017-1-16_18-43-15_No-00

こんにちは!大学教員ブロガーのねこしです。

データ解析の手順』における「5.回帰モデルもしくはクラス分類モデルを作る」についてです。なお実行するためのプログラムについてはこちらをご覧ください。

公開中のプログラム・コード一覧(実用的かつ実践的なデータ解析・機械学習・データマイニング) : 大学教授のブログ (データ分析相談所)

データを見える化・可視化してからサポートベクターマシン(Support Vector Machine, SVM)でクラス分類をすることで、クラス分類の様子を目で確認するお話です。

可視化+SVMのプログラムを簡単に入手できます!

それぞれのURLからお求めください!noteでもSPIKEでも言語が同じであれば同じものです。

R (KPCA+SVM): note SPIKE

R (SOM+SVM): note SPIKE

R (GTM+SVM): note SPIKE

可視化+多クラス分類SVMのプログラムを簡単に入手できます!

それぞれのURLからお求めください!noteでもSPIKEでも言語が同じであれば同じものです。

R (KPCA+多クラスSVM): note SPIKE

R (SOM+多クラスSVM): note SPIKE

R (GTM+多クラスSVM): note SPIKE

データの見える化・可視化+サポートベクターマシン(Support Vector Machine, SVM)でクラス分類

性能の高いクラス分類手法の一つにサポートベクターマシン(Support Vector Machine, SVM)があります。詳しくはこちらをご覧ください。

サポートベクターマシン (Support Vector Machine, SVM) の実用的かつ実践的な方法 : 大学教授のブログ (データ分析相談所)

ただ、SVMの弱点として、モデルが非線形のためどのようにクラス分類しているか様子が見えないことが挙げられます。境界線がよくわからないわけですね。そこで、境界線を見える化・可視化します!

やり方は難しくありません。PCAKPCASOMGTMなどによりデータセットを見える化・可視化してから(2次元平面にデータセットを写像してから)、その2次元平面上でSVMを行うだけです。

2つの変数だけでSVMによりクラス分類をしなければならないため、2つで十分な情報量を獲得しなければなりません。そのため、線形のPCAよりは非線形のKPCA・SOM・GTMのほうが向いています。ただそれでも、見える化・可視化する前のSVMとくらべて、クラス分類性能が低くなることがありますので注意が必要です。

ただ、データの見える化・可視化するときは、クラス(カテゴリー)の情報がないデータも扱えます。見える化・可視化のときはクラス(カテゴリー)の情報があるデータとないデータとを一緒にして行い、その後のSVMのときはクラス(カテゴリー)の情報があるデータだけでモデルをつくるってことができるわけです。つまり、半教師あり学習になるわけですね。半教師あり学習の利点はこちらをご覧ください。

教師なしデータセットを積極的に使おう!~半教師あり学習の3つの利点~ : 大学教授のブログ (データ分析相談所)

データの見える化・可視化+SVMは以下の手順で行います。

  1. クラス(カテゴリー)の情報がある説明変数(記述子・特徴量・入力変数)のデータとクラスの情報がない説明変数のデータとをつなげる
  2. データの見える化・可視化する
    PCAKPCASOMGTMなどによりデータセットを2次元平面に写像します。
  3. クラス(カテゴリー)の情報があるデータについて2次元平面上の座標を得る
    これがSVMを行うときの説明変数になります。
  4. C, γの候補を決める
    例えば、
    C: 2-10,  2-9,  …,  214,  215
    γ: 2-20,  2-19,  …,  29,  210
    とします。
  5. γの値ごとにカーネル行列を計算し、その分散を計算する
    たとえばカーネル行列が100×100の行列であったとき、単純に10000×1のベクトルになおして分散を計算します。
  6. 分散の大きさが最大となるγの値を最適値として決定する
    分散が最大となるγを選ぶことで、多様な値をもつカーネル行列となります。
  7. 上で最適化したγを固定して、Cのすべての候補においてクロスバリデーションにより目的変数の推定されたクラス分類結果(推定値)を得る
    クロスバリデーションとして、leave-one-outクロスバリデーションが有名ですが、オーバーフィッティングを起こしやすいため、5-foldクロスバリデーションや2-foldクロスバリデーションが望ましいです。つまり、データを一つ取り除いてそれ以外でモデルを構築して、取り除いた一つを推定することを繰り返すのではなく、あらかじめデータセットを5個または2個のグループに分けておき、1グループを取り除いてそれ以外のグループでモデルを構築して、取り除いた1グループを予測することを繰り返します。
  8. Cの候補ごとに目的変数の実測値と推定値との間で正解率を計算する
  9. 正解率の値が最大となるCを最適値とする
  10. 最適化されたC・γの組み合わせによりSVMモデルを構築する
  11. 最適化されたC・γの組み合わせにおける、目的変数の計算値と実測値との間で混同行列を計算し、最適化されたC・γの組み合わせにおける、目的変数のクロスバリデーション予測値と実測値との間で混同行列を計算する
    必要に応じて、各混同行列から正解率・検出率・精度などを計算します
  12. [新しいデータの推定をするとき] 説明変数の新しいデータから、オートスケーリングした時の説明変数の平均値を引き、標準偏差で割る
  13. [新しいデータの推定をするとき] 得られたSVMモデルにより目的変数の推定値を計算する
  14. SVMの結果を最初に見える化・可視化した2次元平面で確認する

ここまでお読みいただきありがとうございます。ぜひ上にあるデータの見える化・可視化+SVMのプログラムもご活用ください。

データ解析の質問 募集中!

こちらへお願いします!

ご案内。

オススメ記事セレクション。

twitterでも発信中。

この記事に興味を持っていただけましたら、ぜひフォローをお願いします!


無料メルマガでブログにない情報を配信中。

データ解析・分析に興味がありましたらぜひ登録をお願いします!
無料メルマガの登録はこちら