SIGNATE マイナビ × SIGNATE Student Cup 2019: 賃貸物件の家賃予測
オプトレコメンドエンジン作成と並行してトライしていたマイナビ × SIGNATE Student Cup 2019: 賃貸物件の家賃予測の結果、家賃予測はこれまで何度かトライしたことがあるので上達度合いを腕試し。
東京23区の賃貸物件の家賃を予測する内容ですが、土地が高い、駅に近い、高層階、近所にいろいろあり便利等が家賃が高いと思われますが果たして結果はいかに。
住所があるのでジオコードにかけて緯度経度情報を取得して、メッシュ上に物件を落とし込みました。駅からの最寄り距離は元データに徒歩x分として与えられていたのでそれをそのまま使用しました。さらに外部情報として地価を同じくメッシュに落とし込んで特徴量の一つとして加えました。
元データにある情報、最寄り駅、設備、コンビニ・学校等の周辺情報等を全て展開して特徴量として使用。どの特徴量が効果的かはLightGBMに一任、前もって相関係数等で選別する方法もありますが、最近、私の場合は丸投げが多いです。
ただし、しょっぱなから全ての特徴量を与えるのではなくて効果のありそうなものから順番に加えていきます。中には全然役に立たない(精度が落ちる)特徴量もあるのでそこはそろりそろりです。私の場合はキッチン、放送・通信、室内設備、駐車場の情報はノイズにしかならなかったので最終的に使用しませんでした。
特徴量が多すぎてかえって精度が落ちている可能性もあると思い、kaggleのMachine Learning Explainabilityの講座からPermutation Importanceを使って特徴量を一気に20まで減らしたら精度アップしました。なんでもやってみないと分からない。
Permutation Importanceは特徴量と目的変数との相関を見るものですが、相関係数のように静的なものではなく動的に相関を調べるので使えるのではないかと思った次第です。
さらに今回は、kerasを使って予測をしてアンサンブルにも挑戦。AIをやるうえで避けて通れないニューラルネット。回帰問題にはほとんど使われないようですが回帰問題のモデルは構造が簡単なのでトライ。ただし、とっても手間がかかった。
ニューラルネットに手間がかかる理由:
- 欠損値を処理が必要 → 欠損値を補完するのは大変。
- 標準化等を行う必要 → 特徴量間の数の大きさの差を小さくする必要あるため。
- 実行するまでに決めるパラメータが多い → モデルの自由度が高いため。裏を返すといろんなことができると言うことですが、ニューラルネットの世界を理解した上でのお話。私にはまだ無理。。
今回、精度はLightGBMまではいきませんでしたがそこそこ出ました。ただ、生産性が良くない。欠損値処理に時間がかからないのであれば、LightGBMのアンサンブルの相手としてはあるかなと言う感覚。理由は二つの予測手法が異なるため。結果としてはアンサンブルでも精度アップできた。
結果:103位/1161人中
あと3人抜けばメダル獲得だった。残念!
暫定評価が17000台で最終評価が15000台でポイントが2000良くなっているのでモデルとしては良いモデルだったと言うことですかね。
今回もいろいろ発見がありました。
sig_mynavi reg 202206,sig_mynavi dnn2 202206,sig_mynavi アンサンブル,EDA sig mynavi 2