SnapCrab_2017-1-13_17-18-15_No-00

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

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

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

教師あり自己組織化写像(Self-Organizing Map, SOM)による回帰分析・クラス分類です。Counter-Propagation Neural Network (CPNN) と呼ばれたりもします。

教師ありSOMによる回帰分析・クラス分類のプログラムを簡単に入手できます!

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

R (回帰分析): note SPIKE

R (クラス分類): note SPIKE

教師あり自己組織化写像(Self-Organizing Map, SOM)による回帰分析・クラス分類

こちらのようにニューラルネットワークの一つであるSOMにより、非線形の見える化・可視化をすることができます。たくさんの変数 (記述子・特徴量) で表現されたサンプルを、二次元の平面で確認することができるわけです。

自己組織化写像(Self-Organizing Map, SOM)の実用的かつ実践的な方法 : 大学教授のブログ (データ分析相談所)

このSOMを回帰分析・クラス分類に応用します。二次元平面に見える化・可視化するのはSOMと同じです。さらにSOMの二次元平面において、回帰分析ではどのグリッド(ニューロン)がどの目的変数の値に対応するか、クラス分類ではどのニューロンがどのクラスに対応するかも一緒に決めてしまうんです。データの見える化・可視化と、回帰分析・クラス分類とを一緒にやるわけですね。新しいサンプルについては、二次元平面におけるどこに対応するかわかるため、そこに対応する目的変数の値・クラスも予測できるわけです。

教師ありSOM回帰分析・クラス分類は以下の手順で行います。

  1. マップの種類を決める
    一つ一つのニューロンの形が、六角形か正方形かを選びます。とくに理由がなければ六角形にしましょう。
  2. トーラスマッピングにするかどうか決める
    トーラスマッピングにすると、マップの一番右のさらに右は一番左になり、一番上のさらに上は一番下になります。つまり立体的にはドーナッツの形になります。とくに理由がなければトーラスマッピングにしましょう。
  3. マップサイズを決める
    縦に何列、横に何行のニューロンを並べるかを決めます。たとえば横に10、縦に10です。基本的に、(横の数)×(縦の数)、つまり全ニューロンの数、がサンプル数より小さくなるようにします。マップサイズはサンプル数によって変化させるということです。
  4. 学習回数を決める
    大きめに設定しておきましょう。たとえば100です。
  5. 学習率を決める
    0.03とか0.01とかで設定します。たとえばRのkohonenというパッケージでは、学習率を0.05から0.01まで徐々に小さくすることもできます。
  6. 説明変数にオートスケーリングを行う
    オートスケーリングとは各変数から平均値を引いて平均を0にし、各変数を標準偏差で割って標準偏差を1にする操作です。
  7. SOMを学習させる
  8. 二次元のマップ上でサンプルの位置関係を確認する
    二次元マップ上の各グリッド(ニューロン)における、回帰分析では目的変数の値を、クラス分類ではそれぞれのクラスになる確率を図示する
    クラス分類では、グリッド(ニューロン)ごとに、この確率が最も大きいクラスが割り当てられることになります。
  9. 目的変数の計算値を求める
    回帰分析では、目的変数の計算値と実測値との間で決定係数・Root-Mean-Squared Error (r2C・RMSEC)を計算し、実測値と計算値とのプロットを確認します。
    クラス分類では、目的変数の計算値と実測値との間で混同行列を計算し、必要に応じて、各混同行列から正解率・検出率・精度などを計算します。
  10. [新しいデータの推定をするとき] 説明変数の新しいデータから、オートスケーリングした時の説明変数の平均値を引き、標準偏差で割る
  11. [新しいデータの推定をするとき] 上の7.で得られたSOMにより目的変数の推定値を計算する

新しいデータを推定する際に工夫が必要なのは、得られたSOMは、説明変数がオートスケーリングされた後のモデルであるためです。そこで、新しく推定したい説明変数のデータがあれば、そのデータからオートスケーリングした時の説明変数の平均値を引き、標準偏差で割ってからSOMにより目的変数の推定値を計算します。

ここまでお読みいただきありがとうございます。ぜひ上にある教師ありSOM回帰分析・クラス分類のプログラムもご活用ください。

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

こちらへお願いします!

ご案内。

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

twitterでも発信中。

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


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

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