www.crosshyou.info

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

UCI の Adult データの分析3 - R の glmnet パッケージを使って LASSO, Ridge, Elastic-Net Regression で分類するための前準備

Generated by Bing Image Creator: Long wide view of green grass field. Blue sky and a few white clouds. red flower, yellow flower and blue flower are shining. Photo

 

www.crosshyou.info

の続きです。前回と前々回で income と他の変数との関係をグラフにして確認しました。それでは本題の分類問題に挑戦してみましょう。これらの変数を使って、 Income の <=50K と >50K を判別する、という問題です。

前々回の age と income のグラフから、age と income は線形の関係ではなさそう(年少者と老年者には >50K の人はいない)でしたので、age の 2乗項を追加しておきます。

glmnet パッケージの読み込みをします。

glmnet はマトリックス型のオブジェクトが必要なので、df からマトリックス型オブジェクトを生成します。

glmnet パッケージにある makeX() 関数を使うとこのように、文字列の変数を自動的にダミー変数に変換してくれます。ダミートラップを避けるために、それぞれのダミー変数から一番初めの変数を削除します。

ダミー変数は、0 か 1 の値ですが、age や fnlwgt などの数値データは数値の幅に違いがあるので、最小値が 0、最大値が 1 になるように標準化します。

mtx とモデルの係数を推計するためのトレーニング用のデータと、そのモデルの性能をテストするためのテスト用のデータにわけます。

glmnet で モデルの係数を推計するのは、データが大量だと時間がかかるので、並列処理の設定をしておきます。

doParallel パッケージで、registerDoParallel(detectCores()) のコードで並列処理の準備ができるようです。

ここまでで、glmnet で分類問題に挑む前準備が完了です。

今回は以上です。

次回は

www.crosshyou.info

です。

 

初めから読むには、

www.crosshyou.info

です。