機械学習で住みたい街を探してみる

Courseraで”IBM Data Science Professional Certificate”というコースを受講した。
学んだ内容で身近な課題を解決しようと、機械学習を使って住みたい街を探せないか考えてみた。

 

 

Introduction


最近部屋が手狭になってきたこともあり、引っ越しを考えている。しかい、どこに引っ越すべきか今ひとつ決まらない。便利さ、公園、好きな街の近くなど、考えることは色々ある。そこで思いついたのが、都内の駅を付近の環境をもとにしてクラスタリング(分類)すれば、ある程度引っ越し先候補を絞り込めるのではないか、ということ。
今住んでいる場所も気に入っているので、同じクラスター内の別の駅から引っ越し先を選ぶ、ということが出来ればいいなということである。

 

Data


駅の位置情報


引っ越し候補は東京メトロの駅から選ぶことにした。幸いにも東京メトロ各駅の緯度経度データを提供しているサイトを見つけたので、こちらを利用させてもらう。

東京メトロ - 座標データ - Google Maps JavaScript API入門

 

駅周辺環境の情報


駅周辺の店舗や施設の情報は、Foursquare APIを利用する。 Foursquare には ExploreというAPIがあり、このAPIは緯度経度を入力すると周囲の施設の情報を返してくれる。ちなみに、FoursquareAPIは無料でも99,500 Regular Calls / Day使えるので、今回の分析では問題なく使えそうで一安心。

Foursquare Developer

 

Methodology


以下の分析をJupyter Notebookを使用して実施する。今回はIBM CloudのWatson Studio上でJupyter Notebookを使用した。(Cloud上で分析するので自分のマシンのスペックを気にしないでOK、実行結果のNotebookをGitHubへ公開することも簡単)

  1. JSON形式で提供されている駅の緯度経度データをDataFrameとして取り込む。
  2. 緯度経度データを入力として、Foursquare Explore APIから駅周辺の施設のデータを取得する。
  3. 各駅毎にどのような施設(コンビニやイタリアンレストランなどの施設カテゴリー)がどれくらいの頻度で存在するかを集計する。
  4. これらの頻度をもとに、クラスタリングの手法であるK-means法を使用して、東京メトロの各駅を6つのカテゴリーに分類する
  5. 分類結果をmap rendering libraryであるFoliumを使用して地図形式で表示する

 

Result


以下がクラスタリングされた駅を地図上に表示した結果。

f:id:yoheiito:20190323125640p:plain


概ね都心から同心円上に駅が分類されているので、それなりに正しい結果に見える。とはいえ、周辺の駅とは異なる分類の駅もちらほらと存在するので、便利な環境だけどやや都心から離れたお得な駅というのが見つかるかもしれない。
分類結果の詳細はGoogle ドキュメントスプレッドシートに保存してあるので、興味のある方はこちらをご覧ください。

Tokyo Metro stations clustering - Google スプレッドシート

 

感想


似たような駅をクラスタリングして引っ越し対象駅を絞り込む、ということはそれなりに上手くいった気がする。ただ実際の活用という面でいうと、対象の駅を(東京メトロもうだけでなく)もう少し広げてもよかった。東急、小田急、京王などの路線を含んでいないため、23区西部の住宅街駅が少なくなってしまった。残念。

分析を行ったNotebookはこちら。おかしなコードは指摘してください。。

github.com

Coursera ”IBM Data Science Professional Certificate”コースはこちら。

www.coursera.org