2016-8-2_17-58-17_No-00

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

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

[New] PCAとPLSとを組み合わせた半教師あり学習のプログラムを簡単に入手できるようになりました!

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

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

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

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

PCAとPLSとを組み合わせた半教師あり学習(半教師付き学習)

こちらに主成分分析 (Principal Component Analysis, PCA) と部分的最小二乗法 (Partial Least Squares, PLS) とを組み合わせた半教師あり学習(半教師付き学習)による回帰分析について書きました。

主成分分析(PCA)とPLSとを組み合わせよう!~半教師あり学習 (半教師付き学習) で回帰分析~ : 大学教授のブログ

半教師あり学習のメリットはこちらをご覧ください。

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

PCAとPLSとを組み合わせた半教師あり学習は以下の手順で行われます。

  1. PCAにおける累積寄与率のしきい値を決める
    PCAで使用する主成分の数は、累積寄与率がこの値を超える最初の成分数とします。たとえば、しきい値を95%とすることで、5%をノイズとみなして除去することができます。
  2. 目的変数の値のあるデータセットと目的変数の値のないデータセットとを結合する (縦のサンプル方向につなげる)
  3. 結合したデータの説明変数のオートスケーリングをする
    オートスケーリングとは各変数から平均値を引いて平均を0にするセンタリングと、各変数を標準偏差で割って標準偏差を1にするスケーリングを両方行うことです。スケーリングは任意ですが、センタリングは必ず行いましょう。
  4. オートスケーリング後のデータに対してPCAを実行して主成分スコアとローディングを得る
  5. 1. のしきい値から、使用する主成分数を決める
  6. 目的変数の値のあるサンプルのみ、主成分スコアを取り出す
  7. 取り出された主成分スコアと目的変数とをオートスケーリングする
    スケーリングは任意ですが、センタリングは必須です。
  8. 成分数を1, 2, …, m として、それぞれにおいてクロスバリデーションにより目的変数の推定値を得る
    mは使用した主成分数です。クロスバリデーションとして、5-foldクロスバリデーションや2-foldクロスバリデーションを用いましょう。
  9. 成分数ごとに目的変数の実測値と推定値との間で、Root-Mean-Squared Error (RMSE) を計算する
  10. RMSEの値が最小となる成分数を最適成分数とする
    最初の極大値をとる成分数を最適成分数とする方法もあります。
  11. 最適成分数におけるPLSモデルを構築し、標準回帰係数を得る
  12. 最適成分数における目的変数の計算値と実測値との間で、決定係数・RMSE (r2C・ RMSEC)を計算し、同じく最適成分数における目的変数のクロスバリデーション予測値と実測値との間で、決定係数・RMSE (r2CV・RMSECV)を計算する
    r2Cは目的変数の持つ情報の何割を説明できるモデルかを表します。
    RMSECはモデルのもつ平均的な誤差を表します。
    r2CVは目的変数のもつ情報の何割を新しいデータに対して推定できる可能性があるかを表します。
    RMSECVは新しいデータを推定した場合に平均的な誤差はどれくらいになるかを表します。
    もちろんクロスバリデーションは、完全な外部データを用いた検証方法ではないため、r2CV・RMSECVが適切に『新しいデータ』に対する性能を表現しているわけではありませんが、その指標にはなります。r2CVが大きく、RMSECVが小さいモデルが良いモデルといえます。またr2Cとr2CVとの差が大きかったり、RMSECとRMSECVとの差が大きかったりすると、モデルがオーバーフィットしている危険があります。
  13. 目的変数の実測値と計算値とのプロット、そして実測値と推定値とのプロットを確認する
    これにより外れ値がないか確認できます。
  14. [新しいデータの予測をするとき] 説明変数の新しいデータから1. オートスケーリングした時の説明変数の平均値を引き、標準偏差で割る
  15. [新しいデータの予測をするとき] 上の4.で得られたローディングを用いて使用する主成分数までの主成分スコアを計算する
  16. [新しいデータの予測をするとき] 主成分スコアの新しいデータから7.で オートスケーリングした時の主成分の平均値を引き、標準偏差で割る
  17. [新しいデータの予測をするとき] 上の11.で得られた標準回帰係数により目的変数の推定値を計算する
  18. [新しいデータの予測をするとき] 推定値に7.でオートスケーリングした時の目的変数の標準偏差をかけて平均値を足す(元のスケールに戻す)

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

ご案内。

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

twitterでも発信中。

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


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

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