カーナビの移動履歴から、その人に合った情報を提供する

このエントリーをはてなブックマークに追加
2017年07月26日

main_016.jpg

現在、最も簡単に手に入れられる行動履歴データは、車載カーナビに記録される位置情報です。そこで、カーナビから得られる情報から、その車の持ち主がよく行く場所を分析し、有用な情報を提供するシステムを実現できないかと考えてみました。

ここでは、カーナビから取得する行動履歴を、関係性技術で分析して、それぞれの車の持ち主に対するレコメンドができるかどうかを見てみましょう。

ただし、カーナビの移動履歴は、数字上の位置情報で表されているため、関係性技術のノードとして扱うためには、地図との照合を行ったうえで地名に落とし込んでいく作業が必要になります。

使うデータと関係性の作り方

今回は、簡易的な方法として、カーナビの目的地検索履歴ログを使用することにしました。カーナビでどこかに向かう人は、たいてい目的地を入力して検索しますから、そのデータは移動履歴とほぼ重なるはずです。

さらに、目的地のログから関係性グラフを作成するだけでは、おすすめの情報を抽出できません。Yahoo-Location-API から、地図のジャンル情報も一緒に加えて関係性グラフをつくることにします。目的地の検索ログとジャンル情報を関係性技術で分析することで、ユーザーに最も適合する地図ジャンルが導き出せるはずです。

使用するデータは次のとおりです。

  • カーナビの目的地検索ログ(ユーザーIDと検索ワードから構成されます)
  • 地図ジャンル情報(Yahoo-Location-API から取得します)

ユーザーごとの抽出結果

ジャンル情報を含む関係性グラフを作成し、それぞれのユーザーを基点として距離を計測したところ、次のような結果が出ました。

ユーザー0001のケース(距離の近さでソート)
ユーザー0001のケース(距離の近さでソート)

ユーザー0001のケースでは「横浜市」や「港区」「中区」など、目的地の検索ログが多く上位にあがってきましたが、10位にジャンル情報として「和風居酒屋」がランクインしています。

ユーザー0001が検索している地域が和風居酒屋と関係が深いことがわかります。

さらにユーザーIDと、ジャンル情報の「和風居酒屋」の二つを基点ノードとして、新たな関係性を抽出してみましょう。「和風居酒屋」を基点ノードに加えて、新たに関係性を分析したところ、次のような結果が出ました。この中で最上位に挙がっているスポットは「若槻インター」でした。

ユーザー0001と和風居酒屋を起点ノードとした関係性
ユーザー0001と和風居酒屋を起点ノードとした関係性

ユーザー0001に最適のスポットとして挙げられた「若槻インター」ですが、これがユーザー0001にとってどのような意味を持つのかまでは私たちにはわかりません。ひょっとすると、ユーザー0001にとっては非常に響く何かがあるスポットであるのかもしれません。

同様の分析を別のユーザー0002に対しても行ってみました。まず、基点ノードのみで関係性を分析し、適合するジャンル情報を抽出します。

ユーザー0002 のケース(距離の近さでソート)
ユーザー0002 のケース(距離の近さでソート)

ユーザー0002の場合は、最も距離の近いノードとして、ジャンル情報の「避難所、避難場所」が出現しています。ユーザー0002の目的地が「避難所、避難場所」としてジャンル分けされるようなところと関係が深いのでしょう。実際、ユーザー0002は、神社や寺院を多く検索しているようです。

さらに、ユーザーIDと、ジャンル情報の「避難所、避難場所」のノードの二つを基点として、おすすめスポットを分析します。結果は次のようなものでした。

ユーザー0002 と避難所、避難場所を起点ノードとした関係性
ユーザー0002 と避難所、避難場所を起点ノードとした関係性

ユーザー0002に対する適合スポットは「浄心寺」でした。「浄心寺」は、最初にジャンル情報を抽出するための分析結果でも、ユーザー0002に距離の近いスポットとしてあがっていました。おそらく、ユーザー0002が目的地検索をして、何度か出かけている場所だと思われます。

