Generated by Bing Image Creator: Photo of old times, beautiful mountains scenery, blue sky and white clouds, cheerful flowers
の続きです。前回は、 glmnet パッケージで income の分類をするための前準備でした。今回は、実際に分類してみます。
まずは、LASSO Regression です。alpha = 1 にします。今回は、 >50K か <=50K かという 2値の分類なので、family = "binomial" とします。parallel = TRUE で並列処理をしています。
fit_lasso を plot() 関数で処理してみます。
モデルの係数をみます。
Japanの係数が 0.63 なので、他の変数が全て同じならば、native country が日本の人のほうが、そうでない人よりも >50K の確率は高いです。
predict() 関数でテスト用データの予測をします。
実際のデータとどれだけあっているかみてみましょう。
正解率は、(6903 + 1417) / (6903 + 924 + 525 + 1417) = 85.2% でした。
けっこういい正解率なのではないでしょうか?
仮に トレーニング用の >50K の比率で、デタラメにテスト用の予想をしたらどのくらいでしょうか?
デタラメ予想だと、63% の正解率なので、LASSO Regression で予測したほうがいいですね。
同じように、alpha = 0 だとRidge Regression になります。
plot() 関数で fit_ridge のグラフを描いてみます。
係数は Japanのところだけみてみましょう。
0.55 とプラスの係数でした。
テスト用のデータで予測してみましょう。
Ridge Regression での正解率は、84.4% でした。
Elastic-Net Regression は alpha が 0 ~ 1 のあいだの値です。どのくらいの alpha の水準がいいのかは、いろいろな alpha 水準を試してみないとわかりません。
for loop でいろいろと試してみます。
上の for loop のコードですが、計算が終わるのに 10分以上かかりました。
mse_box の中身をグラフにしてみてみます。
mse_box の値が一番小さなところが最適な alpha の水準です。
この alpha の水準で ELastic-Net Regression をします。
fit_elnet を plot() でグラフにしてみます。
係数の確認は割愛して、予測とその結果をみてみます。
正解率は、85.2% でした。LASSO よりも少しだけ良い結果でした。
3つの正解率をまとめて表示してみます。
今回は以上です。
次回は
です。
初めから読むには、
です。