機械学習

念願のスコア0.1台に!【MLC第8回目】LassoとRidge

こんにちは!チズチズです~

今日はまた戻って線形回帰です。

Kaggleの「House Prices」です。

今までの振り返り

  • 重回帰や~ …0.84342
  • 単回帰や~ …0.28783
  • 多項式や~ …0.28960
  • 外れ値除去 …0.30250

スコアめっちゃ悪いです。

Kernelに情報収集…

リッジ回帰とラッソ回帰を使ってる人がいました。

それらの回帰で実装したことは1度や2度のみなので、復習がてらにやってみようと思いました!

まずは…

このラッソ回帰やリッジ回帰は正規化(平均0、分散1)のデータのほうが良いらしいので、前処理と同じようにやっていきます。

ライブラリを読み込み… グラフの設定等…

データを読み込んだら説明変数を取り出します。

目的変数をlogで表したのと元のやつでグラフにしてみます。(これからはlogを多用

明らかにlogで表したほうが綺麗なグラフになってますよね!

これで基本的な前処理は完璧です。

Pandasを使えば欠損値なんてお茶の子さいさいです。(多分

初めの方でall…にテストデータも入れていたので、ここで分割させます。

一緒に入れて前処理させれば処理は2分の1ですからね!

Lasso or Ridge

交差検証で精度を見て、パラメータをチューニングさせる関数を書いておきます。

検証方法にも色々ありますが、今回はこれを使います。(覚えてたらまた色んな検証してみる

Ridge回帰のパラメータの調整にはα-モデルを使った正則化パラメータを使います。

要は、この中で一番低いものがパラメータとして最適ってことです。

αが大きくなると、正則化が強すぎてデータの複雑さに対応できません。

反対に、小さくなると過密になってしまします。

このときはα=10あたりがちょうどいいです。

Ridge回帰のときは、約0.127になります。

Lasso回帰でも

素晴らしい!!

Lasso回帰のほうがRidge回帰よりも優れた性能です。(今回は

これからはLasso回帰でモデルを実装します。

Lasso回帰でモデルを実装

Lasso回帰では不必要なデータは削除します!

これは、「110個の変数を取って178個の変数を削除した。」ということです。

このグラフから最も重要な変数として考えられるのは、「GrLivArea」です。

誤差可視化

結構良いんじゃないですか?

XGBoost

線形回帰モデルにXGBoostモデルを追加して、スコアの改善がみられるでしょうか。

平均が段々0に近づいています。テストデータは0.13あたりでしょうか。

XGBを使ってチューニング

きれいにほぼ直線を描いています。

結果発表

今回のスコアは…

0.12086 !!!

1037/4743

初めてスコア0.1台に!

Lasso回帰素晴らしい~

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です