はじめに
本記事では、第2回 国土交通省 地理空間情報データチャレンジに参加し、
最終的に銀メダルを獲得するまでに実施した取り組みを、再現性を意識して整理したいと思います。
▼参加したコンペ
コンペ概要(前提)
▼タスク
・不動産売買価格の予測
▼データ特性
・学習データは2019年〜2022年(各1月・7月)
・テストデータは2023年(1月・7月)
・中古マンション/中古戸建てが混在
・位置情報(緯度経度)あり
・国土数値情報の使用必須
▼評価指標
・MAPE(平均絶対パーセント誤差)
スコア改善の全体戦略
最終的に効いた戦略は、以下の 3 本柱 です。
① 価格形成ロジックを前提にした特徴量設計
② 物件種別(マンション / 戸建て)ごとのモデル分離
③ Public LB に過適合しないための検証設計
① 不動産ドメインに基づく特徴量設計
価格の本質は「立地 × 土地面積」
勉強会等で一貫して示されていた重要メッセージは以下でした。
・不動産価格は「理論価格」ではなく 周辺相場に強く依存
・特に戸建ては「土地価格 + 建物価値(減価)」 が価格の大部分を占める
この前提から、地価系特徴量を最上位で扱う設計に切り替えました。
実際に作成した地価系特徴量
最寄り地価(公示地価 / 基準地価)
半径内平均地価(KNNで算出)→ 最もスコアに寄与した特徴量
地価 × 土地面積
地価の対数変換
物件価格 ÷ 近傍地価(比率系)
👉 単体利用ではなく「派生させて使う」ことが重要でした。
② 物件種別ごとの価格形成の違いを分離
勉強会でも解説されていたのですが、
マンションと戸建ての価格構造は別物でした。
最初は一緒くたにしてモデルを作成していたのですが、早期にスコアが頭打ちになりました。
そこで、
・マンション用モデル
・戸建て用モデル
を 完全に分離 して学習。
これが後のスコア改善に大きく貢献しました。
③ OOF を前提にした Target Encoding
価格形成に意味がありそうなカテゴリ変数(郵便番号、最寄り駅名など)には、OOF(Out-Of-Fold)Target Encodingを実行し、数値データに変換し利用しました。
ポイント
・リークを絶対に起こさない
・カテゴリの意味を理解した上で適用
・「ユニーク数が多いから使う」ではなく、
価格形成に意味があるか を基準に採用
〜記載途中です〜