ブログを書くのも随分久しぶり。
まあ、はっきり言ってサボっていたわけですが、何してサボっていたかというと、
機械学習のトレーニング。
せっかくだから汎用性のある土地価格査定モデルが作れないかやってみた。
何はともあれベースになるデータがなければ話にならない。
不動産取引データは国土交通省の不動産取引価格情報APIから集めてくることができます。
2010年第1四半期から2020年第1四半期までの土地の取引を取り出すコードを書いてみました。
データを取得したら後は簡単.....
ではなくて、ここからが大変。
データをよく見ると、欠損値がある程度ならまだかわいい方で、数字で書かれているものも含めて、データの種類は全部object。
データは全部整数か浮動小数にしてやる必要があるので、あれこれデータをいじくる。結局のところ分析に使えそうなデータは約1万2千個になってしまった。
何とか分析に使えそうな形になったので、モデルを作ってみます。
ランダムフォレスト回帰、勾配ブースティング回帰、線形回帰で交差検証すると、スコアは
RandomForestRegressor score:0.7384
GradientBoostingRegressor score:0.7065
LinearRegression score:-1833086029586.7080
ランダムフォレスト回帰のスコアがが使えそうだ。
本当ならばここからグリッドサーチでパラメータチューニングをするところなんだけど、いろいろ試したけどデフォルトのパラメータと大差がない。
面倒なのでデフォルトのままでやることにした。
検証用のデータでモデルを試してみる。
RandomForestRegression Validation Score:0.7520
おっと、学習スコアより良くなった。たぶんデータを訓練用とテスト用にランダムに分割した際の偶然なんだろうけど、とにかく過学習はあまり気にしなくていいようだ。
このモデルで、うちの近所にある公示地「加賀5-1」というやつのデータで価格を求めると、
Kaga5-1 Price: [31100.] 円
2020年公示価格が、59500円だから、全然ダメじゃん。
それもそのはず。
与えられたデータの特徴量ですが、
'市名', '町名', '面積', '取引の時期', 'どんな地域か(住宅地、商業地など)', '土地の形', '取引の目的', '向き', '用途地域', '建ぺい率', '容積率', '間口', '道路の種類', '道路幅'
たったこれだけ。駅や都心までの距離とかの情報がありません。
これだけのデータでピッタリ価格なんて求められるはずがない。
横軸に予想価格、縦軸に本当の取引価格をとると、ピッタリの価格ならば右上がり45度の直線になる。グラフを見るとなんとなく右上がり45度かそれに近い近似線が引けそうな気もするが、見てのとおり分散が大きい。
まあ現実の不動産取引なんて、こんなもんですよ。
でもこんなどうしようもないデータからでさえ70%台のスコアが出るんだから、機械学習でデータを分析するのは、不動産の鑑定評価にも役に立ちそう。
実はウチの事務所ではIT評価、もうやっています。
ここまで結構長かった。どうりでブログ書いている場合じゃないわけだ。
Comments