エンジニアの濱田です。イタンジでは、AIによる不動産価格査定サービスVALUEのように、不動産価格査定に力を入れています。今まで複数の方法を試してきた中で、今回はRubyからRを使って不動産価格査定を行う方法をご紹介します。
事前準備
ruby環境
R環境
価格査定用のデータ(ご自身でご用意ください。)
rubyからRを使う準備
こちらのライブラリが、いい感じに、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は非常に便利なのではないでしょうか。