どうしても不動産価格査定をRubyからRを使ってやりたかった

エンジニアの濱田です。イタンジでは、AIによる不動産価格査定サービスVALUEのように、不動産価格査定に力を入れています。今まで複数の方法を試してきた中で、今回はRubyからRを使って不動産価格査定を行う方法をご紹介します。

事前準備

ruby環境

R環境

価格査定用のデータ(ご自身でご用意ください。)

rubyからRを使う準備

rrxのインストール

こちらのライブラリが、いい感じに、rubyからRを使えるようにしてくれます。

インストール方法は、上記URLからダウンロード後

解答したフォルダ内の、readmeに記載されています。

rrxの使い方

rrxの使い方はとてもシンプルです。

src_data = <<-EOS
#Rのコードを書く
EOS
#rを実行
do_r = Rrx.rexec(ERB.new(src_data).result(binding))
#実行結果を取得
coefficients = do_r["回帰"]

 

今回の目的

今回は、Rを使って重回帰分析を行い、不動産価格査定を行います。 処理の流れは下記になります。 1. CSVを読み込み(R) 2. CSVカラム名を指定(R) 3. 回帰分析を実行(R) 4. 各変数の係数を取得(Ruby

サンプルコードがこちら。

今回は、階数、バルコニーの抜き、築年数から、賃料を査定してみます。

# Rのコードを記述
src_data = <<-EOS
        dtf <- read.csv("物件データ.csv", header = T, sep =",")
        colnames(dtf) <- c(
         "floor",
         "balcony_type",
         "completion",
         "rent",
        )
        res <- lm(formula = rent ~ floor + balcony_type + completion, data = dtf)
        robj(res, "回帰")
        res2 <- summary(res)
        fx <- res2$fstatistic
        res2[["f_p.value"]] <- 1 - pf(fx["value"], fx["numdf"], fx["dendf"])
        robj(res2, "回帰要約")
EOS
# Rのコードを実行
do_r = Rrx.rexec(ERB.new(src_data).result(binding)) 

# 各情報を取得
coefficients = do_r["回帰"]

equasion_data = {
  constant: coefficients['coefficients'][0],
  floor: coefficients['coefficients'][1],
  balcony_type: coefficients['coefficients'][2],
  completion: coefficients['coefficients'][3],
}

運用方法

かつてイタンジでは、rrxを使った価格査定を運用していました。 その際は、rrxを使って各変数の係数を取得し、その各係数をDBに保存。 査定を行う際には、DBから係数を呼び出して、都度計算するという運用でした。

終わりに

昨今流行っている不動産価格査定ですが deep learing以外にも様々な手法があります。

ヘドニックアプローチや、重回帰分析であればRで実装でき、 deep learningと異なり、扱いも楽です。

とはいえ、Rだけでは、データの扱いや、システム連動の部分で 使いづらいことがあると思います。

そのときに、このrrxは非常に便利なのではないでしょうか。