(58)【調査した分野】(Int.Cl.,DB名)
ユーザが指示したタイミングにおける位置のデータと前記ユーザの識別子とを含むデー タブロックを複数格納するデータ格納部から、所定の条件を満たすユーザの位置のデータを読み出すステップと、
前記所定の条件を満たす各ユーザについて、当該ユーザの位置を所定個数のクラスタに分類するクラスタリング処理を繰り返し、当該繰り返し毎に位置の所定の集中状態を表す 条件を満たす位置を抽出するステップと、
前記所定の条件を満たす各ユーザについて、抽出された前記位置から最頻出現位置を特定する特定ステップと、
を含み、
前記クラスタリング処理が、各クラスタについて当該クラスタに属する位置を用いて当該クラスタの重心を算出し、各位置について最も近い重心を有するクラスタに分類し直す処理であり、
前記特定ステップが、
前記所定の条件を満たす各ユーザについて、抽出された前記位置から2番目に頻出する 位置を特定するステップ
を含み、
前記データブロックが、前記タイミングについての時刻をさらに含み、
前記所定の条件を満たす各ユーザについて、前記最頻出現位置及び前記2番目に頻出する位置に該当する第1のデータブロック以外の第2のデータブロック毎に、直前の時刻の データブロックに含まれる位置及び時刻に対する距離を算出するステップと、
算出された距離によって前記第2のデータブロックを2つにクラスタリングするステッ プと、
をさらに含み、
前記距離が、時刻又は位置に対して調整係数を乗じた値を用いて算出される
コンピュータにより実行される情報処理方法。
【発明を実施するための形態】
【0018】
[実施の形態1]
図1に、本発明の実施の形態に係るシステムの概要を示す。例えば、携帯電話のネットワーク及びインターネットを含むネットワーク1には、基地局BSを介して複数の携帯端末3が接続されており、さらにゲームサーバ5も接続されている。例えば携帯端末3は、ゲームプログラムを実行しており、ゲームサーバ5と通信を行ってゲームを進行させる。さらに、本実施の形態では、携帯端末3は、GPS受信機を備えており、現在位置のデータを取得できるようになっている。そして、本実施の形態では、携帯端末3において実行されているゲームプログラムが現在位置のデータをゲームサーバ5に基地局BS及びネットワーク1を介して送信して、ゲームサーバ5は、現在位置のデータを受信し、位置データ格納部51にユーザ識別子、時刻及び位置を登録することで、ゲームが進行するものとする。ゲームプログラムは一例であって、他のアプリケーションプログラムであってもよい。
【0019】
一方、ゲームサーバ5は、例えばゲーム会社におけるLAN(Local Area Network)であるネットワーク7にも接続されており、当該ネットワーク7には、本実施の形態における主要な処理を実行する情報処理装置9も接続されている。
【0020】
図2に、本発明の一実施の形態に係る情報処理装置9の機能ブロック図を示す。情報処理装置9は、位置データ取得部90と、位置データ格納部91と、前処理部92と、設定データ格納部93と、第1データ格納部94と、第1ラベリング部95と、第2データ格納部96と、第2ラベリング部97と、第3データ格納部98とを有する。
【0021】
位置データ取得部90は、ゲームサーバ5から位置データを取得して、位置データ格納部91に格納する。前処理部92は、設定データ格納部93に格納されているデータを用いて処理を行い、処理結果を第1データ格納部94に格納する。
【0022】
第1ラベリング部95は、クラスタリング部951と、抽出部952と、評価部953とを有し、各ユーザについて第1本拠地(例えば居住地)及び第2本拠地(例えば通学先又は通勤先)を推定する処理を実施する。そして、第1ラベリング部95は、当該推定結果を用いて、各ユーザについて登録された位置のうち該当する位置に対して第1本拠地又は第2本拠地のラベルを設定し、処理結果を第2データ格納部96に格納する。
【0023】
第2ラベリング部97は、距離算出部971と、クラスタリング部972と、設定部973とを有し、各ユーザについて登録された位置のうち第1本拠地及び第2本拠地以外の位置について滞留点(例えば長時間滞在している位置)と移動点(例えば移動途中の位置)とのいずれかのラベルを設定し、処理結果を第3データ格納部98に格納する。
【0024】
次に、
図3乃至
図18を用いて、情報処理装置9の処理内容を説明する。
【0025】
まず、位置データ取得部90は、ネットワーク7を介してゲームサーバ5から、位置データを取得し、位置データ格納部91に格納する(
図3:ステップS1)。例えば、
図4に示すようなデータが取得される。
図4の例では、時刻と、ユーザ識別子(ユーザID)と、緯度(lat)及び経度(lon)とが格納されるようになっている。本実施の形態では、
図4における各レコードは、ユーザが意識的に位置登録を行った場合に登録されるデータである。
【0026】
また、前処理部92は、位置データに対して付加データを付与する処理を実行し、処理結果を第1データ格納部94に格納する(ステップS3)。各ユーザについて、レコードを時刻でソートした上で、直前のレコードに含まれる緯度経度と自レコードに含まれる緯度経度から距離及び方角を算出し、同じく直前のレコードに含まれる時刻と自レコードに含まれる時刻から時間を算出し、さらに速度(=距離/時間)を算出する。また、設定データ格納部93に、例えば県市区町村の各範囲について緯度経度のデータを地域マスタとして格納しておき、各レコードの緯度経度に対応する県市区町村名を特定する。例えば、第1データ格納部94には、
図5に示すようなデータが格納される。
【0027】
図5の例では、時刻と、ユーザIDと、緯度(lat)及び経度(lon)と、県と、市区と、町村と、距離と、方角と、速度とが、各レコードに含まれている。県市区町村については、緯度経度では分かりにくい位置を把握しやすくするために用いられる。なお、距離、方角及び速度については、補助情報であり、算出しなくても良い。
【0028】
その後、第1ラベリング部95は、第1データ格納部94に格納されているデータに対して、本拠地推定処理を実行し、処理結果を第2データ格納部96に格納する(ステップS5)。この本拠地推定処理については後に詳しく述べる。
【0029】
そして、第2ラベリング部97は、第2データ格納部96に格納されているデータを用いて、滞留点及び移動点特定処理を実行し、処理結果を第3データ格納部98に格納する(ステップS7)。この滞留点及び移動点特定処理については後に詳しく述べる。
【0030】
以上の処理を実行すれば、所定の条件を満たすユーザについては、登録された各位置について第1本拠地、第2本拠地、滞留点又は移動点といったラベルが付与されるようになる。
【0031】
次に、
図6乃至
図9を用いて、本拠地推定処理について説明する。第1ラベリング部95は、第1データ格納部94に格納されているレコードをユーザIDでソートする(
図6:ステップS11)。そして、第1ラベリング部95は、第1データ格納部94にデータが格納されているユーザのうち未処理のユーザを一人特定する(ステップS12)。
【0032】
そして、第1ラベリング部95は、特定されたユーザのデータは以下の処理を実行可能か判断する(ステップS13)。本実施の形態では、ユーザによって指示されたタイミングでしか位置データが登録されないので、ある程度の量位置データが登録されないと有効なラベリングが行われない。従って、本実施の形態では、(a)最低2ヶ月以内の位置登録があること、(b)同期間内で、1日の最後に登録された位置が同じ地域内に5回以上あること、を処理実行の要件としている。この他の要件を付加しても良い。
【0033】
特定されたユーザのデータが処理できない場合には、端子Aを介して
図9の処理に移行する。一方、特定されたユーザのデータが処理可能であれば、第1ラベリング部95のクラスタリング部951は、特定されたユーザの位置のデータについて、クラスタリング処理を実行する(ステップS15)。
【0034】
例えば、本実施の形態では、クラスタリングの手法としてk−means法を採用する。k−means法では、初期的にN個のクラスタに要素を分類する。そして、各クラスタについて、当該クラスタに包含される要素の重心を当該クラスタの重心として算出し、各要素を、各クラスタの重心のうち最も近い重心のクラスタに再分類する。すなわち、重心は移動するので、クラスタの構成要素も変化する。一般的なk−means法では、このような処理を重心が安定するまで繰り返すものである。本実施の形態では、5個のクラスタに分類する処理を30回繰り返すことにする。但し、クラスタ数及び繰り返し回数は変更可能である。
【0035】
模式的に示すと、
図7に示すようなクラスタリング結果が得られる。
図7の例では、上で述べたように5つのクラスタに分類した例を示している。
【0036】
1回クラスタリング処理を実施すると、抽出部952は、クラスタ毎に当該クラスタに属するレコード数(位置の数)を計数する(ステップS17)。例えば
図8に示すようなデータが得られる。
図8の例では、クラスタリング処理の実行毎に、クラスタ1乃至5のそれぞれに属するレコードの数が登録されるようになっている。
【0037】
そして、抽出部952は、最も多くのレコードが属している第1位クラスタに含まれるレコードの数が全体の50%以上となっているか判断する(ステップS19)。例えば、100レコード中50以上のレコードが1つのクラスタに属しているか判断する。
図8の例では、2回目及び5回目のクラスタリング結果においては、クラスタ1がこの条件を満たしている。
【0038】
第1位クラスタに含まれるレコードの数が全体の50%以上となっている場合には、抽出部952は、第1位クラスタに含まれるレコードを処理対象に設定する(ステップS21)。そして処理はステップS27に移行する。
【0039】
一方、第1位クラスタに含まれるレコードの数が全体の50%未満である場合には、抽出部952は、上位2つのクラスタに含まれるレコードの数が全体の40%以上であるか判断する(ステップS23)。所属するレコードの数が上位2つのクラスタに属するレコードの数の和が、例えば100レコード中40以上のレコードであるかを判断する。
図8の例では、1回目、3回目及び4回目におけるクラスタ1及び2がこの条件を満たしている。
【0040】
上位2つのクラスタに含まれるレコードの数が全体の40%以上である場合には、抽出部952は、上位2つのクラスタに含まれるレコードを処理対象に設定する(ステップS25)。そして処理はステップS27に移行する。一方、このような条件を満たさない場合には、処理対象に設定されるレコードはなく、そのまま処理はステップS27に移行する。
【0041】
ステップS19乃至S25の処理は、クラスタリングの結果が、特徴を抽出するのに十分な程度偏っているか否かを判断し、十分偏っていれば、偏りが検出されたクラスタに含まれるレコードを以下の処理の処理対象として設定している。
【0042】
k−means法によってクラスタリング処理の繰り返し毎に重心が移動するので、
図8に示すように、クラスタに属するレコードは変動し、また処理対象として設定されるクラスタも変動する。これによって、GPSによる位置データの誤差等のゆらぎを吸収させる。
【0043】
また、このような処理を繰り返すと、同じレコードが何度も処理対象に設定される。以下の処理では、元々同じレコードであっても、異なるレコードとして処理を行うので、特徴となる位置が強調されることになる。すなわち、特徴を浮き彫りにする効果を有する。
【0044】
そして、クラスタリング部951は、クラスタリング処理の実行回数は閾値に達したか判断する(ステップS27)。クラスタリング処理の実行回数は閾値に達していない場合には、処理はステップS15に戻る。
【0045】
一方、クラスタリング処理の実行回数が閾値に達した場合には、処理は端子Bを介して
図9の処理に移行する。
【0046】
図9の処理の説明に移行して、評価部953は、処理対象レコードの評価処理を実行する(ステップS29)。評価処理については、
図10乃至
図14を用いて説明する。
【0047】
そして、第1ラベリング部95は、第1データ格納部94に位置が登録されているユーザのうち未処理のユーザが存在しているか判断する(ステップS31)。未処理のユーザが存在している場合には、処理は端子Cを介して
図6のステップS12に戻る。一方、未処理のユーザが存在しない場合には、呼び出し元の処理に戻る。
【0048】
次に、
図10乃至
図14を用いて第1の評価処理について説明する。評価部953は、処理対象として設定されたレコードについて、ヒストグラムを生成する(ステップS41)。本実施の形態では、緯度及び経度の各々について、例えば所定の範囲を所定数(例えば5000)のバンド(レンジとも呼ぶ)に分割して、各バンドの度数を計数することで、ヒストグラムを生成する。例えば、
図11及び
図12に示すようなヒストグラムが得られる。
【0049】
そして、評価部953は、ヒストグラムにおいて、最も出現頻度が高い位置を第1本拠地(例えば自宅位置)、2番目に出現頻度が高い位置を第2本拠地(例えば通勤先又は通学先)として特定する(ステップS43)。
図11及び
図12の例では、緯度についてはaのバンドが最も出現頻度が高いことを表しており、経度についてはcのバンドが最も出現頻度が高いことを表しているので、バンドaの中央値とバンドbの中央値とを第1本拠地の緯度経度として採用する。同様に、緯度についてはbのバンドが2番目に出現頻度が高いことを表しており、経度についてはdのバンドが2番目に出現頻度が高いことを表しているので、バンドbの中央値とバンドdの中央値とを第2本拠地の緯度経度として採用する。
【0050】
そうすると、例えば
図13に示すようなデータが得られる。すなわち、各ユーザについて、第1本拠地の緯度経度、第2本拠地の緯度経度が得られる。
【0051】
その後、評価部953は、位置ラベルとして第1本拠地及び第2本拠地を、該当するレコードに設定し、処理結果を第2データ格納部96に格納する(ステップS45)。
【0052】
例えば、ヒストグラムにおいて第1本拠地として特定されたバンドに含まれるレコードに対して第1本拠地を表すラベルを付与し、ヒストグラムにおいて第2本拠地として特定されたバンドに含まれるレコードに対して第2本拠地を表すラベルを付与する。
【0053】
他の手法として緯度経度の誤差を勘案して、第1本拠地の緯度経度を中心として所定範囲に緯度経度が含まれるレコードに対して第1本拠地を表すラベルを付与し、第2本拠地の緯度経度を中心として所定範囲に緯度経度が含まれるレコードに対して第2本拠地を表すラベルを付与する。
【0054】
例えば、
図14に示すように、処理に係るユーザのレコードのうち該当するレコードについて、第1本拠地というラベルと第2本拠地というラベルとが付与される。
【0055】
以上のような処理を実行することで、自宅と推定される第1本拠地と勤務先又は通学先などであると推定される第2本拠地とを推定でき、該当するレコードに対して位置ラベルとして設定できるようになる。
【0056】
次に、
図15乃至
図18を用いて滞留点及び移動点特定処理について説明する。
【0057】
まず、第2ラベリング部97は、第2データ格納部96に格納されているデータにおいて、第1及び第2本拠地が特定された未処理のユーザを一人特定する(ステップS51)。そして、第2ラベリング部97は、第2データ格納部96から、特定されたユーザのレコードを抽出する(ステップS53)。
【0058】
距離算出部971は、第1及び第2本拠地以外のレコードについて、正規化ユークリッド距離を算出する(ステップS57)。
【0059】
正規化ユークリッド距離は、以下のように定義される。
【0061】
ここで(lat
k−lat
j)は、直前のレコードjにおける緯度と自レコードkにおける緯度との差を表し、(lon
k−lon
j)は、直前のレコードjにおける経度と自レコードkにおける経度との差を表す。
【0062】
さらに、(t’
k−t’
j)は、直前レコードjにおける補正後時刻と自レコードkにおける補正後時刻との差を表す。時間は、例えば秒単位(又はユニックス時間)の差を用いると全体として時間依存の距離となってしまうので、例えばt’=kt(調整係数k=10
-4)というように補正することで、正規化したユークリッド距離dが得られるようになる。
【0063】
例えば、ステップS57を実行すると、
図16に示すようなデータが得られる。
図16の例では、各レコードについて、正規化ユークリッド距離が算出されている。
【0064】
そして、クラスタリング部972は、特定されたユーザについて算出された正規化ユークリッド距離についてクラスタリングを実行する(ステップS59)。クラスタリングについては、ここでもk−means法を用いても良い。また、滞留点と移動点とに分けるため、クラスタは2つとなる。
【0065】
例えば、
図17は、緯度と経度とで張られた平面において、特定されたユーザについてのレコードに含まれる緯度経度に対応する点に、ステップS57で算出された正規化ユークリッド距離に相当する長さの線分を垂直方向に伸ばした形で表している。この例では、クラスタリングを実施すると、おおよそ距離3以上となっているレコードについては、滞留点のクラスタに属し、おおよそ距離3未満となっているレコードについては、移動点のクラスタに属する。
【0066】
この結果をより具体的に検討すると、差分時間が短いレコードについては、移動点のクラスタに属し、差分時間が長いレコードについては、滞留点のクラスタに属していることが分かった。このように、ある程度長い正規化ユークリッド距離が算出された位置については滞留点とラベル付けし、あまり長い正規化ユークリッド距離が算出されなかった位置については移動点とラベル付けするのは、妥当性がある。
【0067】
そして、設定部973は、ステップS53で読み出されたレコードのうち、正規化ユークリッド距離が長い方のクラスタに含まれるレコードに滞留点というラベルを設定し、正規化ユークリッド距離が短い方のクラスタに含まれるレコードに移動点というラベルを設定する(ステップS61)。そして、処理結果を、第3データ格納部98に格納する。
【0068】
例えば、
図18に示すようなデータが、第3データ格納部98に格納される。
図18の例では、位置ラベルとして移動点、滞留点についても設定されている。
【0069】
そして、第2ラベリング部97は、第1及び第2本拠地が特定された未処理のユーザが第2データ格納部96に存在しているか判断する(ステップS63)。第1及び第2本拠地が特定された未処理のユーザが存在している場合には、処理はステップS51に戻る。一方、未処理のユーザが存在していない場合には、処理は呼出元の処理に戻る。
【0070】
以上のような処理を実施することにより、不定期で位置情報を取得する場合においても、時刻情報に依存せず第1本拠地及び第2本拠地を抽出することができるようになる。また、第1本拠地及び第2本拠地が抽出できれば、時間のデータを用いて滞留点及び移動点をも区別できるようになる。
【0071】
[実施の形態2]
上で述べた実施の形態では、評価処理として
図10の処理を実行してヒストグラムにより第1本拠地及び第2本拠地を特定する例を示したが、例えば、
図19に示すような第2の評価処理を実行するようにしても良い。
【0072】
まず、評価部953は、カーネル密度関数の演算に用いられるパラメータを算出する(
図19:ステップS71)。
【0073】
カーネル密度関数p(x)は、以下のように表される。
【0074】
【数2】
Nは、処理対象レコードの数であり、x
iは、各処理対象レコードにおける緯度又は経度である。バンド幅d(正規化ユークリッド距離とは異なる)は、以下のように表される。なお、この式は、メジアンを考慮したバンド幅の式である。これ以外にもバンド幅を決定する方法は存在しているが、例えばこのような式を用いればよい。
【0075】
【数3】
σは、処理対象レコードの緯度又は経度についての標準偏差である。
【0076】
このようにカーネル密度関数p(x)でカーネル密度を算出するには、N、d及びσを算出しておく。
【0077】
そして、評価部953は、計算されたパラメータを用いてカーネル密度関数の値を計算し、第1のピークにおける緯度経度を第1本拠地として特定し、第2のピークにおける緯度経度を第2本拠地として特定する(ステップS73)。
【0078】
図20に緯度についてのカーネル密度関数のカーブを表し、
図21に経度についてのカーネル密度関数のカーブを表す。
図20及び
図21では、同じ処理対象レコードについて生成したヒストグラムを重ねて表している。このようにカーネル密度関数p(x)は、バンド幅d毎に値を計算することで、
図20及び
図21に示すように滑らかなカーブとして表される。バンド幅は、ヒストグラムでは固定的な設定となるが、カーネル密度関数では、処理対象レコードについての緯度及び経度の分布に基づき決定されるので、より適切なカーブが得られる。
【0079】
ステップS73では、緯度については、第1のピークpに係るバンド幅の中央値を第1本拠地の緯度として採用し、第2のピークqに係るバンド幅の中央値を第2本拠地の緯度として採用する。経度については、第1のピークrに係るバンド幅の中央値を第1本拠地の経度として採用し、第2のピークsに係るバンド幅の中央値を第2本拠地の経度として採用する。
【0080】
さらに、評価部953は、位置ラベルとして第1本拠地及び第2本拠地を、該当するレコードに設定し、処理結果を第2データ格納部96に格納する(ステップS75)。
【0081】
例えば、第1本拠地として特定されたバンドに含まれるレコードに対して第1本拠地を表すラベルを付与し、第2本拠地として特定されたバンドに含まれるレコードに対して第2本拠地を表すラベルを付与する。
【0082】
他の手法として緯度経度の誤差を勘案して、第1本拠地の緯度経度を中心として所定範囲に緯度経度が含まれるレコードに対して第1本拠地を表すラベルを付与し、第2本拠地の緯度経度を中心として所定範囲に緯度経度が含まれるレコードに対して第2本拠地を表すラベルを付与する。
【0083】
以上のような処理を実施することで、ヒストグラムより精度良く第1本拠地及び第2本拠地を特定することができるようになる。
【0084】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、
図2に示した情報処理装置9の構成は一例であって、プログラムモジュールの実装構成とは異なる場合がある。処理フローについても、処理結果が変わらない限り、処理順番を入れ替えたり、処理ステップを並列に実行するようにしても良い。
【0085】
なお、上で述べた情報処理装置9は、コンピュータ装置であって、
図22に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。