Yamamotoの日記

Yale SOM MBA、金融工学、技術関係の記事を書きたいです

機械学習を使ってお買い得中古物件を探す ~分析編~

前回投稿からはや半年。GRE受験もなんとか終わり、少し時間ができました。

前回はこちら maxonblog.hatenablog.com

今回も、こちらの記事を参考に分析していきます。この記事のようにすぱっと理解できる示唆を出すのは、やはりなかなか難しいですねー。 www.analyze-world.com

今回は、Rを使って分析していきます。昔から使っていることもあり、PythonよりもRの方が統計分析に向いていると思います。僕が大学院で使ってた約10年前から、最近はtidyverseやらggplot2の出現によって書き方が全然変わってしまいましたが、思想・考え方はあまり変わらないように思います。データの形式や設定を意識せず、やりたい分析・処理をやらせてくれるという点で、すごく優れているように感じます。JavaPythonを比べてもそんな感じしますが、PythonとRを比べるとそんな感じがします。

生データの確認

さて、まずは、価格に一番効いてきそうなもの。。。部屋の大きさ(m2)と価格の関係性を確認します。

f:id:maxonblog:20210621213714p:plain
価格 vs 広さ
うーん。広ければ広いほど値段が高くなる。。。?(そらそうだ) 関係性がいまいちピンと来ませんね。広さが大きくなるにつれて価格の分散も大きくなっていくようですので、いわゆる分散不均一なデータということもわかります。

あと、築年数と価格の散布図も見てみます。

f:id:maxonblog:20210621215654p:plain
価格 vs 築年数
うーん。。。なんとも。。。築年数が増える(=古くなる)と、少し価格が安くなるように見える。。。かな?

グルーピングして回帰分析

最近マンションを買った友人から、「地域(区の下:品川区東五反田の"東五反田"部分)によって価格の分布が全然違う」とのコメントをいただいたので、地域ごとにグルーピングして"価格 ~ 広さ + 築年数"で重回帰分析をしてみます。 まずは多重共線性のチェックです。価格と広さに相関が強ければ、多重共線性によってうまいこと線形回帰ができないですからね!

f:id:maxonblog:20210621220304p:plain
広さ vs 築年数
お。いい感じです。

では、以下Rコードを使って、ばばばっと重回帰分析を行います(手抜き)。

result <- temp %>%
    group_nest(location) %>%
    mutate(fit = map(data, ~lm(price ~ size + age, data = .)),
           summary = map(fit, summary),
           DataNum = map_dbl(data, nrow),
           Alpha = map_dbl(fit, ~.$coefficients[1]),
           Beta_1 = map_dbl(fit, ~.$coefficients[2]),
           Beta_2 = map_dbl(fit, ~.$coefficients[3]),
           R2 = map_dbl(summary, ~.$r.squared))

これで、どれくらい説明できたのでしょうか?

f:id:maxonblog:20210621220837p:plain
R2の分布

おおお。結構説明できています。 今度は、データ数が多い順に地域を並べてみます。面倒なのでExcel職人の画像貼り付けで許してください。Beta_1は広さに対する係数、Beta_2は築年数に対する係数です。

f:id:maxonblog:20210621222513p:plain
データ数多い順20地域
きれいな分析結果になりましたねー。件数が多いと説明力も高いです。 南青山とか、1年で341万円も値下がりするんですね。。。恐ろしい。逆に新宿(新宿区新宿)は1年で12万円しか値下がりしないので、長く住むにはいいかもしれませんね(住むところなのか。。。?)。

結論と今後の課題

このデータを使って、地域・広さ・築年数がわかれば、6割程度の精度で価格を予測することができることがわかりました。参考にした記事みたいに、お得物件を提示できればよかったのですが、力付きました。。。 ということで、残課題は以下の通りです。MBA受験が一段落したら続きを書く予定なので、もしこのブログを読んでくれている人がいたら、僕のMBA受験がうまくいくことを祈っていてください。

残課題

  • 外れ値を除去する。10LDKとか変な値を持つデータも入っており、分析に悪影響を与えていそうなので削除しておきたいところ。
  • お得物件を探す。現状の情報でも、不当に安い物件は見つけられそうなので
  • サーバーで定期的にデータを取得し、時系列のデータを作成。割安な物件が出てきたらアラートを出す。
  • 地域差を説明する変数を探す。何らかの要素によって各係数の関係性が規定されていると思われるので、この変数を探す。人口とか港区からの距離とかが考えられるけど、区役所のサイトを探したりとか、地図データを作ったりととても大変。

ほな。