以上の結果から、カーナビに記録された情報を用いて、ユーザーごとに関係性の深いジャンルを抽出し、それに合った情報を提供できることがわかりました。

移動履歴の何に注目するか

データが目的地検索履歴で量が少なかったために、一見したところでは満足のいく結果が得られなかったように見えます。

しかし、カーナビの移動履歴という十分なデータがあればユーザーがいまだ訪れたことはないけれども、興味のありそうな新しいスポットを提示するなどといったレコメンドサービスの実現が可能になると、私たちは考えています。

その際に問題になるのは、車の移動履歴という動き続ける数値データ(Floating-Car-Data)を、いかにして関係性技術のノードに結び付けるかの工夫です。

いろいろな方法が考えられますが、私たちは動いている車ではなく、停止した車に注目しました。動いている車が一定時間以上止まる場所というのは、車の持ち主にとって何らかの意味のある場所である可能性が高いからです。そして、もし多くの車が止まる場所があったとすれば、それは大型ショッピングセンターであったり、娯楽施設であったり、その地域における人気スポットである可能性が高いでしょう。

車の停止位置から人気スポットを特定
車の停止位置から人気スポットを特定

そのように推定することで、車の行動履歴から、人々が本当に求めている場所を推定することが可能になります。

たとえば、多くの車がひっきりなしに少しだけ立ち寄るスポットがあったとすれば、利便性の高いコンビニエンスストアかもしれませんし、あるいはその地域で唯一の公衆トイレかもしれません。いずれもよそ者にはわかりにくいけれども、必須の情報です。

プライベートをどうフィルタリングするか

スポットの推薦には注意も必要です。少数の車が定期的に止まるだけのスポットは、ユーザーの自宅や会社など個人的な場所である可能性が高いからです。

個別の停止位置は個人宅の可能性あり
個別の停止位置は個人宅の可能性あり

そこで、車の停止位置を、人気スポットとしてノード化する際には、地図を一定の範囲を持つメッシュ状のマスにして、個人宅が特定されないようにする必要があります。そのうえで、車の停止位置が非常に多いマスがあったとすれば、そこがその地域の本当の人気スポットであることがわかります。

地図をメッシュ状に加工して人気スポットをノード化
地図をメッシュ状に加工して人気スポットをノード化

このとき、一見、同じように車の停止位置が多かったとしても、その内容は大きく違う場合があります。たとえば、地点Aは1時間の間に1台の車が5回止まる場所で、地点Gは5台の車が1回ずつ止まる場所だとしましょう。

どちらも1時間に5回のコンタクトがあるのですが、地点Aは個人的なスポットで、地点Gは公共的なスポットである可能性が高くなります。具体的にいえば、地点Aは住宅街で、10人のユーザーが車で出かけて帰ってきただけかもしれないと推測できます。一方、地点Gは、駐車場を備えたお店か何かがあると推測できるでしょう。

個人的なスポットと人気スポットの違い
個人的なスポットと人気スポットの違い

これを関係性技術のグラフに落とし込んだ場合、地点Aも地点Gも、同じようにコンタクトが5回あったとしても、地点Aは特定の個人との距離が近く、地点Gは複数の人とのつながりの数が多いことになります。このように、人と場所との距離やつながりの数、あるいは共通ノードを分析することで、車の移動履歴から、地域内の人気スポットを判定し、それに合った情報をユーザーに提供することができるようになります。

そのほか、個別のユーザーに対しては、そのユーザーにとって関係性が深い(興味を持ちそうな)場所でありながらも、まだ一度も訪問したことがないスポットを抽出しておすすめするなどのレコメンデーション・サービスへの応用も考えられます。

次回は、非構造化データの扱い方についてご紹介します。

前回:SNSへの書き込みから「次に知りたい情報」をつかむ

次回:顧客から寄せられた膨大な声の中から、有用な情報を拾い出す

関係性コラムトップ

トップへ戻る