2016-05-28_09h37_18

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

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

[New] PLSのプログラムを簡単に入手できるようになりました!

それぞれのURLからお求めください!

MATLAB: https://spike.cc/shop/univprof/products/6C0sOSSZ

R: https://spike.cc/shop/univprof/products/FIMtWc8s

Python: https://spike.cc/shop/univprof/products/rGSRqnvP

Partial Least Squares (PLS)

PLSを行うときに重要なことは主成分の成分数を決めることです。最終的なPLSモデルを構築する方法と、そのモデルを用いて予測を行う方法とを順に説明します。

  1. 説明変数・目的変数をオートスケーリングする
    オートスケーリングとは各変数から平均値を引いて平均を0にし、各変数を標準偏差で割って標準偏差を1にする操作です。
  2. 成分数を1, 2, …, m として、それぞれにおいてクロスバリデーションにより目的変数の推定値を得る
    クロスバリデーションとして、leave-one-outクロスバリデーションが有名ですが、オーバーフィッティングを起こしやすいため、5-foldクロスバリデーションや2-foldクロスバリデーションが望ましいです。つまり、データを一つ取り除いてそれ以外でモデルを構築して、取り除いた一つを推定することを繰り返すのではなく、あらかじめデータセットを5個または2個のグループに分けておき、1グループを取り除いてそれ以外のグループでモデル構築して、取り除いた1グループを予測することを繰り返します。mとして、例えばm=30とします。もちろん説明変数の数(正確にいうと次元の数)が30未満の場合はmをその数に合わせます。
  3. 成分数ごとに目的変数の実測値と推定値との間で、Root-Mean-Squared Error (RMSE) を計算する
  4. RMSEの値が最小となる成分数を最適成分数とする
    最初の極大値をとる成分数を最適成分数とする方法もあります。
  5. 最適成分数におけるPLSモデルを構築し、標準回帰係数を得る
  6. 最適成分数における目的変数の計算値と実測値との間で、決定係数・RMSE (r2C・ RMSEC)を計算し、同じく最適成分数における目的変数のクロスバリデーション予測値と実測値との間で、決定係数・RMSE (r2CV・RMSECV)を計算する 
    r2Cは目的変数の持つ情報の何割を説明できるモデルかを表します。
    RMSECはモデルのもつ平均的な誤差を表します。
    r2CVは目的変数のもつ情報の何割を新しいデータに対して推定できる可能性があるかを表します。
    RMSECVは新しいデータを推定した場合に平均的な誤差はどれくらいになるかを表します。
    もちろんクロスバリデーションは、完全な外部データを用いた検証方法ではないため、r2CV・RMSECVが適切に『新しいデータ』に対する性能を表現しているわけではありませんが、その指標にはなります。r2CVが大きく、RMSECVが小さいモデルが良いモデルといえます。またr2Cとr2CVとの差が大きかったり、RMSECとRMSECVとの差が大きかったりすると、モデルがオーバーフィットしている危険があります。 
  7. 目的変数の実測値と計算値とのプロット、そして実測値と推定値とのプロットを確認する 
    これにより外れ値がないか確認できます。
  8. [新しいデータの予測をするとき] 説明変数の新しいデータからオートスケーリングした時の説明変数の平均値を引き、標準偏差で割る
  9. [新しいデータの予測をするとき] 上の5.で得られた標準回帰係数により目的変数の推定値を計算する
  10. [新しいデータの予測をするとき] 推定値にオートスケーリングした時の目的変数の標準偏差をかけて平均値を足す(元のスケールに戻す)

予測する際に工夫が必要なのは、最終的に得られた最適成分数における回帰係数は、説明変数・目的変数がオートスケーリングされた後の回帰係数、つまり標準回帰係数であるためです。そこで、新しく予測したい説明変数のデータがあれば、そのデータからオートスケーリングした時の説明変数の平均値を引き、 標準偏差で割ってから回帰係数により目的変数の推定値を計算し、その後その推定値にオートスケーリングした時の目的変数の標準偏差をかけて平均値を足す、つまり元のスケールに戻す必要があります

もしくは、説明変数・目的変数のそれぞれ平均値・標準偏差で標準回帰係数から回帰係数と定数項に変換する必要があります。