(57)【特許請求の範囲】
【請求項１】
所定の行動を行う場所の位置を示す情報である場所情報を取得する場所情報取得手段と、
複数のユーザの位置履歴を示す情報である位置履歴情報を取得する位置履歴情報取得手段と、
前記位置履歴情報取得手段により取得された位置履歴情報に示される位置履歴と、前記場所情報取得手段により取得された場所情報に示される位置とに基づいて、前記位置履歴情報に対応するユーザから、前記所定の行動を行うと推定されるユーザである第１ユーザを抽出するユーザ抽出手段と、
前記位置履歴情報取得手段により取得された位置履歴情報の内、前記第１ユーザに対応する位置履歴情報である第１位置履歴情報に示される位置履歴に基づいて、前記所定の行動を行う場所を新たに抽出する場所抽出処理を実行する場所抽出手段と、を備え、
前記ユーザ抽出手段は、前記場所抽出手段により行動を行う場所が抽出された後に、前記位置履歴情報取得手段により取得された位置履歴情報の内、前記所定の行動を行うと推定されていないユーザである第２ユーザの位置履歴を示す情報である第２位置履歴情報に示される位置履歴と、前記場所抽出手段により推定された場所を示す位置とに基づいて、当該第２位置履歴情報に対応する第２ユーザから第１ユーザを新たに抽出するユーザ抽出処理を実行し、
前記場所抽出手段による場所抽出処理及び前記ユーザ抽出手段によるユーザ抽出処理を交互に繰り返させる処理制御手段をさらに備える、抽出装置。
【請求項２】
所定の行動を行う場所の位置を示す情報である場所情報を取得する場所情報取得手段と、
複数のユーザの位置履歴を示す情報である位置履歴情報を取得する位置履歴情報取得手段と、
前記位置履歴情報取得手段により取得された位置履歴情報に示される位置履歴と、前記場所情報取得手段により取得された場所情報に示される位置とに基づいて、前記位置履歴情報に対応するユーザから、前記所定の行動を行うと推定されるユーザである第１ユーザを抽出するユーザ抽出手段と、
前記位置履歴情報取得手段により取得された位置履歴情報の内、前記第１ユーザに対応する位置履歴情報である第１位置履歴情報に示される位置履歴に基づいて、前記所定の行動を行う場所を新たに抽出する場所抽出処理を実行する場所抽出手段と、を備え、
前記場所抽出手段は、第１位置履歴情報に示される位置履歴と、前記所定の行動を行うと推定されていないユーザである複数の第２ユーザの位置履歴を示す情報である第２位置履歴情報に示される位置履歴とを比較し、当該比較の結果に基づいて行動を行う場所を抽出する抽出装置。
【請求項３】
所定の行動を行うと推定されるユーザである複数の第１ユーザの位置履歴を示す情報である第１位置履歴情報と、前記所定の行動を行うと推定されていないユーザである複数の第２ユーザの位置履歴を示す情報である第２位置履歴情報とを取得する位置履歴情報取得手段と、
前記第１ユーザに対応する第１位置履歴情報に示される位置履歴に基づいて、当該行動を行う場所を抽出する場所抽出手段と、
前記第２位置履歴情報に示される位置履歴と、前記場所抽出手段により抽出された場所を示す位置とに基づいて、当該第２位置履歴情報に対応する第２ユーザから、第１ユーザを新たに抽出するユーザ抽出処理を実行するユーザ抽出手段と、
を備える抽出装置。
【請求項４】
前記場所抽出手段は、前記ユーザ抽出手段により第１ユーザが抽出された後に、前記位置履歴情報取得手段により取得された位置履歴情報の内、前記ユーザ抽出手段により抽出された第１ユーザに対応する位置履歴情報に示される位置履歴に基づいて、行動を行う場所を新たに抽出する場所抽出処理を実行し、
前記ユーザ抽出手段によるユーザ抽出処理及び前記場所抽出手段による場所抽出処理を交互に繰り返させる処理制御手段と、
をさらに備える、請求項３に記載の抽出装置。
【請求項５】
前記処理制御手段は、前記ユーザ抽出処理により抽出された第１ユーザの数又は前記場所抽出処理により抽出された場所の数に基づいて繰り返し処理を終了させる、請求項１又は４に記載の抽出装置。
【請求項６】
前記位置履歴の位置毎に時刻が対応付けられており、
前記処理制御手段は、前記ユーザ抽出処理及び場所抽出処理の繰り返しを終了した後に、前記ユーザ抽出処理及び場所抽出処理の抽出対象となる期間の内、一部の期間に含まれる時刻に対応する位置履歴を用いて、当該一部の期間に、前記場所抽出手段により抽出された場所に位置していた前記ユーザ抽出手段により抽出された第１ユーザ、又は前記ユーザ抽出手段により抽出された第１ユーザが位置していた前記場所抽出手段により抽出された場所を特定し、当該特定した結果に基づいて、前記場所抽出手段により抽出された場所、又は前記ユーザ抽出手段により抽出された第１ユーザの取り消しを行う、請求項１、４、５の何れか一項に記載の抽出装置。
【請求項７】
前記場所抽出手段は、第１位置履歴情報に示される位置履歴と、前記所定の行動を行うと推定されていないユーザである複数の第２ユーザの位置履歴を示す情報である第２位置履歴情報に示される位置履歴とを比較し、当該比較の結果に基づいて行動を行う場所を抽出する請求項１、３〜６の何れか一項に記載の抽出装置。
【請求項８】
前記位置履歴の位置毎に時刻が対応付けられており、
前記位置履歴情報取得手段は、同一ユーザの位置履歴に基づいて、ユーザが滞留した位置を示す滞留点を算出し、
前記ユーザ抽出手段は、前記位置履歴情報取得手段により算出された滞留点にも基づいて、第１ユーザを抽出し、
前記場所抽出手段は、前記位置履歴情報取得手段により算出された滞留点に基づいて前記所定の行動を行う場所を抽出する、請求項１〜７の何れか一項に記載の抽出装置。
【請求項９】
前記位置履歴情報取得手段は、前記滞留点と共に、前記位置履歴の時刻に基づいて滞留していた期間を算出し、
前記ユーザ抽出手段は、前記位置履歴情報取得手段によって算出された期間の長さ又は期間の間隔にも基づいて第１ユーザを抽出する、請求項８に記載の抽出装置。
【請求項１０】
ユーザに所持される端末の状態に基づいた情報である状態情報を取得する端末情報取得手段をさらに備え、
前記ユーザ抽出手段は、前記端末情報取得手段により取得された状態情報にも基づいて第１ユーザを抽出する、請求項１〜９の何れか一項に記載の抽出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、行動を行うユーザ又は当該行動を行う場所を抽出する抽出装置に関する。
【背景技術】
【０００２】
ユーザの位置を特定することが可能な位置情報を用いて、当該ユーザの行動を推定する技術がある（例えば、特許文献１参照）。具体的には、ＧＰＳ（Global Positioning System）による測位結果の履歴からユーザの滞在エリアを特定し、特定した滞在エリア内に存在する各スポットに関連付けられた属性を用いてユーザの行動を推定する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１６４２２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の技術は、ユーザの行動を推定するための属性が当該行動に関連付く十分に多くのスポット（場所）に登録されていなければ、適切にユーザの行動を推定することができない。ユーザの滞在履歴に対応するスポットに当該行動を行う場所であることを示す属性が登録されていないと、滞在場所と、当該滞在場所が示す行動を示す情報との関連付けを行うことができないためである。
【０００５】
しかし、場所の数は、多数存在するため、それぞれの場所に、上記行動を示す情報を事前に入力することは容易ではない。よって、十分に多くの場所に行動を示す情報を入力して、ユーザの行動を抽出するのは、事前の情報の入力の手間が大きいという問題点がある。
【０００６】
そこで、所定の行動が十分に多くの場所に関連付けられていなくても適切に所定の行動を行うユーザ又は場所を抽出できる抽出装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る抽出装置は、所定の行動を行う場所の位置を示す情報である場所情報を取得する場所情報取得手段と、複数のユーザの位置履歴を示す情報である位置履歴情報を取得する位置履歴情報取得手段と、位置履歴情報取得手段により取得された位置履歴情報に示される位置履歴と、場所情報取得手段により取得された場所情報に示される位置とに基づいて、位置履歴情報に対応するユーザから、所定の行動を行うと推定されるユーザである第１ユーザを抽出するユーザ抽出手段と、位置履歴情報取得手段により取得された位置履歴情報の内、第１ユーザに対応する位置履歴情報である第１位置履歴情報に示される位置履歴に基づいて、所定の行動を行う場所を新たに抽出する場所抽出処理を実行する場所抽出手段と、を備える。
【０００８】
このような本発明に係る抽出装置によれば、ある行動を行うと推定されるユーザの位置履歴に基づいて、新たに行動を行う場所を推定するので、所定の行動が多くの場所に関連付けられていなくても、適切に所定の行動を行う場所を抽出することができる。
【０００９】
本発明に係る抽出装置では、ユーザ抽出手段は、場所抽出手段により行動を行う場所が抽出された後に、位置履歴情報取得手段により取得された位置履歴情報の内、行動を行うと推定されていないユーザである第２ユーザの位置履歴を示す情報である第２位置履歴情報に示される位置履歴と、場所抽出手段により推定された場所を示す位置とに基づいて、当該第２位置履歴情報に対応する第２ユーザから第１ユーザを新たに抽出するユーザ抽出処理を実行し、場所抽出手段による場所抽出処理及びユーザ抽出手段によるユーザ抽出処理を交互に繰り返させる処理制御手段をさらに備える。
【００１０】
このような本発明に係る抽出装置によれば、場所抽出処理及びユーザ抽出処理を繰り返すので、所定の行動が多くの場所に関連付けられていなくても、適切に所定の行動を行う場所及び当該行動を行うユーザを抽出することができる。あるいは、本発明に係る抽出装置では、場所抽出手段は、第１位置履歴情報に示される位置履歴と、前記所定の行動を行うと推定されていないユーザである複数の第２ユーザの位置履歴を示す情報である第２位置履歴情報に示される位置履歴とを比較し、当該比較の結果に基づいて行動を行う場所を抽出する。
【００１１】
本発明に係る抽出装置では、所定の行動を行うと推定されるユーザである複数の第１ユーザの位置履歴を示す情報である第１位置履歴情報と、所定の行動を行うと推定されていないユーザである複数の第２ユーザの位置履歴を示す情報である第２位置履歴情報とを取得する位置履歴情報取得手段と、第１ユーザに対応する第１位置履歴情報に示される位置履歴に基づいて、当該行動を行う場所を抽出する場所抽出手段と、第２位置履歴情報に示される位置履歴と、場所抽出手段により抽出された場所を示す位置とに基づいて、当該第２位置履歴情報に対応する第２ユーザから、第１ユーザを新たに抽出するユーザ抽出処理を実行するユーザ抽出手段と、を備えてもよい。
【００１２】
このような本発明に係る抽出装置によれば、ある行動を行うユーザである第１ユーザの位置履歴情報に示される位置履歴に基づいて、行動を行う場所を推定する。抽出装置は、当該推定した場所に過去に位置していたユーザを、当該行動を行うユーザとして抽出するので、適切に所定の行動を行うユーザを抽出することができる。
【００１３】
本発明に係る抽出装置では、場所抽出手段は、ユーザ抽出手段により第１ユーザが抽出された後に、位置履歴情報取得手段により取得された位置履歴情報の内、ユーザ抽出手段により抽出された第１ユーザに対応する位置履歴情報に示される位置履歴に基づいて、行動を行う場所を新たに抽出する場所抽出処理を実行し、ユーザ抽出手段によるユーザ抽出処理及び場所抽出手段による場所抽出処理を交互に繰り返させる処理制御手段と、をさらに備えてもよい。
【００１４】
このような本発明に係る抽出装置によれば、ユーザ抽出処理及び場所抽出処理を繰り返すので、所定の行動が多くの場所に関連付けられていなくても、適切に所定の行動を行う場所及び当該行動を行うユーザを抽出することができる。
【００１５】
本発明に係る抽出装置では、処理制御手段は、前記ユーザ抽出処理により抽出された第１ユーザの数又は前記場所抽出処理により抽出された場所の数に基づいて繰り返し処理を終了させてもよい。
【００１６】
このような本発明に係る抽出装置によれば、必要以上にユーザ抽出処理及び場所抽出処理を繰り返さないようにするので、ユーザ抽出処理及び場所抽出処理の負荷を軽減させることができる。
【００１７】
本発明に係る抽出装置では、位置履歴の位置毎に時刻が対応付けられており、処理制御手段は、ユーザ抽出処理及び場所抽出処理の繰り返しを終了した後に、ユーザ抽出処理及び場所抽出処理の抽出対象となる期間の内、一部の期間に含まれる時刻に対応する位置履歴を用いて、当該一部の期間に、場所抽出手段により抽出された場所に位置していたユーザ抽出手段により抽出された第１ユーザ、又はユーザ抽出手段により抽出された第１ユーザが位置していた場所抽出手段により抽出された場所を特定し、当該特定した結果に基づいて、場所抽出手段により抽出された場所、又はユーザ抽出手段により抽出された第１ユーザの取り消しを行ってもよい。
【００１８】
このような本発明に係る抽出装置によれば、ユーザ抽出処理及び場所抽出処理の抽出対象の期間の一部に含まれる時刻に対応する位置履歴を用いて、抽出された場所に位置していた第１ユーザ、又は、第１ユーザが位置していた場所を特定し、当該特定した結果に基づいて、抽出した場所又は第１ユーザを取り消すので、行動に関連付かなくなったユーザ又は場所を抽出結果として残してしまうことを回避することができる。
【００１９】
本発明に係る抽出装置では、場所抽出手段は、第１位置履歴情報に示される位置履歴と、前記所定の行動を行うと推定されていないユーザである複数の第２ユーザの位置履歴を示す情報である第２位置履歴情報に示される位置履歴とを比較し、当該比較の結果に基づいて行動を行う場所を抽出してもよい。
【００２０】
このような本発明に係る抽出装置によれば、第１位置履歴情報に示される位置履歴と、第２位置履歴情報に示される位置履歴とを比較した結果に基づいて抽出するので、第１ユーザの位置履歴から導かれる特有の位置を特定することができる。この結果、抽出装置は、より正確に所定の行動を行う場所を抽出することができる。
【００２１】
本発明に係る抽出装置では、位置履歴の位置毎に時刻が対応付けられており、位置履歴情報取得手段は、同一ユーザの位置履歴に基づいて、ユーザが滞留した位置を示す滞留点を算出し、ユーザ抽出手段は、位置履歴情報取得手段により算出された滞留点にも基づいて、第１ユーザを抽出し、場所抽出手段は、位置履歴情報取得手段により算出された滞留点に基づいて行動を行う場所を抽出してもよい。
【００２２】
このような本発明に係る抽出装置によれば、ユーザが滞留した位置（滞留点）に基づいて第１ユーザ又は行動を行う場所を抽出するので、ユーザが単に通過した位置の情報を用いて、第１ユーザ又は行動を行う場所を抽出してしまうことを回避することができる。
【００２３】
本発明に係る抽出装置では、位置履歴情報取得手段は、滞留点と共に、位置履歴の時刻に基づいて滞留していた期間を算出し、ユーザ抽出手段は、位置履歴情報取得手段によって算出された期間の長さ又は期間の間隔にも基づいて第１ユーザを抽出してもよい。
【００２４】
このような本発明に係る抽出装置によれば、滞留していた期間を考慮して第１ユーザを抽出するので、より正確に第１ユーザを抽出することができる。
【００２５】
本発明に係る抽出装置では、ユーザに所持される端末の状態に基づいた情報である状態情報を取得する端末情報取得手段をさらに備え、前記ユーザ抽出手段は、前記端末情報取得手段により取得された状態情報にも基づいて第１ユーザを抽出してもよい。
【００２６】
このような本発明に係る抽出装置によれば、ユーザの位置だけでなく、ユーザの端末の状態情報に基づいて第１ユーザを抽出するので、より正確に第１ユーザを抽出することができる。
【発明の効果】
【００２７】
本発明によれば、所定の行動が多くの場所に関連付けられていなくても、適切に所定の行動を行う場所又はユーザを抽出することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の実施形態に係るサーバのブロック図である。
【図２】サーバ１０のハードウェア構成を示す図である。
【図３】端末ログを示すデータ構成図である。
【図４】位置ログを示すデータ構成図である。
【図５】エリア抽出テーブルを示すデータ構成図である。
【図６】滞留点情報を示すデータ構成図である。
【図７】行動のカテゴリを示すデータ構成図である。
【図８】フィルタ条件テーブルを示すデータ構成図である。
【図９】ユーザフィルタリング条件テーブルを示すデータ構成図である。
【図１０】ユーザ抽出テーブルを示すデータ構成図である。
【図１１】全体処理を示すフローチャートである。
【図１２】ユーザ抽出処理を示すフローチャートである。
【図１３】エリア抽出処理を示すフローチャートである。
【発明を実施するための形態】
【００２９】
以下、添付図面を参照して、本発明の好適な実施形態について詳細に説明する。なお、図面の説明において同一又は相当要素には同一符号を付し、重複する説明は省略する。
【００３０】
図１に示す、本実施形態に係るサーバ１０（抽出装置）は、所定の行動（例えば、喫煙、宿泊）を行うと推定されるユーザ（例えば、喫煙者、旅行者）及び当該行動を行う場所（例えば、ＰＯＩ（Point Of Interest）、経路中の一部）を抽出するための装置である。上記所定の行動を行う場所の具体例として、喫煙所、宿泊地がある。ここでいう所定の行動とは、ユーザが特定の場所で行う行動である。例えば、喫煙という行動であれば、ユーザは、特定の場所である喫煙所で行う。所定の行動を行うと推定されるユーザを抽出するとは、ユーザが過去に位置していた場所に基づいて、上記行動を行ったと推定されるユーザを特定することをいう。行動を行う場所を抽出するとは、当該行動を行うユーザが過去に位置していた場所に基づいて、行動を行う場所を特定することをいう。サーバ１０は、上記所定の行動の種類（カテゴリ）を予め設定しており、当該設定した種類の行動を行うと推定されるユーザ及び当該設定した行動を行う場所を抽出する。サーバ１０は、所定の行動を行うユーザを抽出することにより、ユーザが行う行動を特定することができる。これにより、サーバ１０は、各ユーザが行う行動に応じた広告配信を行うことができる。
【００３１】
サーバ１０と端末３０とは、ネットワークを介して互いに情報の送受信を行うことができる。このネットワークは、例えば、移動体通信網あるいはインターネットを含んで構成されている。
【００３２】
端末３０は、ユーザに所持される携帯電話機のような持ち運び可能な電子機器である。端末３０は、携帯電話機以外でもよく、例えば、スマートフォン、タブレット型コンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）等でもよい。
【００３３】
この端末３０は、測位機能を有しており、端末３０の位置を測位することができる。この測位機能は、例えば、ＧＰＳ受信機を用いる等、周知技術により実現する。端末３０は、予め端末３０で定められた測位周期（例えば、数分）で測位を実行する。端末３０は、測位を実行すると、測位した結果の情報である位置ログ（位置履歴情報）を生成する。位置ログには、測位点ＩＤと、ユーザＩＤと、緯度と、経度と、測位時刻とが含まれる。測位点ＩＤは、上記位置ログの識別子であり、例えば、位置ログを生成する度に生成される。ユーザＩＤは、端末３０を所持するユーザの識別子である。このユーザＩＤは、予め端末３０に記憶されている。緯度及び経度は、測位により得られた端末３０の位置（端末３０により測位された位置）を示す情報である。測位時刻は、測位した時刻である。端末３０は、これらの情報を位置ログとして生成する。このように、位置ログは、端末３０のユーザの位置履歴を示す情報である。また、位置ログには、測位時刻を含むので、位置ログが示す位置毎に時刻が対応付けられている。端末３０は、生成した位置ログをサーバ１０へ送信する。端末３０は、位置ログを生成する毎に位置ログをサーバ１０へ送信するようにしてもよいし、予め定められた期間経過後にまとめてサーバ１０へ送信するようにしてもよい。
【００３４】
また、端末３０は、端末３０自身の状態（例えば、端末３０の移動状態）を検出することが可能なセンサ（加速度センサ、モーションセンサ等）を備えている。端末３０は、当該加速度センサ、モーションセンサによる検出結果に基づいて端末３０の状態（例えば、端末３０が停止している状態、端末３０が動いている状態）を特定する。この端末３０の状態を特定する方法は、上記センサによる出力結果に基づいて状態を検出する公知技術により実現することができる。端末３０は、端末３０の状態を示す情報を含む端末ログ（状態情報）を生成し、サーバ１０へ当該端末ログを送信する。当該端末ログには、端末ログＩＤと、ユーザＩＤと、端末ログが示す事象の開始時刻と、端末ログが示す事象の終了時刻と、端末ログ種別と、当該端末ログ種別の特徴(詳細)情報とが含まれる。
【００３５】
端末ログＩＤは、端末ログの識別子であり、端末ログを生成する度に生成される。ユーザＩＤは、上述のように端末３０を所持するユーザの識別子である。事象の開始時刻は、端末３０が上記状態の検出を開始した時刻である。事象の終了時刻は、上記状態の検出が終了した時刻である。端末ログ種別は、端末ログの種類を示す情報である。例えば、移動状態についてのログを取得する場合、当該移動状態のログであることを示す情報（例えば、「Ｍｏｔｉｏｎ」）が端末ログ種別となる。端末ログ種別の特徴情報は、当該端末ログ種別についての端末３０の状態を示す情報である。例えば、端末３０の移動状態のログである場合、停止状態（Ｓｔａｂｌｅ）を示す情報等である。
【００３６】
ここで、端末３０が端末ログを生成する例を説明する。端末３０は、センサの出力結果に基づいて端末３０がある状態（例えば、停止状態（「Ｓｔａｂｌｅ」））になったことを検出すると、当該検出した時刻（事象の開始時刻）を記憶する。端末３０は、センサの出力結果に基づいて上記の状態が変わったこと（例えば、停止状態から他の状態に変わったこと）を検出すると、その変わった時刻（事象の終了時刻）を記憶する。端末３０は、端末ログＩＤを生成し、予め記憶しているユーザＩＤを取得する。端末３０は、端末ログＩＤと、ユーザＩＤと、端末ログの事象開始時刻と、端末ログの事象終了時刻と、端末ログ種別を示す「Ｍｏｔｉｏｎ」と、端末ログ種別の特徴情報を示す「Ｓｔａｂｌｅ」とを含む端末ログを生成する。この端末ログを用いて、停止していた状態の期間を特定することができる。
【００３７】
なお、複数の位置ログを参照すれば、端末３０が移動しているか、停止しているかを示す移動状態及び停止状態を特定することもできる。しかし、位置ログの場合、測位誤差を含むため、必ずしも適切に判断できない。よって、端末ログを利用することにより、より正確に端末３０の状態を特定することができる。
【００３８】
続いて、サーバ１０の説明をする。サーバ１０は、情報受信部１１（端末情報取得手段、位置履歴情報取得手段、場所情報取得手段）と、端末ログ記憶部１２と、位置ログ記憶部１３と、滞留点抽出部１４（位置履歴情報取得手段）、滞留点記憶部１５と、処理制御部１６（処理制御手段）と、ユーザ抽出部１７（ユーザ抽出手段）と、抽出結果記憶部１８と、エリア抽出部１９（場所抽出手段）と、出力部２０と、を含む。
【００３９】
図２は、サーバ１０のハードウェア構成図である。図２に示すように、サーバ１０は、ＣＰＵ１０１、主記憶装置であるＲＡＭ（Random Access Memory）１０２及びＲＯＭ（Read Only Memory）１０３、通信を行うための通信モジュール１０４、並びにハードディスク等の補助記憶装置１０５等のハードウェアを備えるコンピュータを含むものとして構成される。これらの構成要素がプログラム等により動作することにより、図１に示す各機能要素による機能が発揮される。なお、サーバ１０は複数台のコンピュータによるコンピュータシステムによって構成されていてもよい。以下、図１に示す各機能要素について説明する。
【００４０】
情報受信部１１は、複数のユーザから位置ログ及び端末ログを受信する部分である。情報受信部１１は、複数の端末３０から位置ログを受信することにより、複数の端末３０それぞれのユーザの位置ログを取得する。また、情報受信部１１は、複数の端末３０から端末ログを受信することにより、複数の端末３０それぞれの端末ログを取得する。情報受信部１１は、端末３０から端末ログ又は位置ログを受信すると、受信した情報を参照し、受信した情報が端末ログであるか位置ログであるかを判別する。情報受信部１１は、例えば、データサイズ、データフォーマット（データ項目数）等の違いにより端末ログと位置ログを判別する。情報受信部１１は、受信した情報が端末ログであると判別すると、当該端末ログを端末ログ記憶部１２へ入力する。
【００４１】
端末ログ記憶部１２は、端末ログを記憶するデータベースである。ここで、端末ログ記憶部１２が記憶する情報の例を図３に示す。図３に示すように、端末ログ記憶部１２は、「ＨａｎｄｓｅｔＬｏｇＩＤ」欄と、「ＵｓｅｒＩＤ」欄と、「ｆｒｏｍ＿ｔｉｍｅ」欄と、「ｔｏ＿ｔｉｍｅ」欄と、「Ｌｏｇ＿ｔｙｐｅ」欄と、「Ｌｏｇ＿ｄｅｔａｉｌ」欄とを含むテーブルを記憶する。情報受信部１１は、「ＨａｎｄｓｅｔＬｏｇＩＤ」欄に、端末ログの端末ログＩＤを入力する。情報受信部１１は、「ＵｓｅｒＩＤ」欄に、端末ログのユーザＩＤを入力する。情報受信部１１は、「ｆｒｏｍ＿ｔｉｍｅ」欄に、端末ログの事象開始時刻を入力する。情報受信部１１は、「ｔｏ＿ｔｉｍｅ」欄に、端末ログの事象終了時刻を入力する。情報受信部１１は、「Ｌｏｇ＿ｔｙｐｅ」欄に、端末ログの種別を示す情報を入力する。情報受信部１１は、「Ｌｏｇ＿ｄｅｔａｉｌ」欄に、端末ログ種別の特徴情報を入力する。
【００４２】
また、情報受信部１１は、受信した情報が位置ログであると判別すると、当該位置ログを位置ログ記憶部１３へ入力する。位置ログ記憶部１３は、位置ログを記憶するデータベースである。ここで、位置ログ記憶部１３が記憶する情報の例を図４に示す。図４に示すように、位置ログ記憶部１３は、「ＰｏｓＬｏｇＩＤ」欄と、「ＵｓｅｒＩＤ」欄と、「Ｌｏｎｇｉｔｕｄｅ」欄と、「Ｌａｔｉｔｕｄｅ」欄と、「Ｔｉｍｅｓｔａｍｐ」欄とを含むテーブルを記憶する。情報受信部１１は、「ＰｏｓＬｏｇＩＤ」欄に、測位点ＩＤを入力する。情報受信部１１は、「ＵｓｅｒＩＤ」欄に、ユーザＩＤを入力する。情報受信部１１は、「Ｌｏｎｇｉｔｕｄｅ」欄に、端末３０が測位した位置を示す緯度経度の内、緯度を入力する。情報受信部１１は、「Ｌａｔｉｔｕｄｅ」欄に、当該位置を示す緯度経度の内、経度を入力する。情報受信部１１は、「Ｔｉｍｅｓｔａｍｐ」欄に、端末３０によって測位された時の時刻（測位時刻）を入力する。
【００４３】
また、情報受信部１１は、所定の行動を行う場所（エリア）の位置を示す情報であるエリア情報（場所情報）を取得する。例えば、情報受信部１１は、サーバ１０の管理者により操作入力されたエリア情報を取得する。所定の行動を行う場所には、例えば、一定の範囲がある。エリアの基準位置（例えば、エリアの範囲の重心を示す位置）と、半径とにより当該範囲が定まる。具体的に、当該範囲は、基準位置を中心とした上記半径の円の範囲である。サーバ１０の管理者により入力されるエリア情報の数は、行動をするユーザをより多く推定するために十分な数ではないものとする。すなわち、上記エリア情報は、ユーザ及びエリアを抽出するための初期値である。ここで、エリア情報は、当該エリアを示す識別子と、当該行動のカテゴリを示す情報と、エリアの半径と、当該エリアの基準位置を示す位置情報（緯度経度を含む情報）とを含む。
【００４４】
情報受信部１１は、エリア情報を取得すると、当該エリア情報を抽出結果記憶部１８に記憶されているエリア抽出テーブルへ入力する。ここでエリア抽出テーブルの例を図５に示す。このエリア抽出テーブルには、エリア情報が入力される。また、エリア抽出部１９は、エリア抽出部１９が抽出した情報（抽出方法は後述する）を候補エリアのエリア情報としてエリア抽出テーブルへ入力する。候補エリアとは、上記行動を行うエリアの候補である。エリア抽出部１９は、候補エリアのエリア情報をエリア抽出テーブルへ一旦入力する。エリア抽出部１９は、後述する処理制御部１６による妥当性チェック要求を受信すると、エリア抽出部１９は、当該候補エリアを、上記行動を行うエリアとして確定させるか否かを判断する。エリア抽出部１９は、当該判断結果により候補エリアを上記行動を行うエリアとして確定させる場合、当該候補エリアのエリア情報を上記行動を行うエリアとして確定させた旨、更新する。エリア抽出部１９は、候補エリアを、上記行動を行うエリアとしない場合、当該候補エリアのエリア情報をエリア抽出テーブルから削除する。
【００４５】
エリア抽出テーブルは、「ＰｏｉｎｔＣｌｕｓｔｅｒＩＤ」欄と、「Ｃａｔｅｇｏｒｙ」欄と、「ＵｓｅｒＩＤｓ」欄と「Ｌｏｎｇｉｔｕｄｅ」欄と、「Ｌａｔｉｔｕｄｅ」欄と、「半径」欄と、「ＰｏｉｎｔＩＤｓ」欄と、「ｉｓＣａｎｄｉｄａｔｅ」欄と、「ｉｓＣｌｏｓｉｎｇ」欄とを含むテーブルである。「ＰｏｉｎｔＣｌｕｓｔｅｒＩＤ」欄には、エリアを示す識別子であるエリアＩＤ（候補または確定したエリアのＩＤ）が入力される。「Ｃａｔｅｇｏｒｙ」欄には、行動のカテゴリが入力される。「ＵｓｅｒＩＤｓ」欄には、端末３０のユーザを識別するユーザＩＤが入力される。「Ｌｏｎｇｉｔｕｄｅ」欄には、場所の基準位置を示す緯度経度の内、緯度が入力される。「Ｌａｔｉｔｕｄｅ」欄には、場所の基準位置を示す緯度経度の内、経度が入力される。
【００４６】
「半径」欄には、上記エリアの半径が入力される。「ＰｏｉｎｔＩＤｓ」欄には、場所を構成する滞留点ＩＤが入力される。エリアを構成する滞留点ＩＤは、エリアの位置と半径からなる場所の範囲内に位置する滞留点の滞留点ＩＤである。滞留点については、後述する。「ｉｓＣａｎｄｉｄａｔｅ」欄には、計算途中フラグが入力される。ここで、計算途中とは、エリア抽出テーブルのレコードにより示されるエリアが、行動が行われるエリアとして確定していないこと（候補エリアであること）をいう。この計算途中フラグは、「Ｔｒｕｅ」又は「Ｆａｌｓｅ」の何れかである。「Ｔｒｕｅ」は、計算途中であること（すなわち、候補エリアであること）を示す。「Ｆａｌｓｅ」は、計算途中ではないこと（すなわち、行動を行うエリアとして確定していること）を示す。
【００４７】
「ｉｓＣｌｏｓｉｎｇ」欄には、エリアの特性変化フラグが入力される。ここで、エリアの特性変化とは、当初行動を行うエリアであったが、時間が経過した結果、当該行動と関連付かなくなることをいう（例えば、喫煙所のエリアにおいて、当該喫煙所が廃止された場合等）。このエリアの特性変化フラグは、「Ｔｒｕｅ」又は「Ｆａｌｓｅ」の何れかである。「Ｔｒｕｅ」は、エリアの特性変化があることを示す。「Ｆａｌｓｅ」は、エリアの特性変化がないことを示す。
【００４８】
情報受信部１１は、エリア情報を取得すると、エリアを示す識別子を「ＰｏｉｎｔＣｌｕｓｔｅｒＩＤ」欄へ入力し、行動のカテゴリを示す情報を「Ｃａｔｅｇｏｒｙ」欄へ入力し、エリアの位置を示す位置情報の内の緯度を「Ｌｏｎｇｉｔｕｄｅ」欄へ入力し、エリアの位置を示す位置情報の内の緯度を「Ｌａｔｉｔｕｄｅ」欄へ入力する。また、情報受信部１１は、エリアの半径を「半径」欄へ入力する。また、情報受信部１１は、「ＵｓｅｒＩＤｓ」欄と「ＰｏｉｎｔＩＤｓ」欄には、何も入力しない。このように、情報受信部１１は、エリア情報を取得し、当該エリア情報をエリア抽出テーブルへ入力する。情報受信部１１が取得したエリア情報によって示されるエリアは、候補エリアではないので、情報受信部１１は、「ｉｓＣａｎｄｉｄａｔｅ」欄に「Ｆａｌｓｅ」を入力する。情報受信部１１がエリア情報を取得した時点では、上記エリアの特性変化があるか否か判断していないので、情報受信部１１は、「ｉｓＣｌｏｓｉｎｇ」欄に「Ｆａｌｓｅ」を入力する。
【００４９】
滞留点抽出部１４は、位置ログ記憶部１３によって記憶された複数の位置ログをユーザ毎に参照し、同一ユーザの複数の位置ログが示す位置に基づいて、ユーザが滞留した位置を示す滞留点を抽出する部分である。ユーザの滞留とは、ユーザがある程度狭い領域に留まっていることであり、すなわち、ユーザが所定時間以上、所定の領域内に連続して位置していることである。滞留点は、ユーザが滞留した場合に位置していた領域、又は当該領域を代表する位置（代表位置）である。この代表位置は、例えば、当該所定領域内にユーザが位置していた複数の位置の重心位置である。具体的には、滞留点抽出部１４は、複数の位置ログが示す位置（端末３０によって測位された複数の位置）が、連続して所定時間（例えば、数時間）以上、所定の狭い領域内に含まれる場合に、当該複数の位置に基づく滞留点を抽出する。
【００５０】
具体的には、滞留点抽出部１４は、位置ログ記憶部１３に記憶されている位置ログの「ＵｓｅｒＩＤ」欄及び「Ｔｉｍｅｓｔａｍｐ」欄を参照し、ユーザ毎に古い時刻順に位置ログを取得する。滞留点抽出部１４は、位置ログ記憶部１３に記憶されている位置ログ全てを取得する。なお、滞留点抽出部１４は、予め定められた期間（滞留点抽出部１４自身で記憶している期間）に基づいた位置ログを取得するようにしてもよい。例えば、滞留点抽出部１４は、後述する処理制御部１６からユーザ抽出処理及びエリア抽出処理を行う旨の通知を受信して、当該通知を受けた時点を基準として当該定められた期間分前から、通知を受けた時点までの期間を特定する。滞留点抽出部１４は、位置ログの「Ｔｉｍｅｓｔａｍｐ」欄に入力された時刻が当該期間に含まれる位置ログを取得してもよい。この期間は、後述する抽出期間と同じであってもよい。
【００５１】
そして、滞留点抽出部１４は、取得した位置ログについて、測位時刻が古い順に滞留点の判断を行う。まず、滞留点抽出部１４は、測位時刻が最も古い位置ログに示される位置を滞留点の判断の基準位置とする。滞留点抽出部１４は、測位時刻が次の位置ログに示される位置と当該基準位置とを比較する。滞留点抽出部１４は、それらの位置の間の距離が、予め設定された滞留点判断用の距離閾値よりも小さいか否かを判断する。滞留点抽出部１４は、当該距離が距離閾値よりも小さいと判断したら、さらに次の位置ログに示される位置と当該基準位置とを比較して、上記と同様の距離閾値に基づく判断を行う。滞留点抽出部１４は、距離が距離閾値よりも小さくなくなる（距離が距離閾値以上となる）まで順次判断を行う。
【００５２】
滞留点抽出部１４は、距離が距離閾値よりも小さくなくなる１つ前の位置ログに係る測位時刻と、基準位置の位置ログに係る測位時刻とを比較する。滞留点抽出部１４は、それらの測位時刻の間の時間差が、予め設定された滞留点判断用の時間閾値よりも大きいか否かを判断する。滞留点抽出部１４は、当該時間差が時間閾値よりも大きいと判断したら、それらの位置ログ（基準位置の位置ログから距離が距離閾値よりも大きくなる１つ前の位置ログまでの位置ログ）を、滞留点を構成する位置ログ（滞留点に対応する位置ログ）であると判断する。すなわち、この場合、滞留点抽出部１４は、滞留点を抽出できると判断する。滞留点抽出部１４は、当該時間差が時間閾値よりも大きくないと判断したら、それらの位置ログ（基準位置の位置ログから距離が距離閾値よりも大きくなる１つ前の位置ログまでの位置ログ）を、滞留点を構成する位置ログではないと判断する。すなわち、この場合、滞留点抽出部１４は、滞留点を抽出できないと判断する。
【００５３】
また、滞留点抽出部１４は、距離が距離閾値よりも小さくなくなった位置ログに示される位置を新たな滞留点の判断の基準位置とし、上記と同様の判断を行う。このように、基準位置から距離閾値までの領域に、時間閾値を超える時間、ユーザが位置していれば滞留点があると判断される。なお、この距離閾値及び時間閾値は、滞留点の抽出の目的等に応じて適宜設定される。なお、滞留点の判断のための領域は、上記のような基準位置に基づく円形の領域でもよいし、基準位置に基づく矩形（メッシュ）の領域でもよい。
【００５４】
滞留点抽出部１４は、滞留点を構成するとされた位置ログから、滞留点の位置（緯度経度）を算出する。滞留点の位置は、例えば、滞留点を構成するとされた位置ログによって示される位置の重心（位置の平均）とすることができる。なお、滞留点の位置は、本方法以外で算出されてもよい。
【００５５】
滞留点抽出部１４は、滞留点を抽出すると、抽出した結果に基づく情報（滞留点情報）を滞留点記憶部１５へ入力する。滞留点記憶部１５が記憶しているデータ構造を図６に示す。滞留点記憶部１５は、「ＳｔａｙＰｏｉｎｔＩＤ」欄と、「ＵｓｅｒＩＤ」欄と、「Ｌｏｎｇｉｔｕｄｅ」欄と、「Ｌａｔｉｔｕｄｅ」欄と、「ｆｒｏｍ＿ｔｉｍｅ」欄と、「ｔｏ＿ｔｉｍｅ」欄と、「ＰｏｓＬｏｇＩＤｓ」欄とを含むテーブルを記憶する。「ＳｔａｙＰｏｉｎｔＩＤ」欄には、滞留点を一意に識別できる識別子である滞留点ＩＤが入力される。例えば、滞留点抽出部１４が、滞留点を抽出する度に滞留点ＩＤを生成し、当該滞留点ＩＤを「ＳｔａｙＰｏｉｎｔＩＤ」欄へ入力する。滞留点抽出部１４は、「ＵｓｅｒＩＤ」欄に、端末３０のユーザを識別するユーザＩＤを入力する。具体的には、滞留点抽出部１４は、滞留点を構成するとされた位置ログに含まれるユーザＩＤを入力する。滞留点抽出部１４は、滞留点の位置を示す緯度経度の内、緯度を「Ｌｏｎｇｉｔｕｄｅ」欄に入力する。滞留点抽出部１４は、当該滞留点の位置を示す緯度経度の内、経度を「Ｌａｔｉｔｕｄｅ」欄に入力する。滞留点抽出部１４は、滞留開始時刻（滞留点に対応する位置ログの内、最先の時刻）を「ｆｒｏｍ＿ｔｉｍｅ」欄に入力する。滞留点抽出部１４は、滞留終了時刻（滞留点に対応する位置ログの内、最後の時刻）を「ｔｏ＿ｔｉｍｅ」欄に入力する。滞留点抽出部１４は、滞留点を構成するとされた位置ログの測位点ＩＤを「ＰｏｓＬｏｇＩＤｓ」欄に入力する。
【００５６】
なお、滞留点抽出部１４は、他の方法により、滞留点を抽出するようにしてもよい。例えば、位置ログの位置、時刻に基づいて、周知技術（例えば、西田京介, 戸田浩之, 倉島健, 内山匡, 確率的訪問POI 分析: 時空間行動軌跡からのユーザモデリング," マルチメディア、分散、協調とモバイル(DICOMO2013)シンポジウム, 2C-6, pp. 334-345, 2013.）である時空間ミーンシフトクラスタリングアルゴリズムを用いて滞留点を抽出してもよい。
【００５７】
処理制御部１６は、所定の行動を行うと推定されるユーザを抽出する処理（ユーザ抽出処理）及び当該行動を行うエリアを抽出する処理（エリア抽出処理、場所抽出処理）を制御する部分である。処理制御部１６は、予め定められているタイミング（例えば、週に１度のタイミング、月に１度のタイミング）でユーザ抽出処理及びエリア抽出処理を開始する。処理制御部１６は、当該タイミングになると、上記行動のカテゴリ毎にユーザ抽出処理及びエリア抽出処理を行う。処理制御部１６は、当該カテゴリを示す情報を有するカテゴリテーブルを予め記憶している。また、処理制御部１６は、カテゴリテーブルに入力された情報も予め記憶している。図７にカテゴリテーブルのデータ例を示す。図７に示すように、カテゴリテーブルは、「ＣａｔｅｇｏｒｙＩＤ」欄と、「Ｃａｔｅｇｏｒｙ」欄を含むテーブルである。「ＣａｔｅｇｏｒｙＩＤ」欄には、カテゴリの識別子が入力されている。「Ｃａｔｅｇｏｒｙ」欄には、当該カテゴリを示す情報が入力されている。
【００５８】
処理制御部１６は、上記カテゴリテーブルに入力されているカテゴリの識別子順に、ユーザ抽出処理及びエリア抽出処理を開始する。処理制御部１６は、上記タイミングになると、ユーザ抽出部１７へ抽出期間（抽出対象となる期間）及び上記カテゴリを通知すると共にユーザ抽出処理要求をする。ここで抽出期間は、処理制御部１６で予め設定されている期間である。例えば、抽出タイミングの時刻と、抽出期間の長さに基づいて定まる。具体的には、抽出期間は、抽出タイミングの時刻を基準に抽出期間の長さ分前の時刻から抽出タイミングの時刻までの期間である。サーバ１０は、測位時刻がこの抽出期間に含まれる位置ログを用いてユーザ及びエリアを抽出する。すなわち、抽出期間は、ユーザ及びエリアを抽出するために用いる位置ログを決める期間である。なお、抽出期間は、行動のカテゴリ毎に異なっていてもよい。
【００５９】
ユーザ抽出部１７は、処理制御部１６から上記抽出期間及び上記カテゴリを受信すると共にユーザ抽出処理要求を受信すると、ユーザ抽出処理を実行し、処理制御部１６へ抽出したユーザ（候補ユーザ）数を通知すると共にユーザ抽出処理を終了した旨を通知する。ここで候補ユーザとは、行動を行うと推定されるユーザ（第１ユーザ）の候補となるユーザをいう。処理制御部１６は、上記ユーザ抽出処理要求をした後に、ユーザ抽出部１７から候補ユーザ数を受信すると共にユーザ抽出を終了した旨の通知を受信する。処理制御部１６は、候補ユーザ数の累計数を記憶していない場合、受信した候補ユーザ数を、候補ユーザ数の累計数として記憶すると共に、受信した候補ユーザ数を記憶しておく。処理制御部１６は、候補ユーザ数の累計数を記憶している場合、記憶している候補ユーザ数の累計数に、受信した候補ユーザ数を加算した値を、候補ユーザ数の累計数として更新して記憶し、別途受信した候補ユーザ数を、直前に抽出された候補ユーザ数として記憶しておく。処理制御部１６は、記憶した候補ユーザ数の累計数と、候補ユーザ数とを用いて、ユーザを抽出する処理及びエリアを抽出する処理を繰り返す必要があるか否かを判断する。
【００６０】
処理制御部１６は、上記ユーザ抽出を終了した旨の通知をユーザ抽出部１７から受信した後に、抽出期間及び上記カテゴリを通知すると共にエリア抽出部１９へエリア抽出処理要求をする。エリア抽出部１９は、処理制御部１６から上記抽出期間及び上記カテゴリを受信する共にエリア抽出処理要求を受信すると、エリア抽出処理を実行し、処理制御部１６へ抽出したエリア（候補エリア）数を通知すると共にエリア抽出処理を終了した旨を通知する。処理制御部１６は、上記エリア抽出処理要求をした後に、エリア抽出部１９から候補エリア数を受信すると共に、エリア抽出を終了した旨の通知を受信する。処理制御部１６は、候補エリア数の累計数を記憶していない場合、受信した候補エリア数を、候補エリア数の累計数として記憶すると共に、受信した候補エリア数を記憶しておく。処理制御部１６は、候補エリア数の累計数を記憶している場合、記憶している候補エリア数の累計数に、受信した候補エリア数を加算した値を、候補エリア数の累計数として更新して記憶し、別途受信した候補エリア数を、直前に抽出された候補エリア数として記憶しておく。処理制御部１６は、記憶した候補エリア数の累計数と、候補エリア数とを用いて、ユーザを抽出する処理及びエリアを抽出する処理を繰り返す必要があるか否かを判断する。
【００６１】
処理制御部１６は、エリア抽出を終了した旨の通知をエリア抽出部１９から受信した後に、ユーザを抽出する処理及びエリアを抽出する処理を繰り返す必要があるか否かを判断する。具体的に、処理制御部１６は、ユーザを抽出する処理及びエリアを抽出する処理を繰り返すか否かを判断するための条件である収束条件を満たすか否かを判断する。例えば、処理制御部１６は、直前に抽出された候補ユーザ数又は直前に抽出された候補エリア数が予め定められている閾値である収束閾値未満である場合（直前に抽出された候補ユーザ数又は直前に抽出された候補エリア数が０の場合も含む）、繰り返しをしないと判断し、直前に抽出された候補ユーザ数又は直前に抽出された候補エリア数が予め定められている収束閾値以上である場合、繰り返しをすると判断する。なお、直前に抽出された候補ユーザ数及び直前に抽出された候補エリア数が予め定められている収束閾値以上である場合、繰り返しをすると判断するようにしてもよい。
【００６２】
また、処理制御部１６は、以下の２つの式の何れかの値が予め定められている収束閾値未満である場合、繰り返しをしないと判断する。このように、処理制御部１６は、ユーザ抽出処理により抽出された候補ユーザの数又はエリア抽出処理により抽出された候補エリアの数に基づいて繰り返し処理を終了させる。なお、上記２つの式の双方の値が予め定められている収束閾値未満である場合、繰り返しをしないと判断するようにしてもよい。
（直前に抽出された候補ユーザ数）／（抽出した候補ユーザの累計数）又は（直前に抽出された候補エリア数）／（抽出した候補エリアの累計数）
【００６３】
処理制御部１６は、ユーザを抽出する処理及び行動を行う場所を抽出する処理を繰り返すと判断した場合、ユーザ抽出部１７及びエリア抽出部１９へ決定したカテゴリ及び抽出期間を送信すると共に繰り返し要求をする。これにより、処理制御部１６は、ユーザ抽出部１７へ候補ユーザを再度抽出させて、エリア抽出部１９へ候補エリアを再度抽出させる。処理制御部１６は、この結果（候補ユーザ及び候補エリアを抽出した数）に基づいて、繰り返しをするか否かを判断して繰り返しをしないと判断するまで、処理を繰り返す。すなわち、処理制御部１６は、繰り返しをしないと判断するまで、ユーザを抽出する処理と行動を行うエリアを抽出する処理とを交互に繰り返す。
【００６４】
処理制御部１６は、繰り返しをしないと判断した場合、ユーザ抽出部１７及びエリア抽出部１９に対して妥当性チェック要求をする。この妥当性チェックとは、抽出した候補ユーザが行動を行うユーザであるか否かをチェックすること、又は抽出した候補エリアが所定の行動を行う場所であるか否かをチェックすることを意味する。この妥当性チェックの詳細は、後述する。
【００６５】
また、処理制御部１６は、抽出したユーザ（抽出ユーザ）又は抽出したエリア（抽出エリア）の特性変化を判断する。この特性変化の判断を行う処理は、ユーザ抽出処理及びエリア抽出処理の抽出期間の一部の期間に、抽出エリアに位置していた抽出ユーザ、又は抽出ユーザが位置していた抽出エリアに基づいて、抽出エリア又は抽出ユーザの取り消しを行う処理である。処理制御部１６は、ユーザ抽出処理及びエリア抽出処理の繰り返しを終了した後に、当該特性変化の判断をする処理を行う。この特性変化の詳細は、後述する。
【００６６】
ユーザ抽出部１７は、位置ログに示される位置と、エリア情報に示される位置とに基づいて、位置ログに対応するユーザから、所定の行動を行うと推定されるユーザを抽出する部分である。また、ユーザ抽出部１７は、エリア抽出部１９によって、行動を行う場所が抽出された（候補エリアが抽出された）後に、行動を行うと推定されていないユーザ（第２ユーザ）の滞留点に示される位置と、候補エリアに示される位置とに基づいて、行動を行うと推定されていないユーザから候補ユーザを抽出する部分である。すなわち、ユーザ抽出部１７は、候補エリアで共起するユーザ特徴を抽出し、エリア情報に示される場所を訪問していないユーザで同様の特徴を有するユーザを候補ユーザとして抽出する。
【００６７】
ユーザ抽出部１７は、処理制御部１６から最初にユーザ抽出処理要求と共に抽出期間及びカテゴリを受け付けた場合、抽出結果記憶部１８に記憶されているエリア抽出テーブルからエリア情報を取得する。
【００６８】
具体的に、ユーザ抽出部１７は、図５に示すエリア抽出テーブルを参照し、上記「ＵｓｅｒＩＤｓ」欄に入力がなく、且つ「Ｃａｔｅｇｏｒｙ」欄に、処理制御部１６から受け付けたカテゴリと同一のカテゴリが入力されているレコードを取得する。ユーザ抽出部１７は、図６に示した滞留点テーブルの「ｆｒｏｍ＿ｔｉｍｅ」欄に入力された開始時刻から「ｔｏ＿ｔｉｍｅ」欄に入力された終了時刻までの期間が、上記抽出期間の少なくとも一部と重複するレコードを取得する。ユーザ抽出部１７は、取得したエリア抽出テーブルのそれぞれのレコードが示す場所の位置から、取得した滞留点レコードのそれぞれが示す位置までの距離を算出する。具体的には、ユーザ抽出部１７は、エリア抽出テーブルのレコードが示す位置（「Ｌｏｎｇｉｔｕｄｅ」欄及び「Ｌａｔｉｔｕｄｅ」欄に入力されている情報から特定される位置）から、滞留点記憶部１５に記憶されているレコードの「Ｌｏｎｇｉｔｕｄｅ」欄及び「Ｌａｔｉｔｕｄｅ」欄に入力されている情報から特定される位置までの距離を算出する。ユーザ抽出部１７は、当該距離を算出する際に、ヒュベニの公式を用いて算出する。
【００６９】
ユーザ抽出部１７は、上記距離と、エリア抽出テーブルのレコードの「半径」欄に入力されている情報の値とを比較する。比較した結果、距離が「半径」欄に入力されている情報の値以下である場合（滞留点が、エリア抽出テーブルのレコードが示すエリアの範囲に属する場合）、ユーザ抽出部１７は、当該エリア抽出テーブルのレコードが示すエリアの範囲に属する滞留点レコードを候補ユーザ滞留点（候補ユーザとなる可能性があるユーザのユーザＩＤを有する滞留点）のレコードとする。このように、ユーザ抽出部１７は、候補ユーザ滞留点を抽出する。
【００７０】
ユーザ抽出部１７は、上記のように候補ユーザ滞留点を抽出した後に、各候補ユーザ滞留点のユーザ（候補ユーザ滞留点レコードに含まれるユーザＩＤ）が、行動のカテゴリに対応する滞留状態（滞留していた期間、滞留した時刻に基づく状態）であるか否かを判断する。ユーザ抽出部１７は、行動のカテゴリに対応する滞留点か否か判断するために、ユーザ抽出部１７が予め記憶しているユーザフィルタリング条件テーブルを用いて判断する。ユーザフィルタリング条件とは、上記の抽出した候補ユーザ滞留点から行動に対応しない滞留状態の滞留点を除去するための条件である。
【００７１】
ここで、フィルタリング条件テーブルのデータ例について図８を用いて説明する。図８に示すように、フィルタリング条件テーブルは、「ＦｉｌｔｅｒＩＤ」欄と、「Ｃａｔｅｇｏｒｙ」欄と、「ＬｏｇＴｙｐｅ」欄と、「ＬｏｇＤｅｔａｉｌ」欄と、「ＭｉｎＤｕｒａｔｉｏｎ」欄と、「ＭａｘＤｕｒａｔｉｏｎ」欄と、「ＡｃｒｏｓｓＡｔ」欄と、「ｄｉｓｔＦｒｏｍＨｏｍｅ」欄とを含むテーブルである。フィルタリング条件テーブルに入力されている情報は、予め記憶されている。「ＦｉｌｔｅｒＩＤ」欄には、フィルタ条件を一意に識別できる識別子であるフィルタ条件ＩＤが入力されている。「Ｃａｔｅｇｏｒｙ」欄には、行動のカテゴリが入力されている。「ＬｏｇＴｙｐｅ」欄には、ログ種別が入力されている。「ＬｏｇＤｅｔａｉｌ」欄には、ログ詳細が入力されている。「ＭｉｎＤｕｒａｔｉｏｎ」欄には、最低継続時間（最低滞留時間）が入力されている。「ＭａｘＤｕｒａｔｉｏｎ」欄には、最大継続時間（最大滞留時間）が入力されている。「ＡｃｒｏｓｓＡｔ」欄には、必ずまたぐ時刻（滞留時間に含まれる時刻）が入力されている。「ｄｉｓｔＦｒｏｍＨｏｍｅ」欄には、自宅からの距離が入力されている。「ＬｏｇＴｙｐｅ」欄に、端末３０のログ情報のログ種別が入力されていれば、当該ログ種別の詳細と同様となっている情報に基づいて判断する。「ＬｏｇＴｙｐｅ」欄に、「Ｓｔａｙ」と入力されている場合、滞留点の滞留時間に基づいて判断する。
【００７２】
ユーザ抽出部１７は、フィルタリング条件テーブルを参照し、「Ｃａｔｅｇｏｒｙ」欄に、処理制御部１６から受け付けたカテゴリと同一のカテゴリが入力されているフィルタリング条件テーブルのレコードを取得する。ユーザ抽出部１７は、当該レコードの内容に基づいてそれぞれの候補ユーザ滞留点が、行動に対応しない滞留状態の滞留点であるか否かを判断する。例えば、処理制御部１６から受け付けたカテゴリが「Ｓｍｏｋｉｎｇ」である場合、ユーザ抽出部１７は、「ＦｉｌｔｅｒＩＤ」欄に「１」が入力されているフィルタリング条件テーブルのレコードの情報に基づいて、滞留点を絞り込む（行動に対応しない滞留状態の滞留点を除去する）。具体的には、ユーザ抽出部１７は、候補ユーザ滞留点が示す滞留時間が、フィルタリング条件テーブルのレコードの「ＭｉｎＤｕｒａｔｉｏｎ」欄に入力されている値から「ＭａｘＤｕｒａｔｉｏｎ」欄に入力されている値までの範囲内（１２０秒〜６００秒）である滞留点に絞り込む。これは、喫煙者は、喫煙時に数分程度（２分〜１０分）静止状態になることに基づく。すなわち、ユーザ抽出部１７は、候補ユーザ滞留点に含まれる「ｆｒｏｍ＿ｔｉｍｅ」欄に入力されている時刻と、「ｔｏ＿ｔｉｍｅ」欄に入力されている時刻とに基づいて滞留時間を算出し、当該滞留時間が１２０秒〜６００秒のレコードのみ候補ユーザ滞留点として残す。具体的には、ユーザ抽出部１７は、「ｆｒｏｍ＿ｔｉｍｅ」欄に入力されている時刻から「ｔｏ＿ｔｉｍｅ」欄に入力されている時刻までの時間を滞留時間として算出する。
【００７３】
なお、処理制御部１６から受け付けたカテゴリが「Ｈｏｔｅｌ」である場合、ユーザ抽出部１７は、「ＦｉｌｔｅｒＩＤ」欄に「２」が入力されているフィルタリング条件テーブルのレコードの情報に基づいて、候補ユーザ滞留点を絞り込む。具体的には、ユーザ抽出部１７は、候補ユーザ滞留点の滞留時間が、フィルタリング条件テーブルのレコードの「ＭｉｎＤｕｒａｔｉｏｎ」欄に入力されている値から「ＭａｘＤｕｒａｔｉｏｎ」欄に入力されている値までの範囲内（２１６００秒〜８６４００秒）であり、候補ユーザ滞留点が、４時の時点で滞留していたことを示し、候補ユーザ滞留点が示す位置から自宅を示す位置までの距離が１００，０００ｍ以上であるレコードのみ、候補ユーザ滞留点として残す。すなわち、ユーザ抽出部１７は、候補ユーザ滞留点に含まれる「ｆｒｏｍ＿ｔｉｍｅ」欄と、「ｔｏ＿ｔｉｍｅ」欄とに入力されている時刻に基づいて滞留時間を算出し、当該滞留時間が２１６００秒〜８６４００秒のレコードであり、「ｆｒｏｍ＿ｔｉｍｅ」欄及び「ｔｏ＿ｔｉｍｅ」欄に入力されている時刻の間に４時を含むレコードであり、候補ユーザ滞留点に含まれる「Ｌａｔｉｔｕｄｅ」欄と「Ｌｏｎｇｉｔｕｄｅ」欄とに入力されている値から示される位置から自宅を示す位置までの距離が、１００，０００ｍ以上であるレコードのみ、候補ユーザ滞留点として残す。自宅の位置を取得する方法として、予め端末３０から取得する方法や、公知の自宅推定方法に基づいて特定することにより、自宅までの距離を算出する方法がある。
【００７４】
また、上述の例では、フィルタリング条件テーブルのレコードの「ＭｉｎＤｕｒａｔｉｏｎ」欄に入力されている値から「ＭａｘＤｕｒａｔｉｏｎ」欄に入力されている値までの範囲と、候補ユーザ滞留点に含まれる「ｆｒｏｍ＿ｔｉｍｅ」欄と、「ｔｏ＿ｔｉｍｅ」欄とに入力されている時刻に基づく滞留時間とを比較する場合について述べた。この代わりに、ユーザ抽出部１７は、上記範囲と端末ログに入力された情報に基づく滞留時間とを比較するようにしてもよい。例えば、ユーザ抽出部１７は、フィルタリング条件テーブルのレコードの「ＬｏｇＴｙｐｅ」欄に、「Ｍｏｔｉｏｎ」が入力されている場合、候補ユーザ滞留点レコードの「ｆｒｏｍ＿ｔｉｍｅ」欄に入力されている時刻から「ｔｏ＿ｔｉｍｅ」欄に入力されている時刻までの間と、端末ログに含まれる「ｆｒｏｍ＿ｔｉｍｅ」欄に入力されている時刻から「ｔｏ＿ｔｉｍｅ」欄に入力されている時刻までの間とが重複する全ての端末ログを特定する。そして、ユーザ抽出部１７は、当該端末ログの内、「ＬｏｇＴｙｐｅ」欄に「Ｍｏｔｉｏｎ」が入力され、「Ｌｏｇ＿ｄｅｔａｉｌ」欄に「Ｓｔａｂｌｅ」が入力されている端末ログの「ｆｒｏｍ＿ｔｉｍｅ」欄に入力された時刻から「ｔｏ＿ｔｉｍｅ」欄に入力された時刻までの滞留時間を算出し、当該滞留時間を用いて比較するようにしてもよい。
【００７５】
続いて、ユーザ抽出部１７は、候補ユーザ滞留点レコードのユーザＩＤが示すユーザが候補ユーザであるか否かを判断する。ユーザ抽出部１７は、候補ユーザ滞留点レコードのユーザＩＤを特定する。ユーザ抽出部１７は、当該候補ユーザ滞留点レコードの内、直近（例えば、ユーザ抽出処理時）から所定期間中（例えば、抽出期間と同一の期間。例えば、「Ｓｍｏｋｉｎｇ」であれば、１週間、「Ｈｏｔｅｌ」なら１年間）のレコードをユーザ毎に抽出する。そして、ユーザ抽出部１７は、それぞれのレコードに基づき、候補ユーザ滞留点の滞留時間と、滞留間隔を候補ユーザ滞留点毎に算出する。滞留間隔とは、時刻順（例えば、「ｆｒｏｍ＿ｔｉｍｅ」欄に入力された時刻順）に並べた場合における、直前の滞留点の時刻との間隔である。ユーザ抽出部１７は、当該対象となる候補ユーザ滞留点の直前の候補ユーザ滞留点の「ｔｏ＿ｔｉｍｅ」欄に入力された時刻から対象となる候補ユーザ滞留点レコードの「ｆｒｏｍ＿ｔｉｍｅ」欄に入力された時刻までの間隔を滞留間隔として算出する。喫煙者は、喫煙した場所又は他の喫煙所へ定期的に行く傾向（１〜２時間周期で休憩を取る（喫煙場所へ移動する））がある。また、旅行者は、一度宿泊した宿泊場所又は他の宿泊場所へ定期的に行く傾向がある。すなわち、候補ユーザであれば、候補エリアの何れかに所定周期で訪問する傾向がある。よって、ユーザ抽出部１７は、この傾向に基づいて判断するために滞留点の間隔期間を用いて、候補ユーザ滞留点レコードに示されるユーザが、候補ユーザであるか否かを判断する。
【００７６】
ユーザ抽出部１７は、滞留時間の平均及び標準偏差、滞留間隔の平均及び標準偏差の基準値を示す情報を有するユーザスコアリング参照テーブルを予め記憶する。滞留時間の平均とは、行動を行う際に滞留する平均時間（例えば、過去に行動をした記録に基づいた統計値等）である。よって、平均時間に近いほど行動を行う可能性が高いと推定される。滞留間隔の平均とは、行動を行う際に、ある場所に行動のために滞留し終えてから、何れかの場所に滞留するまでの平均である。よって、この滞留間隔の平均時間に近いほど行動を行う可能性が高いと推定される。滞留時間の標準偏差は、滞留時間の分散度合を示すものである。滞留間隔の標準偏差は、滞留間隔の分散度合を示すものである。
【００７７】
ユーザ抽出部１７は、当該記憶した基準値を用いて、候補ユーザ滞留点レコードのユーザＩＤが示すユーザが候補ユーザであるか否かを判断する。ここで、ユーザスコアリング参照テーブルを図９に示す。図９に示すように、ユーザスコアリング参照テーブルは、「ＳｃｏｒｅＩＤ」欄と、「Ｃａｔｅｇｏｒｙ」欄と、「ＬｏｇＴｙｐｅ」欄と、「ＬｏｇＤｅｔａｉｌ」欄と、「ＭｅａｎＤｕｒａｔｉｏｎ」欄と、「ＳＴＤＥＶＤｕｒａｔｉｏｎ」欄と、「ＭｅａｎＩｎｔｅｒｖａｌ」欄と、「ＳＴＤＥＶＩｎｔｅｒｖａｌ」欄と、「ｃｏｅｆｆ」欄とを含むテーブルである。「ＳｃｏｒｅＩＤ」欄には、スコア算出条件ＩＤが入力されている。「Ｃａｔｅｇｏｒｙ」欄には、行動のカテゴリが入力されている。「ＬｏｇＴｙｐｅ」欄には、ログ種別が入力されている。「ＬｏｇＤｅｔａｉｌ」欄には、ログ詳細が入力されている。「ＭｅａｎＤｕｒａｔｉｏｎ」欄には、滞留時間（滞在時間）の平均が入力されている。「ＳＴＤＥＶＤｕｒａｔｉｏｎ」欄には、滞留時間（滞在時間）の標準偏差が入力されている。「ＭｅａｎＩｎｔｅｒｖａｌ」欄には、滞留間隔（繰り返し滞留）の平均が入力されている。「ＳＴＤＥＶＩｎｔｅｒｖａｌ」欄には、滞留間隔（繰り返し滞留）の標準偏差が入力されている。「ｃｏｅｆｆ」欄には、スコア算出時の係数が入力されている。
【００７８】
ユーザ抽出部１７は、候補ユーザ滞留点毎に算出した滞留時間及び滞留間隔、ユーザスコアリング参照テーブルの滞留時間の平均、滞留間隔の標準偏差、係数を用いてスコアを算出する。ユーザ抽出部１７は、ユーザスコアリング参照テーブルを参照し、「Ｃａｔｅｇｏｒｙ」欄に、処理制御部１６から受け付けたカテゴリと同一のカテゴリが入力されているユーザスコアリング参照テーブルのレコードを取得し、当該レコードの内容から滞留時間の平均と、滞留時間の標準偏差と、滞留間隔の平均と、滞留間隔の標準偏差と、滞留時間の係数と、滞留間隔の係数とを特定する。ユーザ抽出部１７は、当該特定した値（滞留時間平均等）と、滞留点毎に算出した値（滞留時間及び滞留間隔）とを用いて、スコアを算出する。具体的には、ユーザ抽出部１７は、あるユーザの候補ユーザ滞留点がｎ点ある場合、以下に示す式を用いて算出する。
【数１】
0006591258.tif 000002
【００７９】
式（１）は、ユーザ毎に、滞留時間に関する確率値と、滞留間隔に関する確率値とを算出し、それぞれの確率値を加算する。この確率値は、当該候補ユーザ滞留点に示されるユーザが、当該候補ユーザ滞留点に示される滞留時に行動を行った確率を示す値である。ここで、ｊ＝１の時が滞留時間とし、ｊ＝２の時が滞留間隔とする。ｃｏｅｆｆが係数になる。Ｎｏｒｍａｌ関数は、平均値（Ｍｅａｎ）、標準偏差（Ｓｔｄｅｖ）の正規分布における滞留点の値Ｖａｌ（滞留時間又は滞留間隔）の確率値である。この確率値は公知の算出方法により算出される。この確率値は、滞留点の値Ｖａｌが平均値に近い（行動を行う可能性が高い）場合、高い値となる。例えば、処理制御部１６から受け付けたカテゴリが「Ｓｍｏｋｉｎｇ」である場合、ユーザ抽出部１７は、ｊ＝１の時に、係数のｃｏｅｆｆを０．５、滞留時間の平均を１２０、滞留時間の標準偏差を６００、及び候補ユーザ滞留点の滞留時間を用いて滞留時間のスコアを算出する。また、ユーザ抽出部１７は、ｊ＝２の時に、係数のｃｏｅｆｆを０．５、滞留間隔の平均を９０００、滞留間隔の標準偏差を３６００、及び候補ユーザ滞留点の滞留間隔を用いて滞留間隔のスコアを算出する。ユーザ抽出部１７は、滞留点毎に滞留時間のスコアと滞留間隔のスコアとを加算したスコアを算出し、ユーザの滞留点全てのスコアを加算する。なお、上記のように、式（１）を用いずにスコアを算出するようにしてもよい。例えば、上記の滞留時間に関する確率値をスコアとしてもよい。
【００８０】
ユーザ抽出部１７は、上記の式（１）に基づいて算出したスコアと、予め定められている閾値であるスコア閾値に基づいて、候補ユーザに該当するか否かを判断する。具体的には、ユーザ抽出部１７は、上記の式（１）に基づいて算出したスコアが、予め記憶しているスコア閾値以上である場合、当該ユーザを候補ユーザとして抽出する。これは、ユーザが行動を行う可能性が高いほど、スコアが高い値となるためである。また、ユーザ抽出部１７は、上記の式に基づいて算出したスコアが、予め記憶しているスコア閾値未満である場合、当該ユーザを候補ユーザとしない。このように、ユーザ抽出部１７は、滞留した時間に基づいて滞留していた期間の長さ又は期間の間隔に基づいて候補ユーザを抽出する。
【００８１】
ユーザ抽出部１７は、候補ユーザを抽出すると、抽出結果記憶部１８に記憶されているエリア抽出テーブル及びユーザ抽出テーブルへ抽出した候補ユーザに関する情報を入力する。ユーザ抽出部１７は、エリア抽出テーブルにおける、候補ユーザのユーザＩＤを有する滞留点レコードが示す位置をエリアの範囲として含むエリア抽出テーブルのレコードにおける「ＵｓｅｒＩＤｓ」欄へ当該候補ユーザのユーザＩＤを追加入力する。また、ユーザ抽出部１７は、抽出結果記憶部１８に含まれるユーザ抽出テーブルへ候補ユーザの情報を一旦入力する。ユーザ抽出部１７は、処理制御部１６から妥当性チェック要求を受け付けると、当該候補ユーザを、上記行動を行うユーザとして確定させるか否かを判断する。ユーザ抽出部１７は、当該判断結果により候補ユーザを、上記行動を行うユーザとして確定させる場合、当該候補ユーザの情報を、上記行動を行うユーザとして確定させた旨、更新する。ユーザ抽出部１７は、候補ユーザを、上記行動を行うユーザとしない場合、当該候補ユーザの情報をユーザ抽出テーブルから削除する。
【００８２】
ここで、図１０にユーザ抽出テーブルの例を示す。図１０に示すように、ユーザ抽出テーブルは、「ＵｓｅｒＩＤ」欄と、「Ｃａｔｅｇｏｒｙ」欄と、「ｉｓＣａｎｄｉｄａｔｅ」欄と、「ｉｓＱｕｉｔｔｉｎｇ」欄とを含むテーブルである。ユーザ抽出部１７は、候補ユーザのユーザＩＤを「ＵｓｅｒＩＤ」欄へ入力する。ユーザ抽出部１７は、行動のカテゴリを「Ｃａｔｅｇｏｒｙ」欄に入力する。
【００８３】
ユーザ抽出部１７は、計算途中フラグを「ｉｓＣａｎｄｉｄａｔｅ」欄に入力する。この計算途中とは、ユーザ抽出テーブルのレコードにより示されるユーザが、行動を行うと推定されるユーザとして確定していないこと（候補ユーザであること）をいう。この計算途中フラグは、「Ｔｒｕｅ」又は「Ｆａｌｓｅ」の何れかである。「Ｔｒｕｅ」は、計算途中であること（すなわち、候補ユーザであること）を示す。「Ｆａｌｓｅ」は、計算途中ではないこと（すなわち、行動を行うと推定されるユーザとして確定していること）を示す。抽出したユーザは、候補ユーザであるので、ユーザ抽出部１７は、「ｉｓＣａｎｄｉｄａｔｅ」欄に「Ｔｒｕｅ」を入力する。
【００８４】
ユーザ抽出部１７は、行動変化フラグを「ｉｓＱｕｉｔｔｉｎｇ」欄に入力する。ここで、行動変化とは、当初行動を行うユーザであったが、時間が経過した結果、当該行動と関連付かなくなることをいう（例えば、喫煙者から非喫煙者への移行等）。この行動変化フラグは、「Ｔｒｕｅ」又は「Ｆａｌｓｅ」の何れかである。「Ｔｒｕｅ」は、行動変化があることを示す。「Ｆａｌｓｅ」は、行動変化がないことを示す。候補ユーザを抽出した時点では、上記行動変化をしたか否か判断していないので、ユーザ抽出部１７は、「ｉｓＱｕｉｔｔｉｎｇ」欄に「Ｆａｌｓｅ」を入力する。
【００８５】
また、ユーザ抽出部１７は、抽出した全ての候補ユーザの情報をユーザ抽出テーブルへ入力すると、処理制御部１６に対して、抽出した候補ユーザの数を送出すると共に、ユーザ抽出処理を終了した旨を通知する。
【００８６】
続いて、処理制御部１６から繰り返し要求を受信した場合について説明する。ユーザ抽出部１７は、処理制御部１６から行動のカテゴリ及び抽出期間と共に繰り返し要求を受け付けると、エリア抽出テーブルを参照し、上記行動のカテゴリと同一であるエリア抽出テーブルのレコードを取得する。ユーザ抽出部１７は、ユーザ抽出テーブルを参照し、「Ｃａｔｅｇｏｒｙ」欄に上記行動のカテゴリが入力され、「ｉｓＣａｎｄｉｄａｔｅ」欄に「Ｔｒｕｅ」が入力されているユーザ抽出テーブルのレコード（候補ユーザのレコード）を取得する。ユーザ抽出部１７は、滞留点記憶部１５の情報を用いて、候補ユーザ以外のユーザが対応付く滞留点レコードを抽出する。具体的には、ユーザ抽出部１７は、滞留点記憶部１５に記憶されている滞留点テーブルを参照し、滞留点レコードの「ＵｓｅｒＩＤ」欄に入力されたユーザＩＤが、上記候補ユーザのレコードの「ＵｓｅｒＩＤ」欄に入力されたユーザＩＤの何れにも一致しない滞留点レコードを抽出する。滞留点レコードを抽出した後の処理は、上述の処理と同様である。
【００８７】
続いて、処理制御部１６から妥当性チェック要求を受信した場合について説明する。ユーザ抽出部１７は、処理制御部１６から行動のカテゴリ及び抽出期間と共に妥当性チェック要求を受信すると、エリア抽出テーブルを参照し、「Ｃａｔｅｇｏｒｙ」欄に入力されたカテゴリが、処理制御部１６から受け付けた行動のカテゴリと同一であるエリア抽出テーブルのレコードを取得する。そして、ユーザ抽出部１７は、図６に示した滞留点テーブルの「ｆｒｏｍ＿ｔｉｍｅ」欄に入力された開始時刻から「ｔｏ＿ｔｉｍｅ」欄に入力された終了時刻までの期間が、上記抽出期間の少なくとも一部と重複するレコードを取得する。ユーザ抽出部１７は、取得したエリア抽出テーブルのそれぞれのレコードが示す場所の位置から、取得した滞留点レコードのそれぞれが示す位置までの距離を算出し、候補ユーザ滞留点を抽出する。ユーザ抽出部１７は、上述のように、当該候補ユーザ滞留点に含まれるユーザＩＤ毎に、フィルタリング条件テーブルのレコードに基づいて、候補ユーザ滞留点を絞り込む。また、ユーザ抽出部１７は、上述のように、候補ユーザ滞留点から算出した滞留時間と、滞留間隔を算出し、ユーザスコアリング参照テーブルに含まれる情報に基づいてスコアを算出し、当該スコアとスコア閾値とを比較して、候補ユーザを抽出する。なお、ユーザのスコアと比較するスコア閾値を抽出処理時に用いたスコア閾値より高い値とする。抽出する際は、行動をしていると推定されるユーザを多く抽出することを目的としてスコア閾値を低めに設定しているためである。このように、ユーザ抽出部１７は、抽出した候補ユーザが行動を行うユーザである（候補ユーザが行動を行うユーザとして妥当である）か否かをチェックする。
【００８８】
ユーザ抽出部１７は、妥当性チェック処理時の抽出結果に基づいて、ユーザ抽出テーブルを更新する。具体的に、ユーザ抽出部１７は、ユーザ抽出テーブルの「ＵｓｅｒＩＤ」欄に、妥当性チェック処理により抽出された候補ユーザのユーザＩＤと同一の内容が入力され、「Ｃａｔｅｇｏｒｙ」欄に、妥当性チェック処理時の行動のカテゴリと同一の内容が入力されているユーザ抽出テーブルのレコードを特定する。続いて、ユーザ抽出部１７は、特定したユーザ抽出テーブルのレコードの「ｉｓＣａｎｄｉｄａｔｅ」欄を「Ｆａｌｓｅ」に変更する。これは、当該ユーザ抽出テーブルのレコードに係るユーザが、行動を行うと推定されるユーザとして確定させたことを示す。ユーザ抽出部１７は、妥当性チェック処理時の抽出結果に含まれる候補ユーザＩＤ及び行動のカテゴリを含むレコードの全てについて、「ｉｓＣａｎｄｉｄａｔｅ」欄に入力されている「Ｔｒｕｅ」を「Ｆａｌｓｅ」に変更した後に、上記「Ｃａｔｅｇｏｒｙ」欄に妥当性チェック処理時の抽出結果の行動のカテゴリと同一の内容が入力され、且つ「ｉｓＣａｎｄｉｄａｔｅ」欄に「Ｔｒｕｅ」が入力されているレコードを削除する。このように、ユーザ抽出部１７は、繰り返し処理終了前に抽出されたユーザのレコードの内、妥当性チェック要求時に抽出されなかったユーザのレコードを削除する。すなわち、ユーザ抽出部１７は、妥当性チェック要求時に抽出されなかった候補ユーザを、行動を行うと推定されるユーザの候補から外す。
【００８９】
エリア抽出部１９は、位置ログ記憶部１３に記憶されている位置ログの内、候補ユーザに対応する位置ログ（第１位置履歴情報）に対応する位置ログに基づいて、行動を行うエリアを新たに抽出する部分である。エリア抽出部１９は、処理制御部１６からエリア抽出処理要求と共に行動のカテゴリ及び抽出期間を受け付けると、候補エリアの抽出処理を開始する。最初に、エリア抽出部１９は、処理制御部１６からエリア抽出要求を受信すると、図１０に示したユーザ抽出テーブルを参照し、行動のカテゴリに対応するユーザＩＤのリストを取得する。具体的には、エリア抽出部１９は、ユーザ抽出テーブルを参照し、「Ｃａｔｅｇｏｒｙ」欄に、処理制御部１６から受け付けた行動のカテゴリと同一の内容が入力され、「ｉｓＣａｎｄｉｄａｔｅ」欄に「Ｔｒｕｅ」が入力されている候補ユーザレコードの「ＵｓｅｒＩＤ」欄に入力されているユーザＩＤを取得することにより、行動のカテゴリに対応するユーザＩＤのリストを取得する。
【００９０】
エリア抽出部１９は、滞留点記憶部１５に記憶されている滞留点テーブルを参照し、上記ユーザＩＤのリストに含まれるユーザＩＤに対応し、上記抽出期間に対応する滞留点レコードを取得する。具体的には、エリア抽出部１９は、「Ｃａｔｅｇｏｒｙ」欄に、処理制御部１６から受け付けた行動のカテゴリと同一の内容が入力され、「ＵｓｅｒＩＤ」欄に入力されたユーザＩＤが上記ユーザＩＤのリストの何れかのユーザＩＤと一致し、滞留点テーブルの「ｆｒｏｍ＿ｔｉｍｅ」欄に入力された開始時刻から「ｔｏ＿ｔｉｍｅ」欄に入力された終了時刻までの期間が、上記抽出期間の少なくとも一部と重複する滞留点レコードを取得する。また、エリア抽出部１９は、図３に示したエリア抽出テーブルを参照し、行動のカテゴリに対応する候補エリアのレコードを取得する。具体的には、エリア抽出部１９は、「Ｃａｔｅｇｏｒｙ」欄に、処理制御部１６から受け付けた行動のカテゴリと同一の内容が入力され、「ｉｓＣａｎｄｉｄａｔｅ」欄に「Ｔｒｕｅ」が入力されているレコードを取得する。
【００９１】
エリア抽出部１９は、上記のように取得した滞留点レコードの集合の内、候補エリアのレコードの重心点と半径とに基づく範囲に含まれない滞留点レコードの集合である滞留点集合を抽出する。これは、既に求めた候補エリアに属する滞留点を除外するともに、後述するクラスタリング処理の対象となる滞留点の数を減らし、計算負荷を低減させるためである。
【００９２】
エリア抽出部１９は、上記の滞留点集合に対し、当該滞留点レコードに示される位置を用いて、公知技術（ＭｅａｎＳｈｉｆｔ等）による空間的なクラスタリングを行い、各クラスタの重心点及びクラスタ構成要素の滞留点を含むクラスタの円の半径を計算する。具体的には、エリア抽出部１９は、各滞留点に所属クラスタを割り振り、クラスタ重心を求めた後、当該重心と各所属滞留点との距離を計算し、当該距離の内、最大のものを半径とする。
【００９３】
続いて、エリア抽出部１９は、上記の各クラスタについて、クラスタの円内に含まれる滞留点とそのユーザを抽出し、抽出されたユーザのうち、候補ユーザ数と、全ユーザ数との比率を算出する。具体的には、エリア抽出部１９は、図６に示した滞留点テーブルの全レコードを参照し、各クラスタの重心と、滞留点記憶部１５に記憶されている滞留点レコードに示される位置との距離を算出し、当該距離がクラスタの半径以下である滞留点レコードを特定する。エリア抽出部１９は、特定した滞留点レコードの「ＵｓｅｒＩＤ」欄に入力されているユーザＩＤの内、ユニークなユーザＩＤ（他の滞留点レコードに含まれるユーザＩＤと重複しないユーザＩＤ）を特定する。エリア抽出部１９は、当該ユニークなユーザＩＤの数を上記の全ユーザ数とする。また、エリア抽出部１９は、当該ユニークなユーザＩＤの内、上記のユーザＩＤのリストに含まれるユーザＩＤと同一のユーザＩＤの数を候補ユーザ数とする。エリア抽出部１９は、全ユーザ数に対する候補ユーザ数の割合を比率として算出する。
【００９４】
エリア抽出部１９は、当該比率と、予め記憶している閾値であるエリア閾値とを比較して、当該比較結果に基づいて候補エリアを決定する候補エリア決定処理を行う。具体的には、エリア抽出部１９は、比率が予め記憶したエリア閾値以上であれば、上記クラスタを候補エリアに決定し、当該比率がエリア閾値未満であれば、候補エリアではないと判断する。このように、エリア抽出部１９は、候補ユーザの滞留点と、候補ユーザと推定されていないユーザの滞留点（第２位置履歴情報）を含む全ユーザの滞留点とを比較して、当該比較の結果に基づいて、候補エリアを抽出する。エリア抽出部１９は、決定した候補エリアの一意の情報（エリアＩＤ）を生成する。エリア抽出部１９は、当該エリアＩＤと、行動のカテゴリ、当該エリアに含まれるユーザＩＤと、クラスタ重心を示す緯度及び経度と、円の半径と、エリアに含まれる滞留点ＩＤとを候補エリアの情報をエリア抽出テーブルへ入力する。
【００９５】
具体的には、エリア抽出部１９は、エリアＩＤを「ＰｏｉｎｔＣｌｕｓｔｅｒＩＤ」欄へ入力し、行動のカテゴリを「Ｃａｔｅｇｏｒｙ」欄へ入力し、エリアに含まれるユーザＩＤを「ＵｓｅｒＩＤｓ」欄へ入力し、クラスタ重心を示す緯度を「Ｌａｔｉｔｕｄｅ」欄へ入力し、クラスタ重心を示す経度を「Ｌｏｎｇｉｔｕｄｅ」欄へ入力し、円の半径を「Ｒａｄｉｕｓ」欄へ入力し、エリアに含まれる滞留点ＩＤを「ＰｏｉｎｔＩＤｓ」欄へ入力する。抽出したエリアは、候補エリアであるので、エリア抽出部１９は、「ｉｓＣａｎｄｉｄａｔｅ」欄に「Ｔｒｕｅ」を入力する。また、候補エリアを抽出した時点では、エリアの特性変化があるか否か判断していないので、エリア抽出部１９は、「ｉｓＱｕｉｔｔｉｎｇ」欄へ「Ｆａｌｓｅ」を入力する。
【００９６】
また、エリア抽出部１９は、抽出した全ての候補エリアの情報をエリア抽出テーブルへ入力すると、処理制御部１６に対して、抽出した候補エリアの数を通知すると共に、エリア抽出処理を終了した旨を通知する。
【００９７】
続いて、処理制御部１６から繰り返し要求を受信した場合について説明する。エリア抽出部１９は、行動のカテゴリ及び抽出期間を受信すると共に処理制御部１６から繰り返し要求を受け付けると、上述の候補エリアを抽出する処理を再度行う。
【００９８】
続いて、処理制御部１６から妥当性チェック要求を受信した場合について説明する。エリア抽出部１９は、処理制御部１６から行動のカテゴリ及び抽出期間を受信すると共に妥当性チェック要求を受信すると、候補エリアが行動を行うエリアであるか否かを確定させる処理を行う。まず、エリア抽出部１９は、エリア抽出テーブルを参照し、「Ｃａｔｅｇｏｒｙ」欄に入力されたカテゴリが、処理制御部１６から受け付けた行動のカテゴリと同一であり、「ｉｓＣａｎｄｉｄａｔｅ」欄に「Ｔｒｕｅ」が入力されているエリア抽出レコード（エリア抽出部１９によって抽出された候補エリアのレコード）を取得する。続いて、エリア抽出部１９は、滞留点記憶部１５に記憶されている滞留点テーブルを参照し、上記抽出期間に対応する滞留点レコードを取得する。具体的には、エリア抽出部１９は、「Ｃａｔｅｇｏｒｙ」欄に、処理制御部１６から受け付けた行動のカテゴリと同一の内容が入力され、滞留点テーブルの「ｆｒｏｍ＿ｔｉｍｅ」欄に入力された開始時刻から「ｔｏ＿ｔｉｍｅ」欄に入力された終了時刻までの期間が、上記抽出期間の少なくとも一部と重複するレコードを取得する。
【００９９】
続いて、エリア抽出部１９は、示したユーザ抽出テーブルを参照し、「Ｃａｔｅｇｏｒｙ」欄に、処理制御部１６から受け付けた行動のカテゴリと同一の内容が入力されている候補ユーザレコードの「ＵｓｅｒＩＤ」欄に入力されているユーザＩＤを取得する。続いて、エリア抽出部１９は、上記の各エリア抽出レコードについて、当該エリア候補の範囲内に含まれる滞留点とそのユーザを抽出し、抽出されたユーザのうち、候補ユーザ数と、全ユーザ数との比率を算出する。上記の各エリア抽出レコードについて、当該エリア候補の範囲内に含まれる滞留点とそのユーザを抽出し、抽出されたユーザのうち、候補ユーザ数と、全ユーザ数との比率を算出する方法は、上述の候補エリア決定処理と同様である。なお、妥当性チェック要求時のエリア閾値が候補エリア抽出時に用いたエリア閾値より高い値とする。これは、候補エリア決定時には、広く候補エリアを抽出しておき、確定する段階で絞りこむためである。このように、エリア抽出部１９は、抽出した候補エリアが所定の行動を行う場所である（候補エリアが行動を行うエリアとして妥当である）か否かをチェックする。
【０１００】
エリア抽出部１９は、妥当性チェック時の抽出結果に基づいて、エリア抽出テーブルを更新する。具体的に、エリア抽出部１９は、エリア抽出テーブルの「ＰｏｉｎｔＣｌｕｓｔｅｒＩＤ」欄に、抽出結果の候補ユーザＩＤと同一の内容が入力され、「Ｃａｔｅｇｏｒｙ」欄に、抽出結果の行動と同一の内容が入力されているエリア抽出テーブルのレコードを特定する。続いて、エリア抽出部１９は、特定したエリア抽出テーブルのレコードの「ｉｓＣａｎｄｉｄａｔｅ」欄に入力されている「Ｔｒｕｅ」を「Ｆａｌｓｅ」に変更する。これは、当該エリア抽出テーブルのレコードに係るエリアが、行動を行うエリアとして確定させたことを示す。エリア抽出部１９は、妥当性チェック時の抽出結果に含まれるエリアＩＤ及び行動を含むレコードの全てについて、「ｉｓＣａｎｄｉｄａｔｅ」欄に入力されている「Ｔｒｕｅ」を「Ｆａｌｓｅ」に変更した後に、上記「Ｃａｔｅｇｏｒｙ」欄が抽出結果の行動と同一の内容が入力され、且つ「ｉｓＣａｎｄｉｄａｔｅ」欄が「Ｔｒｕｅ」であるレコードを削除する。このように、エリア抽出部１９は、繰り返し処理終了前に抽出された候補エリアのレコードの内、妥当性チェック要求時に抽出されなかった候補エリアのレコードを削除する。すなわち、エリア抽出部１９は、妥当性チェック要求時に抽出されなかった候補エリアを、行動を行うエリアの候補から外す。
【０１０１】
ここで、処理制御部１６によるカテゴリ毎におけるユーザの行動変化及びエリアの特性変化の判断方法について述べる。最初に、所定の行動を行うと推定されるユーザの行動変化の判断方法を説明する。処理制御部１６は、図６に示した滞留点テーブルの「ｆｒｏｍ＿ｔｉｍｅ」欄に入力された開始時刻から「ｔｏ＿ｔｉｍｅ」欄に入力された終了時刻までの期間が、上記抽出期間の少なくとも一部と重複するレコードを取得する。続いて、処理制御部１６は、ユーザ抽出テーブルを参照し、「Ｃａｔｅｇｏｒｙ」欄に行動のカテゴリが入力され、「ｉｓＣａｎｄｉｄａｔｅ」欄に「Ｆａｌｓｅ」が入力されているユーザ抽出テーブルのレコード（所定の行動を行うと推定されるユーザのレコード）を取得する。続いて、処理制御部１６は、エリア抽出テーブルを参照して、「Ｃａｔｅｇｏｒｙ」欄に行動のカテゴリが入力され、「ｉｓＣａｎｄｉｄａｔｅ」欄に「Ｆａｌｓｅ」が入力されているエリア抽出テーブルのレコード（行動を行うエリアのレコード）を取得する。処理制御部１６は、ユーザ抽出テーブルから取得したレコードに係るユーザ毎に、当該ユーザに対応する抽出期間中の滞留点レコードに示される位置が、エリア抽出テーブルのエリアの範囲に含まれる滞留点レコードを特定する。
【０１０２】
続いて、処理制御部１６は、当該特定した滞留点レコードの「ｆｒｏｍ＿ｔｉｍｅ」欄に入力された開始時刻から「ｔｏ＿ｔｉｍｅ」欄に入力された終了時刻までの期間に基づいて、抽出期間中に行動を行うエリア内でユーザが検出された日数及び抽出期間の内、予め設定している期間である直近○日（抽出対象の期間の一部の期間）に行動を行うエリア内でユーザが検出された日数を特定する。具体的には、処理制御部１６は、上記特定した滞留点レコードの開始時刻から終了時刻までの期間が、抽出期間の各日に対応するか否か判断して、抽出期間中に行動を行うエリア内でユーザが検出された日数を特定する。また、処理制御部１６は、上記特定した滞留点レコードの開始時刻から終了時刻までの期間が、直近○日の期間の各日に対応するか否か判断して、直近○日の期間中に行動を行うエリア内でユーザが検出された日数を特定する。
【０１０３】
続いて、処理制御部１６は、上記ユーザ毎に、行動変化の有無を判断するための判断値を算出する。具体的には、処理制御部１６は、以下の除算結果を当該判断値として算出し、当該判断値が所定の閾値である行動変化閾値を下回るか否かでユーザの行動変化があるか否かを判断する。
（抽出期間中の直近○日における行動を行うエリア内でユーザが検出された日数）／（抽出期間中の全期間における行動を行うエリア内でユーザが検出された日数）
処理制御部１６は、上記の除算結果（判断値）が、行動変化閾値を下回る場合、ユーザの行動変化があると判断する。例えば、行動のカテゴリが「Ｓｍｏｋｉｎｇ」である場合に、上記除算結果が行動変化閾値を下回るときは、行動を行うと推定されたユーザが、当初喫煙所であるエリアへ頻繁に行っていたが、直近○日は、喫煙所であるエリアにそれほど行っていないことになる。すなわち、行動を行うと推定されたユーザが、喫煙者から非喫煙者へ移行したと推定される。なお、上記除算結果が行動変化閾値以上の場合は、行動を行うと推定されたユーザが、直近も喫煙所に行っていることを示すので、ユーザの行動変化が無いと判断する。このように、処理制御部１６は、行動のカテゴリが「Ｓｍｏｋｉｎｇ」である場合に、喫煙者から禁煙者への移行（ユーザの行動変化）があるか否かを判断する。
【０１０４】
続いて、エリアの特性変化の判断方法を説明する。処理制御部１６は、エリア抽出テーブルから抽出したエリア毎（行動を行うエリア毎）に、ユーザ抽出テーブルから抽出したユーザのユーザＩＤと一致し、且つ抽出期間中の滞留点レコードに示される位置が、当該エリアの範囲に含まれる滞留点レコードを特定する。続いて、処理制御部１６は、当該特定した滞留点レコードの「ｆｒｏｍ＿ｔｉｍｅ」欄に入力された開始時刻から「ｔｏ＿ｔｉｍｅ」欄に入力された終了時刻までの期間に基づいて、抽出期間中に行動を行うエリア内でユーザが検出された人数及び抽出期間の内、予め設定している一部の期間である直近○日（抽出対象の期間の一部の期間）に行動を行うエリア内でユーザが検出された人数を特定する。具体的には、処理制御部１６は、上記特定した滞留点レコードの開始時刻から終了時刻までの期間が、抽出期間の各日に対応するか否か判断して、抽出期間中に各行動を行うエリア内でユーザを検出した人数を特定する。また、処理制御部１６は、上記特定した滞留点レコードの開始時刻から終了時刻までの期間が、直近○日の期間の各日に対応するか否か判断して、直近○日の期間中に行動を行うエリア内でユーザが検出された人数を特定する。
【０１０５】
続いて、処理制御部１６は、エリア毎に、エリアの特性変化の有無を判断するための判断値を算出する。具体的には、処理制御部１６は、以下の除算結果を当該判断値として算出し、当該判断値が所定の閾値である特性閾値を下回るか否かでエリアの特性変化があるか否かを判断する。
（抽出期間中の直近○日における行動を行うエリア内でユーザが検出された人数）／（抽出期間中の全期間における行動を行うエリア内でユーザが検出された人数）
処理制御部１６は、上記の除算結果（判断値）が、特性閾値を下回る場合、エリアの特性変化があると判断する。例えば、行動のカテゴリが「Ｓｍｏｋｉｎｇ」である場合に、上記除算結果が特性閾値を下回るときは、当初行動を行うエリア（喫煙所）であったため、行動を行うと推定されたユーザ（喫煙者）が頻繁に来ていたが、直近○日は、喫煙者がそれほど来ていないことになる。よって、喫煙所であったエリアが、喫煙所でなくなったことになる。すなわち、当初喫煙所だったエリアで、喫煙所の廃止がなされたと推定される。なお、上記除算結果が特性閾値以上の場合は、行動を行うエリアに、直近も喫煙者が来ていることを示すので、エリアの特性変化が無いと判断する。このように、処理制御部１６は、行動のカテゴリが「Ｓｍｏｋｉｎｇ」である場合に、喫煙所の廃止（エリアの特性変化）があるか否かを判断する。
【０１０６】
処理制御部１６は、ユーザ毎に算出した判断値が上記行動変化閾値を下回る場合（ユーザの行動変化がある場合）、当該判断値に係るユーザの取り消し処理を行う。また、処理制御部１６は、エリア毎に算出した判断値が上記特性閾値を下回る場合（エリアの特性変化がある場合）、当該判断値に係るエリアの取り消し処理をする。ユーザの取り消し処理とは、取り消し対象であるユーザが、上記行動を行うユーザとして確定していた状態であることを取り消すことをいう。また、エリアの取り消し処理とは、取り消し対象であるエリアが行動を行うエリアとして確定していた状態であることを取り消すことをいう。具体的には、処理制御部１６は、ユーザを取り消す場合、ユーザ抽出テーブルにおける、取り消し対象となるユーザを示すユーザＩＤであり、且つ行動のカテゴリに対応するレコードの「ｉｓＱｕｉｔｔｉｎｇ」欄に入力されている「Ｆａｌｓｅ」を「Ｔｒｕｅ」に変更する。また、処理制御部１６は、エリアを取り消す場合、エリア抽出テーブルにおける、取り消し対象となるエリアに含まれるエリアＩＤであり、且つ行動のカテゴリに対応するレコードに対応するレコードの「ｉｓＣｌｏｓｉｎｇ」欄に入力されている「Ｆａｌｓｅ」を「Ｔｒｕｅ」に変更する。
【０１０７】
出力部２０は、ユーザ抽出部１７によって抽出されたユーザの情報及びエリア抽出部１９によって抽出されたエリアの情報を出力する部分である。例えば、出力部２０は、ユーザ抽出テーブルを参照し、行動を行うユーザとして確定したユーザの情報（例えば、行動のカテゴリと、ユーザＩＤ）を、サーバ１０と異なる装置（例えば、広告配信する機能を有する装置）へ送信する。なお、ユーザ抽出テーブルの「ｉｓＱｕｉｔｔｉｎｇ」欄に「Ｔｒｕｅ」が入力されているレコードの情報を出力対象から除外するようにしてもよい。この装置は、当該ユーザＩＤが示す端末３０宛てに当該行動のカテゴリに応じた広告配信を行うことができる。なお、サーバ１０自身が、広告配信を行う機能を有する場合、出力部２０は、当該広告配信を行う機能へ行動を行うユーザとして確定したユーザの情報として、行動のカテゴリと、ユーザＩＤとを送信する。また、出力部２０は、行動を行うエリアとして確定したエリアの情報（例えば、エリアＩＤと、行動のカテゴリと、緯度経度（「Ｌｏｎｇｉｔｕｄｅ」欄と、「Ｌａｔｉｔｕｄｅ」欄とに入力された情報）、半径）を、サーバ１０と異なる装置（例えば、地図情報を管理する機能を有する装置）へ送信する。
【０１０８】
続いて、図１１〜図１３のフローチャートを用いて、サーバ１０が実行する処理手順の説明をする。図１１に示すフローチャートは、行動を行うと推定されるユーザ及び行動を行うエリアを抽出する全体処理を示す図である。まず、情報受信部１１は、端末３０から位置ログを取得し、当該位置ログを位置ログ記憶部１３へ入力する（ステップＳ１）。そして、情報受信部１１は、端末３０から端末ログを取得し、当該端末ログを端末ログ記憶部１２へ入力する（ステップＳ２）。なお、情報受信部１１は、端末ログを取得してから位置ログを取得してもよいし、位置ログと端末ログを同時に取得してもよい。また、情報受信部１１は、サーバ１０の管理者の入力操作等に基づき、エリア情報を取得する（ステップＳ３）。
【０１０９】
滞留点抽出部１４は、予め定められたタイミング又はサーバ１０の管理者による滞留点抽出要求の入力に応じて、位置ログ記憶部１３から位置ログを取得する。続いて、滞留点抽出部１４は、滞留点を抽出し、抽出した滞留点の情報を滞留点記憶部１５へ入力する（ステップＳ４）。ユーザ抽出部１７は、候補ユーザを抽出し（ステップＳ５）、エリア抽出部１９は、候補エリアを抽出する（ステップＳ６）。処理制御部１６は、収束条件を満たすか否かを判断し（ステップＳ７）、収束条件を満たさない場合（ステップＳ７；Ｎｏ）、ステップＳ５へ移動する。収束条件を満たす場合（ステップＳ７；Ｙｅｓ）、処理制御部１６は、ユーザ抽出部１７及びエリア抽出部１９に候補エリア及び候補ユーザの確定処理をさせる（ステップＳ８）。ステップＳ８の確定処理を終了した後に、処理制御部１６は、確定したエリアの特性変更判断及びユーザの行動変化判断を行う（ステップＳ９）。また、出力部２０は、サーバ１０とは異なる装置からの要求に応じて、確定したユーザ又はエリアの情報を出力し（ステップＳ１０）、処理を終了する。
【０１１０】
続いて、図１２に示す候補ユーザ抽出処理（図１１のステップＳ５）における詳細な処理手順を説明する。まず、ユーザ抽出部１７は、エリア抽出テーブルからレコードを取得する（ステップＳ１１）。ユーザ抽出部１７は、当該レコードが示すエリアの中心から、滞留点記憶部１５に記憶されるレコードが示す滞留点までの距離を求め、所定の半径内に収まる滞留点（候補ユーザ滞留点）を取得する（ステップＳ１２）。ユーザ抽出部１７は、ユーザフィルタリング条件テーブルに基づいて当該候補ユーザ滞留点を絞り、絞った候補ユーザ滞留点に対応するユーザについてスコアリングする（ステップＳ１３）。ユーザ抽出部１７は、スコアリングした値に基づいて候補ユーザを抽出し、ユーザ抽出部１７は、抽出した候補ユーザの情報を抽出結果記憶部１８のユーザ抽出テーブルへ入力し（ステップＳ１４）、処理を終了する。
【０１１１】
続いて、図１３に示す候補エリア抽出処理（図１１のステップＳ６）における詳細な処理手順を説明する。まず、エリア抽出部１９は、ユーザ抽出テーブルから行動のカテゴリに対応するユーザＩＤを取得することにより、候補ユーザリストを取得する（ステップＳ２１）。エリア抽出部１９は、滞留点記憶部１５のレコードから上記候補ユーザリストのユーザＩＤに対応する滞留点を取得する（ステップＳ２２）。エリア抽出部１９は、上記行動のカテゴリに対応する候補エリアの情報を取得する（ステップＳ２３）。エリア抽出部１９は、ステップＳ２２で取得した滞留点の内、ステップＳ２３で取得した候補エリアに含まれない滞留点を特定する（ステップＳ２４）。エリア抽出部１９は、ステップＳ２４で特定した滞留点の集合に対し、滞留点の位置を用いて空間的なクラスタリングを行い、各クラスタの重心点およびクラスタ構成要素の滞留点を含む円の半径（クラスタの半径）を計算する（ステップＳ２５）。エリア抽出部１９は、個々のクラスタについてクラスタの円に収まる滞留点とそのユーザを抽出し、抽出したユーザのうち、候補ユーザ数と全ユーザ数との比率に基づいて候補エリアを抽出する。エリア抽出部１９は、抽出した候補エリアの情報を抽出結果記憶部１８のエリア抽出テーブルへ入力し（ステップＳ２６）、処理を終了する。
【０１１２】
（作用効果）
続いて、作用効果について説明する。サーバ１０では、ユーザ抽出部１７は、エリア情報とユーザの位置ログとに基づいて、候補ユーザを抽出する。エリア抽出部１９は、候補ユーザの位置ログに基づいて、行動を行う場所を新たに抽出するエリア抽出処理を行う。従って、本実施形態によれば、上記エリア情報及び位置ログにより抽出された候補ユーザの位置ログに基づいて、新たに行動を行う場所を推定するので、所定の行動が多くの場所に関連付けられていなくても、適切に所定の行動を行うエリアを抽出することができる。
【０１１３】
また、ユーザ抽出部１７は、行動を行うと推定されていないユーザの位置ログと、新たに行動を行う場所として推定した場所の位置とに基づいて、候補ユーザを新たに抽出するユーザ抽出処理を実行し、処理制御部１６は、上記エリア抽出処理及びユーザ抽出処理を繰り返させる。この場合、エリア抽出処理及びユーザ抽出処理を繰り返すので、所定の行動が多くの場所に関連付けられていなくても、適切に所定の行動を行う場所及び当該行動を行うユーザを抽出することができる。
【０１１４】
処理制御部１６は、ユーザ抽出処理により抽出された候補ユーザの数又はエリア抽出処理により抽出された場所の数に基づいて繰り返し処理を終了させる。この場合、サーバ１０は、必要以上にユーザ抽出処理及びエリア抽出処理を繰り返さないようにするので、ユーザ抽出処理及びエリア抽出処理の負荷を軽減させることができる。
【０１１５】
上述の実施形態では、処理制御部１６は、ユーザ抽出処理とエリア抽出処理とを繰り返す場合について述べたが、繰り返さずに終了してもよい。この場合でも、候補ユーザに基づいて、候補エリアを抽出することができる。
【０１１６】
処理制御部１６は、ユーザ抽出処理及びエリア抽出処理の繰り返しを終了した後に、ユーザ抽出処理及びエリア抽出処理の抽出対象となる期間の内、一部の期間に、エリア抽出部１９により抽出されたエリア（行動を行うエリアとして確定されたエリア）に位置していたユーザ抽出部１７により抽出されたユーザ（行動を行うユーザとして確定されたユーザ）又は当該ユーザが位置していたエリアを特定し、当該特定した結果に基づいて、当該エリア、又は当該ユーザの取り消しを行う。この場合、ユーザ抽出処理及びエリア抽出処理の抽出対象の期間の一部に含まれる時刻に対応する位置ログを用いて、抽出されたエリアに位置していたユーザ、又は、当該ユーザが位置していたエリアを特定し、当該特定した結果に基づいて、抽出したエリア又はユーザを取り消すので、行動に関連付かなくなったユーザ又はエリアを抽出結果として残してしまうことを回避することができる。なお、上述のように、一度確定させたエリア又はユーザに対して取り消し処理を行わずに残すようにしてもよい。
【０１１７】
上述の実施形態では、ユーザ抽出処理及びエリア抽出処理の繰り返しを終了した後に、処理制御部１６によるカテゴリ毎におけるユーザの行動変化の判断をして、取り消し対象であるユーザについて、行動を行うユーザとして確定していた状態を取り消す処理をすることを述べた。また、処理制御部１６は、エリアの特性変化の判断をして、取り消し対象であるエリアについて、行動を行うエリアとして確定していた状態を取り消す処理をすることを述べた。これらの代わりに、処理制御部１６による妥当性チェックをする前に、上記カテゴリ毎におけるユーザの行動変化の判断及びエリアの特性変化の判断をするようにしてもよい。すなわち、処理制御部１６は、候補エリア又は候補ユーザを対象として、ユーザの行動変化の判断及びエリアの特性変化の判断をするようにしてもよい。
【０１１８】
上記の行動変化の判断をした結果、ユーザ毎に算出した判断値が上記行動変化閾値を下回る場合（ユーザの行動変化がある場合）、処理制御部１６は、当該判断値に係るユーザの取り消し処理として、候補ユーザであることを取り消す処理をしてもよい。具体的に、処理制御部１６は、ユーザ抽出テーブルにおける、取り消し対象となるユーザ（判断値に係るユーザ）を示すユーザＩＤであり、且つ行動のカテゴリに対応するレコードの「ｉｓＱｕｉｔｔｉｎｇ」欄に入力されている「Ｆａｌｓｅ」を「Ｔｒｕｅ」に変更することにより、候補ユーザであることを取り消してもよい。
【０１１９】
また、上記のエリアの特性変化の判断をした結果、エリア毎に算出した判断値が、上記特性閾値を下回る場合（エリアの特性変化がある場合）、処理制御部１６は、当該判断値に係るエリアの取り消し処理として、候補エリアであることを取り消す処理をしてもよい。具体的に、処理制御部１６は、エリア抽出テーブルにおける、取り消し対象となるエリア（判断値に係るエリア）を示すエリアＩＤであり、且つ行動のカテゴリに対応するレコードの「ｉｓＣｌｏｓｉｎｇ」欄に入力されている「Ｆａｌｓｅ」を「Ｔｒｕｅ」に変更することにより、候補エリアであることを取り消してもよい。
【０１２０】
エリア抽出部１９は、候補ユーザの位置ログと、行動を行うと推定されていないユーザの位置ログとを比較して、比較の結果に基づいて行動を行う場所を抽出する。この場合、比較した結果に基づいて抽出するので、候補ユーザの位置ログから導かれる特有の位置を特定することができるので、より正確に所定の行動を行う場所を抽出することができる。
【０１２１】
上述の実施形態では、エリア抽出部１９は、個々のクラスタについて、クラスタ円内に収まる滞留点と、そのユーザを抽出し、候補ユーザ数と、全ユーザ数との比に基づいて候補エリアを決定したが、上記候補ユーザ数のみに基づいて候補エリアを決定するようにしてもよい。例えば、エリア抽出部１９は、候補ユーザ数がエリア閾値以上である場合に候補エリアであると判断するようにしてもよい。この場合でも、候補ユーザでないと訪問しないエリアであれば、適切に候補エリアを抽出することができる。
【０１２２】
滞留点抽出部１４は、同一ユーザの位置ログに基づいてユーザ滞留した位置を示す滞留点を抽出し、ユーザ抽出部１７は、当該滞留点に基づいて候補ユーザを抽出し、エリア抽出部１９は、滞留点に基づいて行動を行う場所を抽出する。この場合、ユーザが一定範囲内に位置していた場所（滞留した位置）における特性を推定するので、ユーザが単に通過した位置等、推定する必要の無い位置に対して推定してしまうことを回避することができる。
【０１２３】
上述の実施形態では、滞留点抽出部１４によって抽出される滞留点に基づいて、候補エリア及び候補ユーザを抽出する場合について述べたが、滞留点を抽出せずに位置ログに基づいて候補エリア及び候補ユーザを抽出するようにしてもよい。例えば、候補エリアに示される範囲が、位置ログに示される位置に含まれる場合又は候補エリアに示される範囲内の位置に含まれる位置ログが、予め記憶されている閾値である位置ログ閾値以上である場合に、当該位置ログのユーザＩＤのユーザが、当該候補エリアを利用したと判断して、候補ユーザを抽出するようにしてもよい。
【０１２４】
滞留点抽出部１４は、滞留点と共に、位置履歴の時刻に基づいて滞留していた期間を算出し、ユーザ抽出部１７は、当該期間の長さ又は間隔に基づいて候補ユーザを抽出する。この場合、滞留していた期間を考慮して候補ユーザを抽出するので、より正確に候補ユーザを抽出することができる。なお、ユーザ抽出部１７は、当該期間の長さ又は間隔に基づいて候補ユーザを抽出せずに、位置ログに基づく位置（例えば、滞留点に基づく位置）と候補エリアとに基づいて候補ユーザを抽出するようにしてもよい。すなわち、上述の処理のフィルタリング条件を用いた滞留点の絞り込み、及びユーザ毎のスコアリングを省略して候補ユーザを抽出してもよい。
【０１２５】
情報受信部１１は、端末の状態に基づいた状態情報を取得し、ユーザ抽出部１７は、当該状態情報に基づいて候補ユーザを抽出する。この場合、ユーザの位置だけでなく、ユーザの端末の状態情報に基づいて候補ユーザを抽出するので、より正確に候補ユーザを抽出することができる。なお、上述のように、端末ログを用いずに候補ユーザを抽出するようにしてもよい。
【０１２６】
上述の実施形態では、予め取得したエリア情報に基づいて、候補ユーザを抽出して、さらに当該候補ユーザの滞留点に基づいて、候補エリアを抽出する場合について述べた。この代わりに、候補ユーザの情報（ユーザＩＤ、行動のカテゴリ）を予め取得し、当該情報をユーザ抽出テーブルに入力しておき、当該候補ユーザの情報を用いて、エリア抽出及びユーザ抽出をするようにしてもよい。例えば、当該候補ユーザのユーザＩＤを有する位置ログと、当該候補ユーザとは異なるユーザＩＤを有する位置ログとを取得し、当該候補ユーザの情報から候補エリアを抽出して、当該候補エリアに含まれる滞留点のユーザから候補ユーザを抽出するようにしてもよい。
【０１２７】
この場合、予め取得した候補ユーザの情報から候補エリアを推定し、推定した候補エリアに基づいて、行動を行うユーザとして抽出するので、適切に所定の行動を行うユーザを抽出することができる。
【０１２８】
また、上記の場合、さらに候補エリアを抽出し、候補ユーザの抽出処理と候補エリアの抽出処理を繰り返すようにしてもよい。この場合、ユーザ抽出処理及びエリア抽出処理を繰り返すので、所定の行動が多くの場所に関連付けられていなくても、適切に所定の行動を行う場所及び当該行動を行うユーザを抽出することができる。
【０１２９】
上述の実施形態では、ユーザ処理により抽出された候補ユーザの数又はエリア抽出処理により抽出された数に基づいて繰り返し処理をするか否かを判断する場合について述べた。処理制御部１６が繰り返し回数の情報を記憶しておき、当該繰り返し回数分繰り返すようにしてもよい。
【０１３０】
上述の実施形態では、処理制御部１６が、抽出期間と、直近から一定の抽出期間より短い期間のそれぞれの抽出結果に基づいて、取り消し処理をする場合について述べた。この代わりに、処理制御部１６が、直近から一定の、抽出期間より短い期間の抽出結果にのみ基づいて取り消し処理をするようにしてもよい。例えば、処理制御部１６が、ユーザの行動変化を判断する場合、直近○日の期間中に行動を行うエリア内でユーザが検出された日数を特定し、当該日数と日数の閾値である日数閾値とを比較する。処理制御部１６は、当該比較した結果、日数閾値を下回る場合にユーザの変化があると判断するようにしてもよい。
【０１３１】
上述の実施形態では、処理制御部１６が、エリア抽出を終了した旨の通知受信した後に、ユーザを抽出する処理及び場所を抽出する処理を繰り返す必要があるか否かを判断する場合について述べた。ユーザ抽出を終了した旨の通知をユーザ抽出部１７から受信した後に判断するようにしてもよい。
【符号の説明】
【０１３２】
１０…サーバ、１１…情報受信部、１２…端末ログ記憶部、１３…位置ログ記憶部、１４…滞留点抽出部、１５…滞留点記憶部、１６…処理制御部、１７…ユーザ抽出部、１８…抽出結果記憶部、１９…エリア抽出部、２０…出力部、３０…端末、１０１…ＣＰＵ、１０２…ＲＡＭ、１０３…ＲＯＭ、１０４…通信モジュール、１０５…補助記憶装置。
【図１】
0006591258.tif 000003
【図２】
0006591258.tif 000004
【図３】
0006591258.tif 000005
【図４】
0006591258.tif 000006
【図５】
0006591258.tif 000007
【図６】
0006591258.tif 000008
【図７】
0006591258.tif 000009
【図８】
0006591258.tif 000010
【図９】
0006591258.tif 000011
【図１０】
0006591258.tif 000012
【図１１】
0006591258.tif 000013
【図１２】
0006591258.tif 000014
【図１３】
0006591258.tif 000015