5th Place Solution
はじめに
今回probspaceでは初めてのコンペの参加でしたが、CV、LBがマッチしていて楽しく取り組めるコンペでした。
5位ならsolusion公開しても格好がつくかなと思い、初めて書きます。至らない点も多いと思いますが少しでも参考にしていただけると嬉しいです
foldについて
まずはfoldの切り方についてです。
今回は単純にn_splits=5のKFoldと取引時点をgroupsにしたGroupKFoldを使いました。
train、testが時系列で別れていたのと、取引時期において不動産の取引価格は変動するというドメインからGroupKFoldも試しました。
KFoldでもCVとLBはちゃんと相関していたので問題なかったと思いますがGroupKFoldにするとLBのスコアはあまり変わらないけれどCVは悪化していたので、KFoldのほうがもしかしたらCVを過大評価しているのかもしれないと考えました。
ただ、LBのスコアはKFoldのほうがよかったので最終的にはどちらも使って(特徴量作成、モデリングともに)、最終的にアンサンブルする方針にしました。
モデルについて
モデルにはLightGBM、catboost、xgboostを使いました。
各モデルともにKFoldとGroupKFoldのものをつくったので最終的には6モデルを使ってstackingしました。
特徴量について
- カテゴリカル特徴量のエンコードはターゲットエンコーディングを使いました
- ターゲットエンコーディングを用いたので特徴量もKFoldとGroupKFold用に分けました
- baseline作成後に効いたのは、市区町村名、地区名それぞれでgroupbyして、建ぺい率、容積率、面積の集計特徴量でした
- 地区ごとの建ぺい率の平均を加えたときに手応えを感じました
- 住宅地の密集さなどでその地区の特徴を入れれたかなという気持ちです
- 面積×建ぺい率や面積×容積率、また接道義務などのドメインも特徴量として加えましたが、これらは効かなかったです(使い方が悪かったのかも)
最後に
うまく組み込めたドメインもあれば、うまく組み込めなかったドメインもありましたが、総合的には与えた特徴量に関してちゃんとスコアが返ってくる楽しいコンペでした。
個人的にもcatboostを初めて使ってみたり、ちゃんとstackingまで取り組めたので実りあるコンペになりました。
あと、不動産についていろいろ調べてたら広告が不動産だらけになりました。