【AI×Python×物件探し②】割安な物件を見つけ出す:データ分析で適正家賃を予測してみた

前回まで。


前回はスクレイピングで物件情報をCSVにするまでの処理について解説しました。

今回は割安な物件を見つけるためにデータを分析します。


回帰、機械学習モデルを使って分析する

今回の分析の目的は「スペックの割に安い物件を見つける」ことです。
同じような築年数、間取り、仕事場までの距離など同じようなスペックの中でもなるべく安い物件を見つけたい。
そのために家賃を予測するモデルを作成します。
参考にした書籍は以下。

まずは回帰モデルを作ってみる

データ量が数百程度であり家賃に何が影響するのかも知りたかったので、まずは回帰分析を行います。
モデルは以下をもとに作成する。
  • リッジ回帰を使用
  • 賃料+管理費を目的変数とする
  • 以下を説明変数とする
    • "専有面積_数値","築年月_年のみ","新橋まで分","洗面所独立","建物構造","間取り"

モデルの改良

より精度の良いモデルにするために変数を増やしたり、特徴量を加工したりします。
ここまでやらなくてもいい気はしますが、楽しくなってついやっちゃった。

以下の処理を行った。
  • 重複しているデータを削除
  • ライフルホームズが公開している地域ごとの平均賃料をモデルに入れる
  • 建物構造、間取りをランク化
    • ワンホットよりも反映してくれるはず
    • "2LDK": 4.0、"3LDK": 6.0みたいな感じ
  • 面積✖︎地域ごとの平均賃料で合成した変数を組み込む
    • 人気の地域ほど広くなると賃料が上がる影響を表現

さらに改良するなら何階かの情報、定期借家かどうかなども組み込むと精度が上がりそうです。

変数同士の相関係数を見てみる

では早速分析を行っていきましょう。
変数同士の相関を見るのは多重共線性を見つけ出すため、事前に変数の重要度を知るためなどの目的があります。

マトリックスにして可視化したのが以下のような感じ。

合成して作成した特徴量がちゃんと仕事をしていますね。
エリア相場はちゃんと家賃に反映されている。
加えて都心から離れるほど家賃は低くなる傾向が見て取れます。
直感とあまり変わらないので安心ですね。

データを学習させモデルを作る

本来はテスト用と学習用にデータを分けてモデルの精度を確かめたり、過学習を防いだりするのですが今回は汎用的なモデルを作るというよりは手持ちのデータの分析がメインなので全て学習用データとしました。

学習させた結果、それぞれの変数の影響度が以下。
  • やはり立地と広さの影響が大きい
  • テラスハウス、一戸建ては安い(安い地域にしかないからだろうね)
  • 駅から遠いと割とマイナスされる
  • 洗面所独立なほど安くなっているのは謎
    • データを見てみると洗面所独立なのに物件情報に反映されていないデータが見受けられたのでその影響かも

このモデルで出てきた数値を見ることでスペックの割に安い物件を可視化することが可能になりました。
次回はデータ件数が増えてきて機械学習も視野に入れられるようになってきたので、機械学習モデルを使用して予測をしていきたいと思います。


コメント