こちらの記事をご覧いただきありがとうございます。
「ご注文はうさぎですか?」も絶対古いよな…?
ちなみに私はごちうさのアニメを全く見たことないです。
SUUMOの物件情報について機械学習モデルを使っていろいろ調べていました。
前回の「うわっ…理想の賃貸、相場高すぎ…?」に続いて、物件の条件を入力すると似たような物件を探してきてくれるアプリを作りました。
アプリ開発についてはまだまだ勉強中なので大したものではありませんが、ぜひ使ってみてください。
※11月28日追記
heroku有料化に伴いherokuからアプリを削除しました。
代わりにAWS EB を利用してデプロイしました。こちらが利用できます。ついでに↓のエラーも(たぶん)改善できました。エラー残ってたらごめんなさい。
※12月15日追記
AWS EBの環境を停止しました。現在は利用できませんので、ご了承ください。
※なにかのミスで、 間取りの条件によってはエラーが出てしまいます… 。「Internal Server Error」の表示が出たらブラウザの戻るボタンを押して戻ってください。
デプロイしてから気が付きました。ちゃんとデバッグして
「ご注文はこちらの物件ですか?」アプリの概要
↓のurlから利用できます。
ご覧いただいてわかると思いますが、精度はたいして良くないです。
あと、一応SUUMOで見れるようにurlを付けておきましたが、スクレイピングをしたのが11月の頭くらいなので、物件の掲載が終了していることがあります。
(体感、掲載終了している方が多い気がします)
仕組み
前回と同じく flask で作って heroku にデプロイしました。
(herokuが11月28日から有料化するので25日にアプリを削除する予定です。可動期間短すぎでは )
これもやはり仕組みは簡単です。
- 物件の条件を入力してもらう。
- →テーブルデータに用意してあるSUUMOの物件1000件すべてと、入力された物件の条件の類似度を計算
- →類似度の高い物件上位3件を表示
類似度の計算は、コサイン類似度を使用しています。
def cos_sim(v1,v2):
dot = np.dot(v1,v2)
norm1 = np.linalg.norm(v1)
norm2 = np.linalg.norm(v2)
sim = dot/(norm1*norm2)
return sim
詳しくはこちらをご覧ください。
レコメンドシステムによくある協調フィルタリングとかは入ってません。
そういうのを期待していた方には申し訳ないです。
(ユーザの行動履歴やパーソナリティのデータを個人で集めるのはなかなか大変な気がします…)
また、こちらも仕組み作りを優先して、cssとかUI設計みたいなことはしていません。かなり簡素です。
本来レコメンドシステムを作るならそういうユーザの使い勝手の概念はとても重要なんですけどね。
(使いづらくてユーザが離れてしまうと結局意味ないから)
改良案
前回改良案に挙げていた
- 「専有面積」「最寄駅からの距離」とかをわかりやすい値に変える or 不要にする
は改善してみました。
「専有面積」は代わりに「間取り」を利用するように変更、「最寄駅からの距離」は「駅徒歩」の情報から分速100mで計算しています。
これらは今後勉強してうまく作れるようにしたいです。
- UIを考慮した設計(cssとか)
- 未入力項を許す
- プルダウンの連動(今回はないけど路線と駅を連動するとか)
UIの設計は専門の勉強が必要なので、ひとまずBootstrapを使えるようにすると思います。
終わり。
いかがでしたでしょうか。
前回改善案に条件に似たような物件をおススメしてくれる機能を取り上げたので、急造ですが作ってみました。
おかげでデバッグが不十分なんですけども…。これに反省して次の開発はちゃんとデバッグします。デバッグの勉強します。
これをちょっと試してから、レコメンドシステムにかなり興味がわいてきたので勉強しています。
実際に自分で作るには相当な勉強が必要なうえ、データ収集がなかなか困難な気がしていますが、何か作れそうなら作ってみます。
その前にherokuが使えなくなるからAWSに移植します。
多分AWSはこのくらいの規模ならお金かからないと思うんですが…
まあお金かかるにしてもいい勉強になると思うのでやってみます。
他のSUUMO記事
まとめ記事書いたのでぜひご覧ください。