2016-06-12_20h17_53

PLSの成分数・SVMのC・LASSOのγを決めるのにクロスバリデーションを使うことが一般的です。5-foldクロスバリデーションや2-foldクロスバリデーションなどによってr2CVやRMSECVや正解率CVを計算して、r2CVが最大になったりRMSECVが最小になったり正解率CVが最大になったりするパラメータの値を用いるわけです。

で、r2CV・RMSECV・正解率CVを外部データに対する予測性の指標とする人もいますが、これはやってはいけません。具体的には、『r2CVが0.8なので、新しいデータについては8割の精度で予測できる!』とか、『RMSECVが0.5なので、新しいデータも誤差は平均的に0.5くらいで予測できる!』とか、『正解率CVが0.95なので、新しいデータも95%くらいで予測できる!』考える人もいますが・・・気をつけてください!!これ間違ってますよ!!

『え!?Leave-one-outクロスバリデーションじゃなくて、5-foldとか2-foldクロスバリデーション使えばいいんじゃないの??』って人もいます。残念ながら、それでもダメです

どうしてかって?

r2CV・RMSECV・正解率CVがよくなるようなモデルを選んでるんです。そりゃ、データセットに合うようにモデルを選べばそれっぽいモデルは得られます。でも、そのモデルが他のデータセットにあうとは限りません。

極論すれば、r2CVを大きくしたり、RMSECVを小さくしたり、正解率CVを大きくしたりするのなんて簡単なのです。特にデータ数が少ないときなんて超イージーです。簡単な例として、ランダムに変数を選んでr2CVを計算する、ってことを1000000回くらい繰り返せばけっこうr2CVなんて上がりますよ。データ数にもよりますが、数分で終わります。でも、こんな風に得られたモデルなんて意味ありません

重要なことは、あるデータセットが与えられたときに、PLS・SVR・LASSOなどの手法を使うことで、そのデータセットとある程度似ている新たなサンプルを、どれくらいの精度で予測できるか、です。これにつきます

r2CVが大きくなるように、RMSECVが小さくなるように、正解率CVが大きくなるように選んだモデルなんて、与えられたデータセットに特化したモデルになってしまうので、新たなサンプルに対する予測性能なんて見積もれません。

ではどうすればよいかって?

迷わずダブルクロスバリデーション (クロスモデルバリデーション) を使いましょう!

クロスバリデーションを入れ子構造にして2回使うわけです。2-foldクロスバリデーションを例にして説明します。まずデータセットをランダムに2つに分けます。それらをサブデータセットAとサブデータセットとしましょう。サブデータセットAのみ用いて、2-foldクロスバリデーションでモデルのパラメータ (PLSの成分数・SVMのC・LASSOのγなど) を決めます。決められたパラメータの値で構築されたモデルを用いて、サブデータセットBを予測します。次に、サブデータセットBのみ用いて2-foldクロスバリデーションでモデルのパラメータ (PLSの成分数・SVMのC・LASSOのγなど) を決めます。決められたパラメータの値で構築されたモデルを用いて、サブデータセットAを予測します。これによってデータセット中のすべてのサンプルにおいて予測値が得られます。この予測値と実測値との間で、r2・RMSE・正解率を計算します。これらをr2DCV・RMSEDCV・正解率DCVとよびましょう。DCVDouble Cross-Validationのことです。もちろん、r2・正解率よりr2DV・正解率CVのほうが小さくなり、r2DV・正解率CVよりr2DCV・正解率DCVのほうが小さくなります。RMSEよりRMSECVのほうが大きくなり、RMSECVよりRMSEDCVのほうが大きくなります。

これによって、あるデータセットが与えられたときに、PLS・SVR・LASSOなどの手法を使うことで、そのデータセットとある程度似ている新たなサンプルを、どれくらいの精度で予測できるか、評価できるようになります。

