見出し画像

[プログラム・コード公開] コピペだけで12の変数選択手法を一気に実行して結果を比較する! (Python言語)

[New] 実業家として有名な堀江貴文さん(ホリエモン)のメルマガ[Vol.359]における副業紹介において、このプログラム・コード販売が、なんと 1番 に紹介され評価していただきました!

こんにちは!大学教員ブロガーのねこしです。http://univprof.com/

仕事や研究において、重要な変数を決めるため、いろいろな変数選択手法を検討する方もいらっしゃいます。重要な変数を選ぶときに、いくつかの変数選択手法を実行して、どんな変数が何回選ばれたかを確認する方法はこちらに書きました。

http://univprof.com/archives/17-02-09-12105097.html

しかし、重要な変数を選択する方法はわかっても、実際に変数選択ができるようになるわけではありません。ネットや本でプログラミングを説明しているものはありますが、データの読み込み方とか結果の出し方とか、他にも調べてやらなくちゃいけないこと、多いんですよね・・・。手間と時間がかかります。

そこで、すぐに12の変数選択手法を一気に実行して結果を比較できるプログラムを作りました。Python言語で実行ができます。

12の変数選択手法はこちらです。

■相関係数による変数選択:すべての変数の間の相関係数を計算し、その絶対値が大きい変数の組の一方を削除する。最初は相関係数の絶対値の閾値を0.9にしているが、変更もできる。

■Variable Importance in Projection (VIP):Partial Least Squares (PLS) を実施した後のVIPという指標を用いて、VIPの値が大きい変数のみを選択する。最初はVIPの値の閾値を1にしているが、変更もできる。

■PLS-β:PLSを実施した後の標準回帰係数の絶対値を用いて、その値が大きい変数を選択する。最初は閾値を標準回帰係数の絶対値の中央値にしているが、変更もできる。

■PLSの繰り返しによる変数選択:不要な変数を一つずつ削除しながら、ダブルクロスバリデーションの結果が良くなるように変数を選択する手法。詳しくはこちら

■Least Absolute Shrinkage and Selection Operator (LASSO):LASSOではモデルに寄与しない変数の標準回帰係数の値が0になりやすい。標準回帰係数の値が0でない変数のみ選択する。

■Elastic Net (EN):ENでもLASSOと同様に標準回帰係数の値が0になりやすい。0でない変数を選択する。

■Random Forest (RF) の変数の重要度に基づく変数選択:RFを実行した後の変数の重要度が大きい変数を選択する。

■Stepwise Ordinary Least Squares (OLS):OLSによるモデル構築を繰り返して、変数を1つずつ削除しながら、クロスバリデーション適した変数の組み合わせを選択する。

■Stepwise Linear Support Vector Regression (LSVR):Stepwise OLSのOLSをLSVRにした手法。

■Stepwise Ridge Regression (RR):Stepwise OLSのOLSをRRにした手法。

■Stepwise LASSO:Stepwise OLSのOLSをLASSOにした手法。

■Stepwise EN:Stepwise OLSのOLSをENにした手法。

データ形式・必要なソフトウェア

以下の記事に示す形式のデータ(回帰分析用のdata.csv)さえ準備すれば、Python言語で12の変数選択手法を一気に実行することが可能です。なお今回はdata_prediction1.csv, data_prediction2.csvは必要ありません。

Python言語のために必要なソフトウェアは以下の記事をご覧ください。

実行結果

実行結果を下に示します。最後に以下のcsvファイルが同じディレクトリ(フォルダ)に保存されます。

■CalculatedY.csv ・・・ それぞれの回帰分析手法(PLS, LASSO, EN, RF, LSVR, RR)におけるモデル構築用データの目的変数の計算値

■PredictedYcv.csv ・・・ それぞれの回帰分析手法(PLS, LASSO, EN, RF, LSVR, RR)におけるモデル構築用データの目的変数のクロスバリデーション予測値

■StatisticsAll.csv ・・・ それぞれの回帰分析手法におけるモデル構築用データのr^2・RMSE、クロスバリデーション後のr^2cv・RMSEcvの値

■SelectedVariable.csv ・・・ 12の変数選択手法で選択された変数と、変数ごとの選択された回数

■ScoreAll.csv ・・・ 以下のような各変数選択手法における変数ごとのスコアの値
・PLSの標準回帰係数の絶対値
・VIPの値
・LASSOの標準回帰係数の絶対値
・ENの標準回帰係数の絶対値
・RFにおける変数ごとの重要度
・Stepwise OLSにおける変数のランキング
・Stepwise LSVRにおける変数のランキング
・Stepwise RRにおける変数のランキング
・Stepwise LASSOにおける変数のランキング
・Stepwise ENにおける変数のランキング

このプログラムからスタートしてさらにプログラミングを進めたいと考えている方にもぜひ利用していただければと思います。

プログラム公開

ここまでお読みいただきありがとうございます。

Python言語のプログラムは有料コンテンツとします。ただこれにより、こちらに記載した複数の変数選択手法をすぐに実行できます。

http://univprof.com/archives/17-02-09-12105097.html

こちらからプログラムのzipファイル自体はダウンロードできます。

http://univprofblog.html.xdomain.jp/code/varselall_analysis_all_e_python_pass.zip

購入していただくと解凍のためのパスワードがありますのでそちらをご利用ください。

またこちらのzipファイルに必要なスクリプトと関数があります。パスワードはかけていません。購入後に使い方の説明があります。

http://univprofblog.html.xdomain.jp/code/supportingfunctions.zip

続きをみるには

残り 404字

¥ 9,800

この記事が気に入ったらサポートをしてみませんか?