2016-06-04_15h09_27

データ解析の手順』 における「3. 外れ値処理・変数処理・ノイズ処理を行う」についてです。なお実行するためのプログラムについてはこちらをご覧ください。

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

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

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

MATLAB: https://spike.cc/shop/univprof/products/zGVgWHU9

R: https://spike.cc/shop/univprof/products/36wqwTE2

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

Least Absolute Shrinkage and Selection Operator (LASSO)

Least Absolute Shrinkage and Selection Operator (LASSO)により変数選択をしながら線形の回帰モデルを構築することができます。つまりLASSOを行うことでいくつかの説明変数に対応する回帰係数が0のモデルが得られるわけです。

LASSOは下の手順で行われます。

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

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

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