はじめに
前回の記事で書いた通りPython(Scikit-Learn)を活用し、Kaggleの「House Prices: Advanced Regression Techniques」に挑戦してきました。
GWの1週間で上位10%に入ることを目標としていましたのでその結果を報告したいと思います。
※ソースコードはkaggleに、ユーザ名「yuta0001 」、kernel「HousePrice_01」として公開予定です。
結果発表
予測精度:RMSE 0.13509
順位:1859位/5249人中(2018/05/05)
上位35%
残念ながら目標とした上位10%にまだまだ届きませんでした。
継続して向上させたいと思うので現時点で行った内容と今後の課題を記していきたいと思います。
House Priceチャレンジで行った内容
-
データの確認
Trainデータは何があるのか、使えそうな変数は何かを確認するために
データ型、欠損数、統計情報、目的変数との相関係数、目的変数の分布、外れ値を確認しています。 -
データの前処理
データの確認 から分かった外れ値を除を除去し、目的変数との相関の高い説明変数を使用するようにします。
カテゴリ変数を扱うためにLabelEncoderを用いて数値化しています。
住宅価格への影響度が大きいと思われる部屋の合計面積TotalRFを追加しています。
欠損率の高い説明変数を除外し、欠損値を中央値で埋めています。 -
モデルの作成
ランダムフォレストのモデルとXGBoostのモデルを作成しました。
結果的にXGBoostの精度の方が高かったです。
今後の課題
カテゴリ変数の選別
欠損値の補完を現状の中央値一括補完から説明変数ごとの補完方法へ変更
XGBoostのハイパーパラメータの調整
欠損値の対処法の改善
目的変数を対数変換しモデル作成を行なった場合に精度が劣化したので、原因を考察。
終わりに
ご助言、アドバイス、ご指摘、ご意見、ご要望などコメントいただけますと大変ありがたいです。