ただ、ダブルクロスバリデーションでも、クロスバリデーションのときにランダムにデータを選んでいます。このランダム性によってr2DCV・RMSEDCV・正解率DCVの値が変化します。なので、このダブルクロスバリデーションを複数回繰り返すことで (たとえば100回繰り返すことで)、どれくらいr2DCV・RMSEDCV・正解率DCVにばらつきがあるのかを検討することが重要です。

みなさんも、ダブルクロスバリデーションによって、新しいデータに対する予測性能をちゃんと評価しましょう!

たくさんの回帰分析を一気に行い、ダブルクロスバリデーションで評価するプログラム公開中!

上のように全部の回帰分析を一気に行いダブルクロスバリデーションでモデルの評価を実行するプログラムはこちらにあります。noteでもSPIKEでもAnyPayでも言語が同じであれば同じものです。

MATLAB言語(note): https://note.mu/notes/n4f7fd7cef774

MATLAB言語(SPIKE): https://spike.cc/shop/univprof/products/qu0UGmHi

MATLAB言語(AnyPay): https://anypay.jp/shops/GpeTLMrcxv/rnekMFjwpY

R言語(note): https://note.mu/notes/n58399e0a9471

R言語(SKIPE): https://spike.cc/shop/univprof/products/DoC2V0Nu

R言語(AnyPay): https://anypay.jp/shops/GpeTLMrcxv/6acMz8vR7t

Python言語(note): https://note.mu/univprof/n/n7d9eb3ce2c74 

Python言語(SPIKE): https://spike.cc/shop/univprof/products/ntImmpee

Python言語(AnyPay):

https://anypay.jp/shops/GpeTLMrcxv/FY7MK1JlXg

たくさんのニクラス分類を一気に行い、ダブルクロスバリデーションで評価するプログラム公開中!

こちらは二クラス分類です。全部を一気に行いダブルクロスバリデーションでモデルの評価を実行するプログラムです。noteでもSPIKEでもAnyPayでも言語が同じであれば同じものです。

MATLAB言語(note): https://note.mu/univprof/n/nb146f98d9708

MATLAB言語(SPIKE): https://spike.cc/shop/univprof/products/B76FKWVn

MATLAB言語(AnyPay): https://anypay.jp/shops/GpeTLMrcxv/1aq4DzwYZW

R言語(note): https://note.mu/univprof/n/nc81d5e54b395

R言語(SKIPE): https://spike.cc/shop/univprof/products/hRdMYZIa

R言語(AnyPay):

https://anypay.jp/shops/GpeTLMrcxv/LipDyBuxz2

Python言語(note): https://note.mu/univprof/n/n38855bb9bfa8 

Python言語(SPIKE): https://spike.cc/shop/univprof/products/cfxoGC5n

Python言語(AnyPay): https://anypay.jp/shops/GpeTLMrcxv/hQMWaxelvd

たくさんの多クラス分類を一気に行い、ダブルクロスバリデーションで評価するプログラム公開中!

こちらは多クラス分類です。全部を一気に行いダブルクロスバリデーションでモデルの評価を実行するプログラムです。noteでもSPIKEでもAnyPayでも言語が同じであれば同じものです。

MATLAB言語(note): https://note.mu/univprof/n/n5905c101b808

MATLAB言語(SPIKE): https://spike.cc/shop/univprof/products/JY5smare

MATLAB言語(AnyPay): https://anypay.jp/shops/GpeTLMrcxv/EXhrvH1NE3

R言語(note): https://note.mu/univprof/n/nf28c6196b1b7

R言語(SKIPE): https://spike.cc/shop/univprof/products/PLyY9emf

R言語(AnyPay): https://anypay.jp/shops/GpeTLMrcxv/aNmAFe4NaO

Python言語(note): https://note.mu/univprof/n/n6eb78bc394bb

Python言語(SPIKE): https://spike.cc/shop/univprof/products/Xq5YMtQr

Python言語(AnyPay): https://anypay.jp/shops/GpeTLMrcxv/ptEjp1NL6j

ご案内。

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

twitterでも発信中。