無限壁破り駆動開発 <colspan=∞>

テーマは北海道, オープンデータ, Web技術, HTML5, d3.js, カメラ, 韓国語, Javascript, Ruby, Python

北海道の市町村を観光客統計データでクラスタリングする

背景

私はこの数ヶ月間、北海道の観光客統計データを用いて地元の観光について調べている。 出身地にどのような特色があるのか、改めて知りたいと思ったからである。

北海道はオープンデータとして北海道観光入込客数調査報告書を公開中である(CC BY 2.1)。 過去15年分の各市町村における観光客数の月次推移をまとめたものである。延べ総数だけでなく、道外・道内、日帰り・宿泊などの詳細な内訳も含まれている。 そのため、各市町村がどのような特色を持っているかを知ることができる。

しかし、データそのものは無機質なスプレッドシートで、閲覧性に乏しい欠点があった。 市町村、内訳項目、時期など様々な分析軸があるにもかかわらず、閲覧・可視化には手作業による加工が多分に必要であった。

そこで、私は愚直にデータをクレンジングして機械可読化した上に、ヒートマップや各市町村の統計データを閲覧できるツールを作成した。 これにより、飛躍的に閲覧性が高まり、北海道全体の観光の特徴を俯瞰できるようになった。

(本ツールは2015年10月開催の北海道オープンデータハッカソンにてクリプトン賞を頂きました。別件にて起稿予定)

課題

しかし、視覚的に俯瞰できるようになっても、似た特色を持った自治体を探るのは手作業である。 北海道は市町村は179もある。人間には根気が続かず、到底無理である。

藤原製麺 札幌円山動物園白クマ塩ラーメン 112.4g×10袋

藤原製麺 札幌円山動物園白クマ塩ラーメン 112.4g×10袋

手段

機械学習を使って似た特色を持った自治体を探す。 具体的には観光客統計データの1年分の月次推移を12次元ベクトルデータに見立てて、市町村をクラスタリングする。アルゴリズムにはk-meansを用いる。

統計データは北海道観光入込客数調査報告書の2011年度、2012年度(2012年1月〜2012年12月)のデータを用いる。メトリクスは道外観光客数を用いた。道外観光客のほうが、より北海道らしい場所へと行く傾向があると仮定したからである。

クラスタリング結果

結果は以下のようになった。

f:id:colspan:20151028224450p:plain

クラスタ数は手作業で探り、直感的に良いと感じた k=12 に落ち着かせた。 観光客数の絶対数も類似度に含めるため、各ベクトルは正規化しなかった。

考察

思いの外よくまとまった。 ある実行結果から20市町村以下となったクラスタを抜粋し、それぞれに名前をつけてみる。

孤高の都市たち

これらはそれぞれ単独クラスタとなった。北海道を代表する観光地であり、個性をはっきりと示せている都市である。

札幌市

f:id:colspan:20151109195441p:plain

小樽市

f:id:colspan:20151109195457p:plain

旭川市

f:id:colspan:20151109195511p:plain

函館市

f:id:colspan:20151109195521p:plain

あと一歩で孤高の都市

一定規模の観光資源・産業規模はあるものの、孤高の都市にはなりきれなかった都市たちである。 上川町、斜里町洞爺湖町は温泉で有名であるが、なぜかそこに混じってしまう帯広市釧路市。 そして、犬猿の仲である帯広と釧路が交わらないところも実態をよく表している。 登別市千歳市が似ている実感はないが、いずれもGWと夏休みの間の6月にがくんと数を下げる点では一致していた。

(組み合わせA)

f:id:colspan:20151109195553p:plain

(組み合わせB)

f:id:colspan:20151109195603p:plain

(組み合わせC)

f:id:colspan:20151109195611p:plain

スキークラスタ

文句なくスキー場である。ここまで綺麗にくくり出せるとは。

f:id:colspan:20151109195634p:plain

北の国からクラスタ

あーあーーーあああああ~~~~~~~~~。

f:id:colspan:20151109195644p:plain

知る人ぞ知る観光地クラスタ

これらは一定数の観光客を集めているという点で集まった模様である。 いずれも道の駅に寄りたくなる感じがする市町村である。

f:id:colspan:20151109195652p:plain

ソースコード

上記の実験結果はgithubにて公開中である。

github.com

展望

海外観光客や人口のメトリクスを足したり、時系列要素を年またぎで足したり、主成分分析を組み合わせたりすればもっといろんな視点で類似する自治体を集められる気がする。

実践 機械学習システム

実践 機械学習システム

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

参考文献

2015/11/04追記

クラスタリング結果の閲覧性を高めました。github pagesにて公開します。