(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022189478
(43)【公開日】2022-12-22
(54)【発明の名称】情報処理装置、情報処理方法、及び、プログラム
(51)【国際特許分類】
G06Q 30/02 20120101AFI20221215BHJP
G01S 5/02 20100101ALI20221215BHJP
【FI】
G06Q30/02
G01S5/02 Z
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2021098071
(22)【出願日】2021-06-11
(71)【出願人】
【識別番号】000130581
【氏名又は名称】サトーホールディングス株式会社
(74)【代理人】
【識別番号】110000165
【氏名又は名称】グローバル・アイピー東京特許業務法人
(72)【発明者】
【氏名】立浪 秀喜
【テーマコード(参考)】
5J062
5L049
【Fターム(参考)】
5J062BB05
5J062CC18
5L049BB01
(57)【要約】
【課題】エリア内の対象者の移動履歴データから、より有用な対象者の行動を解析する。
【解決手段】所定の移動可能エリア内を移動する対象者と共に移動する通信デバイスの位置を示す位置情報と時刻情報とを対応付けた移動履歴データを取得する第1取得部と、第1取得部によって取得された移動履歴データに基づき、対象者が滞在した可能性がある1以上のエリアを取得する第2取得部と、第2取得部によって取得された1以上のエリアを表示装置に表示させる表示制御部と、を有する、情報処理装置である。
【選択図】
図5
【特許請求の範囲】
【請求項1】
所定の移動可能エリア内を移動する対象者と共に移動する通信デバイスの位置を示す位置情報と時刻情報とを対応付けた移動履歴データを取得する第1取得部と、
前記第1取得部によって取得された移動履歴データに基づき、前記対象者が滞在した可能性がある1以上のエリアを取得する第2取得部と、
前記第2取得部によって取得された1以上のエリアを表示装置に表示させる表示制御部と、を有する、
情報処理装置。
【請求項2】
前記第2取得部は、
前記移動履歴データと、前記移動可能エリア内に予め設定されたポイントとに基づき、1以上の前記ポイントを前記対象者が滞在した可能性がある滞在時間ごとにグループ化してエリアとして取得する、
請求項1に記載の情報処理装置。
【請求項3】
前記第2取得部は、
前記移動履歴データから、前記ポイントごとに前記対象者が滞在した可能性がある滞在開始時刻と滞在終了時刻とを対応付けたエリア処理用データを生成し、生成したエリア処理用データの前記滞在開始時刻及び前記滞在終了時刻に基づき、前記1以上のポイントをグループ化してエリアとして取得する、
請求項2に記載の情報処理装置。
【請求項4】
前記第2取得部は、
前記ポイントごとに生成した前記エリア処理用データを、前記滞在開始時刻に基づいて時刻順にグルーピングし、グルーピングした1以上のエリア処理用データのうち前記滞在開始時刻が最も早い時刻と、前記滞在終了時刻が最も遅い時刻とを用いて、前記グルーピングした1以上のエリア処理用データをグループ化してエリアとして取得する、
請求項3に記載の情報処理装置。
【請求項5】
前記第2取得部によって取得されたエリアと、当該エリアに対して前記対象者が滞在した可能性がある滞在時間の長さとに基づいて、前記対象者の行動を解析する解析部を備える、
請求項1から4のいずれか一項に記載の情報処理装置。
【請求項6】
前記解析部は、二人以上の前記対象者に対して取得されたエリアの重なりの程度、及び/又は、前記エリアの中心位置同士の距離に基づいて、前記二人以上の対象者の関係を特定する、
請求項5に記載された情報処理装置。
【請求項7】
前記解析部は、前記移動可能エリアに配置された設備が前記対象者に対して取得されたエリア内に位置しているか否か、及び/又は、前記設備の位置と前記エリアの中心位置との距離に基づいて、前記対象者と前記設備との関係を特定する、
請求項5又は6に記載された情報処理装置。
【請求項8】
前記第2取得部は、
同一のポイントを含む2以上のエリア処理用データを生成する場合には、前記2以上のエリア処理用データの間で当該ポイントに対応する前記対象者の滞在時間が所定時間以上離れるようにする、
請求項2から7のいずれか一項に記載された情報処理装置。
【請求項9】
前記第2取得部によって取得されたエリアは円形であって、円の大きさは、前記エリアに含まれる前記ポイントの位置に基づいて決定される、
請求項2から8のいずれか一項に記載された情報処理装置。
【請求項10】
前記ポイントは、前記移動可能エリア内において一定距離の間隔で設定されている、
請求項2から9のいずれか一項に記載された情報処理装置。
【請求項11】
前記表示制御部は、前記第2取得部によって取得されたエリアを、前記滞在時間の長さに応じて異なる態様で前記表示装置に表示させる、
請求項1から10のいずれか一項に記載された情報処理装置。
【請求項12】
所定の移動可能エリア内を移動する対象者と共に移動する通信デバイスの位置を示す位置情報と時刻情報とを対応付けた移動履歴データを取得し、
前記取得された移動履歴データに基づき、前記対象者が滞在した可能性がある1以上のエリアを取得し、
前記取得された1以上のエリアを表示装置に表示させる、
情報処理方法。
【請求項13】
コンピュータに所定の方法を実行させるプログラムであって、
前記方法は、
所定の移動可能エリア内を移動する対象者と共に移動する通信デバイスの位置を示す位置情報と時刻情報とを対応付けた移動履歴データを取得するステップと、
前記取得された移動履歴データに基づき、前記対象者が滞在した可能性がある1以上のエリアを取得する第2ステップと、
前記取得された1以上のエリアを表示装置に表示させるステップと、を含む、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法、及び、プログラムに関する。
【背景技術】
【0002】
従来から、例えば消費者や従業員等、利用者の構内フロアにおける行動を解析することが求められている。例えば、スーパーマーケット、ショッピングモール等の商業施設において、利用者の消費動向を把握し、さらに販売を増加させるため、利用者がどのように施設内を行動しているかについての情報を解析することが求められている。
【0003】
このような利用者の行動解析のための様々な手法が提案されている。例えば、ショッピングエリア内において利用者が携行可能であって、商品が収容される可搬コンテナに配設される信号発信器から発信される信号を受信することで、ショッピングフロアにおける利用者の行動ログ(移動履歴)を集積するようにした、位置情報収集装置が提案されている(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来のシステムでは、信号発信器から発信される信号を受信することで対象者のフロアにおける動線情報を取得することができる。しかし、動線情報では、例えば対象者のフロアにおける滞在エリアと滞在時間等から対象者が何をしていたのか等の対象者の行動を定義付けることが難しく、対象者の行動を解析する上で有用な情報とは言い難い。
そこで、本発明は、エリア内の対象者の移動履歴データから、より有用な対象者の行動を解析することを目的とする。
【課題を解決するための手段】
【0006】
本発明のある態様は、所定の移動可能エリア内を移動する対象者と共に移動する通信デバイスの位置を示す位置情報と時刻情報とを対応付けた移動履歴データを取得する第1取得部と、前記第1取得部によって取得された移動履歴データに基づき、前記対象者が滞在した可能性がある1以上のエリアを取得する第2取得部と、前記第2取得部によって取得された1以上のエリアを表示装置に表示させる表示制御部と、を有する、情報処理装置である。
【発明の効果】
【0007】
本発明のある態様によれば、エリア内の対象者の移動履歴データから、より有用な対象者の行動を解析することができる。
【図面の簡単な説明】
【0008】
【
図1】実施形態の行動解析システムを概略的に示す図である。
【
図2】タグ検出データリストのデータ構成例を示す図である。
【
図3】例示的なフロアにおいて1つの無線タグの動線を例示する図である。
【
図4】店舗端末に表示される画面例を示す図である。
【
図5】実施形態の行動解析システムの各装置の内部構成を示すブロック図である。
【
図6】行動解析システムにおいて実行される行動解析処理の全体処理を示す図である。
【
図7】エリア処理用データリストのデータ構成例を示す図である。
【
図8】例示的なフロアにおいて設定される仮想ポイントを示す図である。
【
図9】滞在エリアデータリストのデータ構成例を示す図である。
【
図10】エリア処理用データリスト生成処理を示すフローチャートである。
【
図11】検出位置の移動例と、各検出位置に対して設定される円とを例示する図である。
【
図12】作業中データリストと更新用キーリストのデータ構成例を示す図である。
【
図13】
図10の作業中データリスト生成処理を示すフローチャートである。
【
図14】
図10の組み込み処理の詳細を示すフローチャートである。
【
図15】グルーピング処理を示すフローチャートである。
【
図16】
図15の集約グループの生成処理の詳細を示すフローチャートである。
【
図17】
図16の集約グループの生成処理において、処理対象のグループに対する処理例を説明する図である。
【
図18】滞在エリアデータリスト生成処理を示すフローチャートである。
【
図19】第1例の利用者の行動について行動解析処理を説明する図である。
【
図20】第1例の利用者の行動について行動解析処理を説明する図である。
【
図21】第1例の利用者の行動について行動解析処理を説明する図である。
【
図22】第1例の利用者の行動について行動解析処理を説明する図である。
【
図23】第2例の利用者の行動について行動解析処理を説明する図である。
【
図24】第2例の利用者の行動について行動解析処理を説明する図である。
【
図25】第2例の利用者の行動について行動解析処理を説明する図である。
【
図26】第2例の利用者の行動について行動解析処理を説明する図である。
【発明を実施するための形態】
【0009】
以下、対象者と共に所定の移動可能範囲内を移動する通信デバイスが発信する情報に基づいて、対象者の位置情報を取得し、対象者の行動を解析する行動解析システムに適用される情報処理装置、情報処理方法、及び、プログラムの態様について説明する。
一実施形態の行動解析システムの適用例として、スーパーマーケット等の小売店の店舗のフロアにおける対象者の行動を解析するシステムが挙げられる。以下では、このシステムについて説明する。小売店の店舗のフロアにおける対象者の行動を解析する場合には、対象者が運搬する買い物カートや買い物かご等に通信デバイスとして無線タグ(発信装置)を取り付けるとよい。しかし、その限りではなく、対象者がスマートフォン等の通信端末を所持している場合には、当該通信端末を対象者の位置情報を取得するための通信デバイスとして利用することができる。通信デバイスは、スマートフォンのほか、タブレット端末でもよいし、ウェアラブル端末でもよい。
時刻の経過に応じた対象者の位置情報を取得するのみでは、対象者の動線情報が得られるに過ぎず、店舗内の対象者の行動を十分に認識することができない。そこで、一実施形態の行動解析システムでは、例えば対象者が店舗のフロアにおいてどの辺りの場所に滞在していたかという情報を取得して、対象者の行動解析処理を行う。
【0010】
(1)行動解析システムの概要
本実施形態の行動解析システム1の概要について、図面を参照して説明する。
図1は、本実施形態の行動解析システム1を概略的に示す図である。
図2は、タグ検出データリストのデータ構成例を示す図である。
図3は、
図1に例示する店舗のフロアFL(移動可能エリアの一例)の平面図であり、1つの無線タグの動線Mの一例が表示されている。
なお、
図1及び
図3では、店舗の所定の位置を基準としてXYZ座標系が定義される。
【0011】
図1に示すように、本実施形態の行動解析システム1は、店舗を利用する利用者(対象者の一例)が使用するカートCTに取り付けられた無線タグ2、受信機3、店舗端末4、及び、サーバ5(情報処理装置の一例)を備える。
図1では、カートCTに無線タグ2が取り付けられる場合を示しているが、カートCT上の買い物かご(図示せず)に無線タグ2を取り付けてもよい。
【0012】
無線タグ2は通信デバイスの一例であり、例えば比較的小型の無線通信装置(発信装置)である。
受信機3とサーバ5は、ネットワークNWで接続され、利用者の店舗内での位置を特定する位置特定システムを構成する。ネットワークNWは、例えば、セルラー網や、Wi-Fi網、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)、公衆回路、専用回路、無線基地局等である。
無線タグ2と受信機3との通信プロトコルは問わないが、例えば、Wi-Fi(登録商標)、Bluetooth(登録商標)Low Energy(以下、BLE)等が挙げられる。
【0013】
図1において、無線タグ2の位置測位は、例えば店舗の天井に受信機3(ロケータ)を設置し、受信機3が、利用者が使用するカートの無線タグ2から放射される電波(ビーコン信号)を受信し、受信したビーコン信号の入射角を算出するAOA(Angle of Arrival)方式を利用する。受信機3は、無線タグ2から受信するビーコン信号の入射角(到来方向)を測定し、測定した入射角の情報をサーバ5に送る。サーバ5では、送信元の受信機3の店舗内での位置(XYZ座標の位置)と、当該位置を基準とした入射角とから、無線タグ2の位置(XY座標)を取得する。
【0014】
1つの受信機3(ロケータ)によっても無線タグ2の位置を取得可能であるが、ビーコン信号の受信信号強度(RSSI)の大きさや店舗面積、店舗の電波環境に応じて、より多くの受信機3を設けることが好ましい。例えば、店舗の天井には、等間隔で受信機3を配置し、売り場が密集している場所等の特に測位精度が要求される場所には、より短い間隔で受信機3を配置することが好ましい。
【0015】
なお、無線タグ2の位置測位の方法はAOA方式に限定するものではなく、TOA(Time of Arrival)方式等の他の方法を利用してもよい。
無線タグ2の測位間隔は、任意に設定してよいが、利用者の行動を正確に把握するために必要な時間(例えば、100ms~2秒)に設定される。
【0016】
サーバ5は、店舗内の利用者の位置(つまり、無線タグ2の位置)を測位して
図2に示すタグ検出データリスト(移動履歴データの一例)を取得する。
図2に示すように、タグ検出データリストは、無線タグ2を識別する識別情報(タグID)と、検出位置(フロアFL上の座標のx,yの値)と、タイムスタンプとを1つの検出データとするリストである。タイムスタンプは、時刻と等価なデジタル値である。
図2に示す例では、タイムスタンプは、1/1000秒単位での相対的な時刻を表している。タグ検出データリストに含まれる検出位置をフロアFL上にプロットして時刻順に連結することで、
図3に例示した動線Mが形成される。
サーバ5は、後述する行動解析プログラムを実行することで、利用者が滞在した可能性のあるエリア(以下、「滞在エリア」という。)を取得するときの基礎となる滞在エリアデータリスト(後述する)を生成する。また、サーバ5は、後述する描画プログラムを実行することで、利用者の滞在エリアを可視化した画像を生成する。
以下の説明では、行動解析プログラム及び描画プログラムを実行することで表示される画像(利用者の滞在エリアを可視化した画像)を、適宜「利用者滞在エリア画像」という。
【0017】
図4に、サーバ5によって生成される利用者滞在エリア画像の例を示す。
図4の利用者滞在エリア画像は、
図3の動線Mの基礎となるタグ検出データリストから生成されたものである。
図4では、利用者の移動を示す矢印付き線ALに加えて、利用者の滞在エリアを示す複数の円を含む。複数の円は、同心円である最大円C
maxと中央円C
medの2つの円の組合せを含む。
同心円である最大円C
maxと中央円C
medは、利用者の滞在エリア(例えば、立ち止まったり、近場をうろついたりした範囲)を示している。最大円C
maxは、利用者の滞在エリアの最大値を示し、中央円C
medは、利用者の滞在エリアの中央値を示している。
【0018】
図4の利用者滞在エリア画像は、
図3に示した動線Mと比較すると、利用者の移動経路だけでなく、移動中の利用者が途中で立ち止まったり、近場をうろついたりしたことを示す滞在エリアをエリアの大きさにより可変的に捉えることができるため、利用者の行動が解析しやすい。
【0019】
店舗端末4は、例えば、店舗の事務所等に配置され、例えば、パーソナルコンピュータ、タブレット端末等の表示パネルを備えた端末である。店舗端末4は、ネットワークNWを介してサーバ5と通信可能であり、例えば、利用者滞在エリア画像をサーバ5から取得して表示パネル等の表示装置に表示するように構成されている。
なお、一実施形態では、店舗端末4は、上記描画プログラムを実行可能であってもよい。その場合、店舗端末4は、サーバ5から滞在エリアデータリスト(後述する)を取得し、描画プログラムを実行することで利用者滞在エリア画像を生成して表示装置に表示するように構成される。
【0020】
(2)行動解析システムの内部構成
次に、行動解析システム1の内部構成について、
図6のブロック図を参照して説明する。
【0021】
図5に示すように、無線タグ2は、例えば、制御部21と、通信部22とを備える。
制御部21は、マイクロプロセッサを主体として構成され、無線タグ2の全体を制御する。例えば、制御部21は、受信信号及び送信信号に対する処理(ベースバンド信号の処理)を行う。
通信部22は、受信機3と通信を行うためのインタフェースであり、例えば、受信機3への送信信号(例えばビーコン信号)の変調を行い、例えばBLEに従ってブロードキャスト送信する。ビーコン信号には、無線タグ2のタグIDが含まれる。
【0022】
図5に示すように、受信機3は、例えば、電波受信部31と、入射角測定部32と、通信部33とを備える。
電波受信部31は、無線タグ2から送信されるビーコン信号(電波)を受信するアンテナを含む。
入射角測定部32は、電波受信部31で受信した無線タグ2からの電波の入射角を測定する。
通信部33は、無線タグ2及びサーバ5と通信を行うためのインタフェースである。例えば、通信部33は、無線タグ2からの受信信号を復調する。また、通信部33は、入射角測定部32によって測定された入射角の情報を、受信したビーコン信号に含まれる無線タグ2のタグIDと対応付けて、ネットワークNWを介してサーバ5に送信する。
【0023】
図5に示すように、店舗端末4は、例えば、制御部41と、表示部42と、通信部43とを備える。
制御部41は、マイクロプロセッサを主体として構成され、店舗端末4の全体を制御する。店舗端末4に描画プログラムがインストールされている場合、制御部41は、描画プログラムを実行し、サーバ5から取得する滞在エリアデータリスト(後述する)を基に利用者滞在エリア画像を生成する。
表示部42は、例えば、LCD(Liquid Crystal Display)パネル等の表示パネルと、表示パネルを駆動する駆動回路と、を含む。表示部42は、例えば、制御部41によって生成された利用者滞在エリア画像を表示する。
通信部43は、ネットワークNWを介してサーバ5との通信を行うための通信インタフェースとして機能する。
【0024】
図5に示すように、サーバ5は、例えば、制御部51と、ストレージ52と、通信部53とを備える。
制御部51は、マイクロプロセッサを主体として構成され、サーバ5の全体を制御する。例えば、制御部51のマイクロプロセッサが行動解析プログラム及び描画プログラムを実行することで、第1取得部511、第2取得部512、及び、表示制御部513として機能する。
第1取得部511は、フロア内を移動する利用者と共に移動する無線タグ2の1以上の検出データからなる検出データセットDSを取得する。なお、
図2に示すように、検出データセットDSとは、例えば、タグ検出データリストから取得される連続する所定数の検出データである。
第2取得部512は、第1取得部511によって取得された検出データセットDSに基づき、利用者が滞在した可能性がある1以上のエリアを取得する。
表示制御部513は、第2取得部によって取得された1以上のエリアを店舗端末4の表示装置に表示させる。
【0025】
一実施形態では、第2取得部512は、検出データセット(移動履歴データの一例)と、フロア内に予め設定された仮想ポイントとに基づき、1以上の仮想ポイントを、利用者が滞在した可能性がある滞在時間ごとにグループ化して滞在エリアとして取得する。ここでの「滞在時間」とは、仮想ポイントによって特定されるフロアFL上の位置の近くに利用者が滞在した時間である。仮想ポイントの近さの程度は、例えば以下で述べるように、仮想ポイントを中心とした所定範囲の円によって特定される。
仮想ポイントとは、例えば、店舗のフロアFL上においてX軸方向及びY軸方向に一定間隔に設定された仮想的なポイントである(
図8を参照)。仮想ポイントは、利用者の店舗フロアにおける滞在エリアの情報を取得するために設けられている。無線タグ2の検出誤差を考慮すると、無線タグ2の検出位置を中心とした所定範囲の円に含まれる仮想ポイントは、利用者の滞在エリアに含まれると考えられる。そこで、無線タグ2の検出位置の移動に伴って移動する検出位置を中心とした円に含まれる1以上の仮想ポイントを取得し、後述する情報処理を行うことで、店舗における利用者の滞在エリアを特定することができる。
【0026】
一実施形態では、第2取得部512は、検出データセットから、エリア処理用データを生成し、生成したエリア処理用データのスタートタイムスタンプ(滞在開始時刻)及びエンドタイムスタンプ(滞在終了時刻)に基づき、仮想ポイントをグループ化して滞在エリアとして取得する。
後述するように、エリア処理用データは、仮想ポイントごとに、利用者が滞在した可能性がある滞在時間のスタートタイムスタンプ(滞在開始時刻)とエンドタイムスタンプ(滞在終了時刻)とを対応付けたデータである。仮想ポイントを滞在時間のスタートタイムスタンプとエンドタイムスタンプとに対応付けることで、利用者の滞在エリアをより正確に特定することができる。
なお、以下の説明や添付される図面では、エリア処理用データは、仮想ポイントに対する利用者の滞在時間に対応付けられるが、仮想ポイントに対する利用者の滞留時間に対応付けられるデータとして捉えることもできる。
【0027】
ストレージ52は、例えばHDD(Hard Disk Drive)装置等の大容量記憶装置であり、店舗マップ、タグ検出データリスト(
図2参照)、及び、滞在エリアデータリストを格納する。
店舗マップは、店舗のフロアの設備の位置や通路等の2次元情報を含む。滞在エリアデータリストについては後述するが、行動解析プログラムの実行結果であり、利用者滞在エリア画像を生成する基礎となるものである。
通信部53は、ネットワークNWを介して、受信機3、及び、店舗端末4との通信を行うための通信インタフェースとして機能する。
【0028】
(3)利用者行動解析処理
次に、
図6~
図18を参照して、サーバ5が行動解析プログラム及び描画プログラムを実行することによって実現される利用者行動解析処理について説明する。
サーバ5による利用者行動解析処理では、無線タグ2を識別するタグIDごとに情報処理が行われるが、以下の説明では、特定のタグID及び特定の日付に対する情報処理について説明する。なお、実施形態においては、以下に記載していない各種処理(例えばタグIDごとや日付ごとにデータリストや処理対象のデータを関連付ける処理等)についても適宜実行される。
【0029】
(3-1)全体の流れ
図6は、利用者行動解析処理のメインルーチンのフローチャートである。
図6のフローチャートに含まれる各処理は以下のとおりである。
【0030】
・エリア処理用データリスト生成処理(ステップS2)
サーバ5は先ず、エリア処理用データリスト生成処理を実行する。
エリア処理用データリスト生成処理は、タグ検出データリスト(
図2参照)を基にエリア処理用データリストを生成する処理である。エリア処理用データリストは、複数のエリア処理用データが含まれる。
図2に示したように、タグ検出データリストに含まれる各検出データは、タイムスタンプごとの利用者の検出位置(つまり、フロア上の点)の情報でしかないため、サーバ5は、無線タグ2の検出位置を基準とした所定範囲内にある仮想ポイントを検出することで、仮想ポイントごとの滞在時間のデータであるエリア処理用データを取得する。エリア処理用データは、利用者の滞在エリアを特定するための基礎となるデータである。
【0031】
・グルーピング処理(ステップS4)
サーバ5は、エリア処理用データリストを生成した後、エリア処理用データリストに含まれる1以上のエリア処理用データをグルーピングする処理を行う。エリア処理用データは、1つの仮想ポイントに対応付けられたデータであるため、利用者の滞在エリアに対応するデータとはなっていない。そこで、グルーピング処理では、利用者による1つの滞在エリア内におけるまとまった行動と考えられる1以上のエリア処理用データをグループ化する処理を行う。
【0032】
・滞在エリアデータリスト生成処理(ステップS6)
サーバ5は、グルーピング処理の後、滞在エリアデータリスト生成処理を行う。滞在エリアデータリスト生成処理は、グルーピング処理によってまとめられたグループごとに滞在エリアデータ(利用者の滞在エリアを示すデータ)を生成する処理である。
グルーピング処理で生成されるグループ(後述する集約グループ)は、仮想ポイントIDに対応するエリア処理用データの集合体であるため、エリアを直接的に示すデータとはなっていない。そこで、滞在エリアデータリスト生成処理では、グルーピング処理で生成される各グループを基に、利用者の滞在エリアを示す滞在エリアデータを含むリスト(滞在エリアデータリスト)を生成する。
【0033】
・描画処理(ステップS8)
サーバ5は、滞在エリアデータリスト生成処理の後、店舗マップ及び滞在エリアデータリストを基に描画処理を行う。描画処理を行うことで、
図4に例示した利用者滞在エリア画像が生成される。
【0034】
図7に、エリア処理用データリストのデータ構成例を示す。
図7に例示するように、一実施形態のエリア処理用データリストに含まれる1以上のエリア処理用データは、固有のエリア処理用IDに対応付けられており、仮想ポイントID、スタートタイムスタンプ、エンドタイムスタンプ、滞在時間の各値を含む。
ここで、仮想ポイントIDとは、
図8に例示するように、フロアFL上においてX軸方向及びY軸方向に一定間隔に設定された仮想ポイントVpを特定する識別情報である。仮想ポイントIDは、対応する仮想ポイントVpの位置(x,y)と関連付けられている。
各エリア処理用IDにおいて、滞在時間は、対応するエンドタイムスタンプからスタートタイムスタンプを減算した値であるが、例えば、秒の単位で示される。
エリア処理用データリストに含まれる各エリア処理用データは、利用者が、スタートタイムスタンプからエンドタイムスタンプまでの間、仮想ポイントIDに対応する仮想ポイントの近くにいた可能性が高いことを示している。
【0035】
図9に、滞在エリアデータリストのデータ構成例を示す。
図9に例示するように、一実施形態の滞在エリアデータリストの各滞在エリアデータは、スタートタイムスタンプ(滞在開始時刻)、エンドタイムスタンプ(滞在終了時刻)、滞在時間、円の中心座標(x,y)、エリア半径最大値、エリア半径中央値の各値を含む。円の中心座標とは、フロアの座標に対応付けられた座標であってもよい。
ここで、円の中心座標(x,y)からエリア半径最大値により形成される円が、
図4に示す利用者滞在エリア画像の最大円C
maxに対応する。円の中心座標(x,y)からエリア半径中央値により形成される円が、
図4に示す利用者滞在エリア画像の中央円C
medに対応する。最大円は、利用者が滞在した可能性がある範囲を示している。最大円は、利用者が滞在した可能性がある全体の範囲を把握するのに有用である。中央円は、最大円が示す範囲の中でも利用者が滞在した可能性が高い範囲を示している。中央円は、利用者の主な行動の範囲を把握するのに有用である。例えば、利用者の棚前の行動を解析する際には、利用者が滞在した可能性が高い利用者滞在エリア画像の中央円C
medを用いることができる。
【0036】
(3-2)エリア処理用データリスト生成処理
次に、上述した
図6のステップS2のエリア処理用データリスト生成処理の詳細について、
図10~
図14を参照して説明する。
図10に、エリア処理用データリストの生成処理の全体フローを示す。この処理では、まず、
図2に示すタグ検出データリストから処理対象の連続する所定数の検出データを取得し、所定数の検出データから得られる仮想ポイントIDに基づいて、エリア処理用データの元となる仮エリア処理用データを含む作業中データリストを生成する。
図10の例では、タグ検出データリストに対するリアルタイムのデータ処理、大量のデータに対する一括的なデータ処理によるリソース枯渇を防ぐ観点で、所定数の検出データをバッファに入れて繰り返し処理する場合を示している。処理を実行する時点では、例えばそれ以前に生成されたエリア処理用データリストが存在するため、作業中データリストを生成した後に、作業中データリストの各仮エリア処理用データを、生成済みエリア処理用データに組み込む組み込み処理を行う。
【0037】
図10に示すように、サーバ5は、タグ検出データリストから、処理対象の連続する所定数の検出データからなる検出データセットDSを取得する(ステップS10)。次いでサーバ5は、検出データセットDSの各検出データの検出位置(x,y)から所定範囲に含まれる仮想ポイントIDのセットである仮想ポイントセットPSを取得する(ステップS12)。仮想ポイントセットPSは、検出データごとに取得される。
【0038】
サーバ5は、仮想ポイントセットPSを取得した後、検出データセットDSから処理対象の検出データ(「注目データ」という。)を順次抽出する(ステップS14)。サーバ5は、検出データに対して取得された仮想ポイントセットPSのうち各仮想ポイントIDを処理対象の仮想ポイントID(「注目ポイントID」という。)として順次抽出し(ステップS16)、作業中データリスト生成処理を行う(ステップS18)。
【0039】
作業中データリストは、1以上の仮エリア処理用データを含むリストである。仮エリア処理用データは、ステップS10で取得した所定数の検出データ(つまり、検出データセットDS)に基づいて生成される。
サーバ5は、検出データセットDSの各検出データに対して作業中データリスト生成処理を実行することで、ステップS10で取得された検出データセットDSに対応する作業中データリストを完成させる(ステップS20、ステップS22)。
作業中データリストが完成すると、サーバ5は、組み込み処理を実行する(ステップS24)。組み込み処理は、作業中データリストに含まれる1以上の仮エリア処理用データを生成済みエリア処理用データリストに組み込む処理である。生成済みエリア処理用データリストが存在する場合には、仮エリア処理用データを生成済みエリア処理用データリストに組み込む。
所定数の検出データに対する処理が終了した後は、タグ検出データリストから新たな所定数の検出データを取得して同様の処理を行う(ステップS26:YES)。タグ検出データリストのすべての検出データに対する処理が終了すると(ステップS26:NO)、エリア処理用データリスト生成処理が終了する。
【0040】
図11は、仮想ポイントセットPSの取得方法を説明する図であり、検出位置の移動例と、各検出位置に対して設定される円とを例示している。
図11は、例示的な検出データセットDSの一部である連続する3個の検出データについて、検出位置D1~D3と、各検出位置を中心とした所定範囲を示す円C1~C3と、を示している。例えば、検出位置D1に対応する検出データからは、円C1に含まれる8個の仮想ポイントVp1~Vp8に対応する仮想ポイントIDが取得される。8個の仮想ポイントVp1~Vp8は、検出位置D1に対応する検出データに対して取得される仮想ポイントセットPSの一例である。
図11に示す例は、利用者が検出位置D1→D2→D3の経路で移動していることを示している。
図11に示すように、利用者の移動に伴って各検出位置に対応する円C1~C3が移動することになり、円C1~C3のそれぞれに含まれる仮想ポイントセットPSの仮想ポイントVpは、時間の経過とともに変化する。
【0041】
検出位置を中心とした所定範囲に含まれる仮想ポイントVpを特定するのは、利用者の滞在エリアを特定するためである。すなわち、
図11の例では、利用者が検出位置D1→D2→D3の経路で移動していることを示しているが、検出データは、無線タグ2の検出誤差等のため、利用者が正確に検出位置にいたとは限らない。そこで、利用者が位置した可能性が高い範囲を特定するため、検出位置を中心とした所定範囲に含まれる仮想ポイントVpを特定する。
仮想ポイントVpが複数の円の中に共通して含まれることは、当該仮想ポイントVpが当該複数の円に対応する検出データに含まれるタイムスタンプによって特定される時間において、利用者が当該仮想ポイントVpの近傍に位置していたことを示している。つまり、当該時間を仮想ポイントVpにおける滞在時間として捉えることができる。
例えば、
図11に示す仮想ポイントVp1,Vp2は、円C1,C2の中に共通して含まれているため、検出位置D1,D2に対応する検出データに含まれるタイムスタンプによって特定される時間において、利用者が仮想ポイントVp1,Vp2の近傍に位置していたことを示している。仮想ポイントを設定する間隔は限定しないが、例えば0.1~1.0メートルである。
【0042】
ここで、
図12に、作業中データリストのデータ構成例と、
図13のフローで使用する更新用キーリストのデータ構成例とを示す。
図12に示すように、作業中データリストのデータ構成は、仮想ポイントID、更新用キー、スタートタイムスタンプ(滞在開始時刻)、エンドタイムスタンプ(滞在終了時刻)の各値を含む。
図12の各行がそれぞれ仮エリア処理用データを示す。なお、以降で参照する各図では、注目データのタイムスタンプを「mts」、更新用キーを「cmk」、スタートタイムスタンプ(滞在開始時刻)を「sts」、エンドタイムスタンプ(滞在終了時刻)を「ets」と表記することがある。
更新用キーとは、仮想ポイントIDに対応付けられたキーである。更新用キーは、作業中データリストにおいて、同一の仮想ポイントIDに対応して生成される複数の仮エリア処理用データを管理するために使用される。更新用キーリストは、初期状態では、すべての仮想ポイントIDに対応する更新用キーcmkがNULL(空)となる。
図12の例では、作業中データリストに、同一の仮想ポイントID(例えば、仮想ポイントID「10」)に対して異なる更新用キーcmk(例えば、更新用キー「0」,「1」,「2」)に対応する複数の仮エリア処理用データtemp_ADが含まれている。
【0043】
なお、
図13のフローにおいて、更新用キーcmkの値が更新される場合には、適宜、更新用キーリストで管理されている更新用キーcmkについても更新が行われる。作業中データリスト生成処理は、注目データ及び注目ポイントIDを新たに抽出する度に実行され、更新用キーリストから仮想ポイントIDに対応する更新用キーcmkが読み出された後、作業中データリストを実行中に更新用キーcmkの値が更新された場合、更新用キーリストにおける当該仮想ポイントIDに対応する更新用キーcmkの値についても更新される。
【0044】
次に、上述した
図10のステップS18の作業中データリスト生成処理の詳細フローを
図13に示す。
図13において、サーバ5は、更新用キーリストを参照し、仮想ポイントセットPSから抽出した注目ポイントIDに対応する更新用キーcmkがNULLであるか判断する(ステップS28)。注目ポイントIDに対応する更新用キーcmkがNULLである場合、初期化のために更新用キーcmkを「0」とする(ステップS30)。
次いで、サーバ5は、作業中データリストを参照し、作業中データリストのいずれかの行に、注目ポイントIDと現在の更新用キーcmkに対応する仮エリア処理用データtemp_ADが存在するか判断する(ステップS32)。存在しない場合には(ステップS32:NO)、注目データのタイムスタンプmtsよりも所定時間前(例えば5~15秒等の数秒前)のタイムスタンプをjtsとする(ステップS34)。
【0045】
ここで、所定時間前のタイムスタンプjtsを算出するのは、電波の揺れや一時的にデータが途切れる状況が生じた場合に、その影響を除外するためである。サーバ5は、生成済みエリア処理用データリストを参照し、注目ポイントIDと同じ仮想ポイントIDを含み、かつ所定時間前のタイムスタンプjts以上であって(所定時間前のタイムスタンプjtsの時刻と同じか、タイムスタンプjtsより遅く)、注目データに含まれるタイムスタンプmts以下である(タイムスタンプmtsの時刻と同じか、タイムスタンプmtsより早い)エンドタイムスタンプets(滞在終了時刻)のエリア処理用データが存在するか判断する(ステップS38)。サーバ5は、そのようなエリア処理用データが存在する場合、現在の更新用キーcmkに対応する仮エリア処理用データtemp_ADのスタートタイムスタンプsts(滞在開始時刻)をステップS38で特定されたエリア処理用データに含まれるスタートタイムスタンプsts(滞在開始時刻)とし、仮エリア処理用データtemp_ADのエンドタイムスタンプets(滞在終了時刻)を注目データに含まれるタイムスタンプmtsとする(ステップS42)。
【0046】
これによって、生成された仮エリア処理用データtemp_ADに含まれるスタートタイムスタンプsts(滞在開始時刻)が、生成済みエリア処理用データに含まれるスタートタイムスタンプsts(滞在開始時刻)と同一となるため、現在の更新用キーcmkに対応する仮エリア処理用データは、後の組み込み処理においてデータ更新の対象となる。組み込み処理では、ステップS38で特定された生成済みエリア処理用データと別個のエリア処理用データが新たに挿入されることがなくなり、電波の揺れや一時的にデータが途切れる状況が生じた場合の影響が除外される。
【0047】
ステップS38の条件を満たさない場合(ステップS38:NO)、サーバ5は、現在の更新用キーcmkに対応する仮エリア処理用データtemp_ADについて、スタートタイムスタンプsts及びエンドタイムスタンプetsを共に注目データのタイムスタンプmtsとする(ステップS44)。
【0048】
ステップS32において、作業中データリストにおいて注目ポイントIDと現在の更新用キーcmkに対応する仮エリア処理用データtemp_ADが存在する場合には(ステップS32:YES)、注目データのタイムスタンプmtsが、当該仮エリア処理用データtemp_ADに含まれるエンドタイムスタンプetsから所定値以上増加しているか(つまり、所定時間経過しているか)判断する(ステップS36)。
所定時間経過している場合には、ステップS32で特定された仮エリア処理用データとは区別するため、サーバ5は、更新用キーcmkを1増加させて(ステップS40)、作業中データリストに新たな更新用キーcmkに対応する仮エリア処理用データtemp_ADを生成する。サーバ5は、新たな仮エリア処理用データtemp_ADについて、スタートタイムスタンプsts(滞在開始時刻)及びエンドタイムスタンプets(滞在終了時刻)を共に注目データのタイムスタンプmtsとする(ステップS44)。
【0049】
すなわち、サーバ5は、注目データ(第1時刻としてのタイムスタンプmtsを含む)に対応する仮想ポイントと同一の仮想ポイントを含む生成済みエリア処理用データが存在し、かつ注目データのタイムスタンプmtsが、当該生成済みエリア処理用データのエンドタイムスタンプets(滞在終了時刻)より所定値以上(つまり、所定時間以上後の時刻)であるか判断する。所定値以上である場合には、注目データに対応する仮想ポイントに基づいて、当該生成済みエリア処理用データとは別の仮エリア処理用データを生成する。
例えば、上記
図11の移動例において、検出位置D1までの移動に基づいて、仮想ポイントVp1に対応するエリア処理用データ(スタートタイムスタンプsts:TS1,エンドタイムスタンプets:TS2)が生成済みである場合を想定する。さらに、検出位置D2に対して取得された検出データセットに、検出データ(仮想ポイントID:Vp1のID,タイムスタンプmts)が含まれている場合を想定する。この検出データを注目データとしたときに、タイムスタンプmtsがTS2を基準に所定時間以上経過した後の時刻に相当する場合には、生成済みのエリア処理用データと区別するために、仮想ポイントVp1に対応する仮エリア処理用データが別に生成される。
このようにすることで、電波の揺れではなく、利用者が移動したことを確実に検知して、既存のエリア処理用データと区別される仮エリア処理用データを生成することができる。
ステップS38,S44の処理を行うことで、後の組み込み処理において、同一の仮想ポイントを含む2以上のエリア処理用データの間で当該仮想ポイントに対応する滞在時間が所定時間以上離れるようにして、2以上のエリア処理用データが生成されることになる。
【0050】
ステップS36において、注目データのタイムスタンプmtsが、ステップS32で特定された仮エリア処理用データtemp_ADのエンドタイムスタンプets(滞在終了時刻)から所定値以上増加(つまり、所定時間以上経過)していない場合には、当該仮エリア処理用データtemp_ADのエンドタイムスタンプetsを注目データのタイムスタンプmtsに更新する(ステップS46)。すなわち、利用者が同じ位置に戻ってきた等の利用者の行動により、タイムスタンプmtsが近い異なる2つの検出データに対して同一の仮想ポイントIDが取得されたことを意味するため、この2つの検出データに基づいて1つの仮エリア処理用データが連結される。
【0051】
次に、
図14を用いて、組み込み処理について説明する。サーバ5は、作業中データリストからを処理対象の仮想ポイントID(「注目ポイントID」という。)に対応する1以上の仮エリア処理用データ(「注目データ群」という。)を順次抽出する(ステップS48)。サーバ5は、注目データ群から処理対象の更新用キーcmkに対応する注目データを順次抽出する(ステップS50)。ステップS52~S56の処理は、作業中データリストに含まれる仮エリア処理用データごとに実行される。
【0052】
サーバ5は、生成済みエリア処理用データリストを参照し、ステップS48で抽出した注目ポイントIDと同じ仮想ポイントIDを含み、かつ注目データと同じスタートタイムスタンプsts(滞在開始時刻)のエリア処理用データが存在するか判断する(ステップS52)。
【0053】
サーバ5は、エリア処理用データが存在する場合(ステップS52:YES)、当該エリア処理用データのエリア処理用IDとエンドタイムスタンプetsとを含む更新用データを更新用リストに追加する(ステップS54)。更新用リストは、生成済みエリア処理用データを更新するために用いられる。つまり、同一の時刻に開始され、同一の仮想ポイントに関連する利用者の行動に対応するエリア処理用データが既に存在する場合、エンドタイムスタンプetsを最新の値に更新する。
【0054】
サーバ5は、エリア処理用データが存在しない場合(ステップS52:NO)、注目ポイントIDと、スタートタイムスタンプsts及びエンドタイムスタンプetsとを含む挿入用データを挿入用リストに追加する(ステップS56)。挿入用リストは、生成済みエリア処理用データリストに追加するために用いられる。
【0055】
サーバ5は、挿入用リストに含まれる挿入用データがある場合に(ステップS62:YES)、挿入用データを生成済みエリア処理用データリストに追加する挿入処理を実行する(ステップS64)。その際、新たにエリア処理用IDを発行し、滞在時間の値を、挿入用データのスタートタイムスタンプstsとエンドタイムスタンプetsの差分とする。
【0056】
サーバ5は、更新用リストに含まれる更新用データがある場合に(ステップS66:YES)、更新用データを用いて生成済みエリア処理用データリストを更新する更新処理を実行する(ステップS68)。更新用データのエリア処理用IDに対応する生成済みエリア処理用データは、更新用データのエンドタイムスタンプetsに書き換え、滞在時間の値を、生成済みエリア処理用データのスタートタイムスタンプstsと更新用データのエンドタイムスタンプetsの差分とする。
【0057】
以上説明したように、作業中データリストの各仮エリア処理用データは、生成済みエリア処理用データリストに新たなエリア処理用データとして挿入され、また生成済みエリア処理用データリストのエリア処理用データが更新されて、エリア処理用データリスト生成処理が終了する。
【0058】
なお、上記エリア処理用データリスト生成処理において、生成済みのエリア処理用データリストがない場合、つまり、タグ検出データリストの最初の所定数の検出データに対する処理を実行する場合は、作業中データリスト生成処理(
図13)のステップS38の判断をNOとし、組み込み処理ではステップS52の判断をNOとする。
【0059】
(3-3)グルーピング処理
次に、グルーピング処理について、
図15~
図17を参照して説明する。
図15に、グルーピング処理の全体フローを示す。グルーピング処理は、エリア処理用データリストに含まれる1以上のエリア処理用データをグルーピングする処理である。1以上のエリア処理用データをグループ化する目的は、1以上のエリア処理用データを、利用者による1つの滞在エリア内の行動に対応するデータとすることである。
図15を参照すると、サーバ5は先ず、エリア処理用データリストからスタートタイムスタンプsts(滞在開始時刻)が同じとなる1以上のエリア処理用データを1個のグループとして、複数のグループG[i]を生成する(ステップS70)。つまり、スタートタイムスタンプstsが同一のグループとなるように時刻順にグルーピングする。
なお、複数のグループG[i](i=0,1,2,…)は、スタートタイムスタンプstsが小さい順(つまり、時刻が早い順)に生成される。つまり、グループG[0]は、最もスタートタイムスタンプstsが小さいエリア処理用データの集まりである。
【0060】
サーバ5は、グループG[0]に含まれる1以上のエリア処理用データからエンドタイムスタンプetsの最大値(グループG[0]に含まれるエリア処理用データのうち、滞在終了時刻が最も遅い時刻)を取得し、基準タイムスタンプgts(基準時刻の一例)とする(ステップS72)。
【0061】
サーバ5は、後述する集約グループCG[j]における変数jの初期化を行った後(ステップS74)、ステップS70において生成された複数のグループG[i](i=0,1,2,…)から処理対象のグループ(注目グループjdg)をグループG[0]から順に抽出する(ステップS76)。
サーバ5は、注目グループjdgのスタートタイムスタンプの最小値sts_min(注目グループjdgに含まれるエリア処理用データのうち、滞在開始時刻が最も早い時刻)、エンドタイムスタンプの最大値ets_max(注目グループjdgに含まれるエリア処理用データのうち、滞在終了時刻が最も遅い時刻)、及び、滞在時間の最大値drs_max(=ets_max-sts_min)を取得し(ステップS78)、集約グループ生成処理を実行する(ステップS80)。
【0062】
ここで、集約グループ生成処理とは、グルーピング処理のステップS70によりスタートタイムスタンプstsが同じとなる1以上のエリア処理用データをグループ化した後、異なるスタートタイムスタンプstsのエリア処理用データを含む2以上のグループであっても、利用者による1つの滞在エリア内のまとまった行動に対応すると考えられる場合に、当該2以上のグループをさらに1つのグループ(「集約グループ」という。)に集約させる処理を示す。
【0063】
集約グループCG[j](j=0,1,2,…)は、ステップS70により生成された複数のグループG[i](i=0,1,2,…)の各々を順次、処理対象のグループとして抽出することで生成される。集約グループCG[j](j=0,1,2,…)は、スタートタイムスタンプstsが小さい順(つまり、時刻が早い順)に生成される。
【0064】
サーバ5は、集約グループ生成処理の後、生成された集約グループCG[j]に対応する重心gbc[j]を算出済みか判断し(ステップS82)、算出済みでない場合には、重心gbc[j]を算出する処理を行う(ステップS84)。ステップS84で集約グループの重心gbc[j]を算出するのは、集約グループの重心gbc[j]と注目グループjdgの重心との間の距離に応じて、注目グループjdgに対する処理が異なってくるためである。
【0065】
なお、集約グループや注目グループ等のグループの重心とは、グループに含まれるエリア処理用データが1個である場合には当該エリア処理用データに含まれる仮想ポイントIDに対応する座標を示し、グループに含まれるエリア処理用データが2個以上ある場合には、当該2個以上のエリア処理用データに含まれる複数の仮想ポイントIDに対応する複数の座標に基づき得られる重心(複数の仮想ポイントに基づく幾何中心)の座標を示す。
【0066】
グループの重心を算出する際には、グループに含まれるすべてのエリア処理用データを利用せず、一部のエリア処理用データに基づいてグループの重心を算出してもよい。一実施形態では、処理対象のグループに含まれる2個以上のエリア処理用データのうち、滞在時間が、グループの滞在時間の最大値(グループに含まれるエリア処理用データのうち、滞在終了時刻が最も遅い時刻)の所定比率以上であるエリア処理用データを抽出し、抽出したエリア処理用データに基づいてグループの重心を算出してもよい。これによって、グループ内において例えば僅かな時間だけ利用者が遠い場所に行って戻ってきた状況を反映したエリア処理用データが重心の算出の対象から外れることになるため、利用者の行動の中心が算出される重心に反映される。
所定比率は限定しないが、例えば92~98%の間の値である。
【0067】
次に、
図16を参照して、
図15に示すステップS80の集約グループ生成処理の詳細について説明する。
図16に、集約グループ生成処理の詳細フローを示す。
図16を参照すると、サーバ5は、注目グループjdgのスタートタイムスタンプの最小値sts_min(注目グループjdgに含まれるエリア処理用データのうち、滞在開始時刻が最も早い時刻)及びエンドタイムスタンプの最大値ets_max(注目グループjdgに含まれるエリア処理用データのうち、滞在終了時刻が最も遅い時刻)と、基準タイムスタンプgts(基準時刻)との比較結果に応じて、以下のように処理を行う。なお、基準タイムスタンプgtsは、グループG[0]、又は、直近に生成された集約グループに含まれるエンドタイムスタンプetsの最大値(グループG[0]又は直近に生成された集約グループに含まれるエリア処理用データのうち、滞在終了時刻が最も遅い時刻)であり、集約グループCG[j](j=0,1,2,…)を生成していく過程で、順次更新される。
【0068】
(I)注目グループjdgのスタートタイムスタンプの最小値sts_min及びエンドタイムスタンプの最大値ets_maxが共に、基準タイムスタンプgts以下である(基準時刻と同じか、基準時刻より早い)場合(ステップS88:YES,ステップS90:YES)
この場合、注目グループjdgに対応する利用者の滞在時間が基準タイムスタンプgtsを超えないことから、サーバ5は、集約グループCG[j]が存在しない場合には(ステップS94:NO)、注目グループjdgを集約グループCG[j]とする(ステップS96)。集約グループCG[j]が存在する場合には(ステップS94:YES)、当該集約グループCG[j]に注目グループjdgを集約する(ステップS98)。次いでサーバ5は、集約グループCG[j]のエンドタイムスタンプの最大値ets_maxが基準タイムスタンプgtsとなるように、基準タイムスタンプgtsを更新する(ステップS100)。
【0069】
(II)注目グループjdgのスタートタイムスタンプの最小値sts_minが基準タイムスタンプgtsより大きい(基準時刻より遅い)場合(ステップS88:NO)
この場合、注目グループjdgは、既にある集約グループCG[j]に対応する行動とは別の行動に対応していると考えられる。そこで、変数jを1増加させ(ステップS92)、注目グループjdgを次の集約グループCG[j]に関連付けて処理を行う。ステップS94以降の処理は、(I)の場合と同じである。
【0070】
(III)注目グループjdgのスタートタイムスタンプの最小値sts_minが基準タイムスタンプgts以下である(基準時刻と同じか、基準時刻より早い)が、注目グループjdgのエンドタイムスタンプの最大値ets_maxが基準タイムスタンプgtsより大きい(基準時刻より遅い)場合(ステップS88:YES,ステップS90:NO)
これは、注目グループjdgのスタートタイムスタンプの最小値sts_minとエンドタイムスタンプの最大値ets_maxの間に、基準タイムスタンプgtsが存在することを意味する。この場合、所定の条件を満たす場合には、基準タイムスタンプgts(基準時刻)を境にして、注目グループjdgに含まれる各エリア処理用データを連続する2個の集約グループのいずれかに分配するデータ分配処理が行われる。
【0071】
上記(III)の場合に、データ分配処理を行うための所定の条件は、
図16のステップS106に相当し、その判断のためにステップS102,S104が実行される。
サーバ5は、注目グループjdgの重心G_jdgを算出し(ステップS102)、集約グループCG[j]の重心gbc[j]から注目グループjdgの重心G_jdgまでの距離mdを算出する(ステップS104)。次いで、サーバ5は、算出した距離mdが所定の行動設定値以上であるか判断する(ステップS106)。重心間の距離mdを算出するのは、注目グループjdgが集約グループCG[j]と同一の利用者の行動に対応しているか判断するためである。
行動設定値によって、各集約グループに対して後で生成される滞在エリアデータに対応する円の数、円の大きさ等を調整できる。
【0072】
重心間の距離mdが行動設定値以上である場合には(ステップS106:YES)、注目グループjdgの中に集約グループCG[j]とは別の行動に対応するエリア処理用データが含まれていると考えられるため、サーバ5は、データ分配処理を実行する(ステップS108)。データ分配処理については後に説明する。
他方、重心間の距離mdが行動設定値未満である場合には(ステップS106:NO)、サーバ5は、注目グループjdgを集約グループCG[j]に集約し(ステップS98)、集約グループCG[j]のエンドタイムスタンプetsを基準タイムスタンプgtsとする(ステップS100)。
ステップS106の行動設定値は、限定しないが、例えば3メートル等、数メートルの値に設定される。
【0073】
図17は、注目グループjdgが上記(I)~(III)の条件を満たす場合の処理の違いについて示した図である。
図17では、直近に生成された集約グループがCG[M-1](つまり、j=M-1;但し、M≧1)とした場合の注目グループjdgに対する処理の違いを示している。
図17では、集約グループCG[M-1]のエンドタイムスタンプの最大値(集約グループCG[M-1]のエリア処理用データのうち、滞在終了時刻が最も遅い時刻)が基準タイムスタンプgts(基準時刻)となっている。
このとき、注目グループjdgが上記(I)の条件を満たす場合、つまり、注目グループjdgのスタートタイムスタンプstsの最小値(注目グループjdgに含まれるエリア処理用データのうち、滞在開始時刻が最も早い時刻)及びエンドタイムスタンプetsの最大値(注目グループjdgに含まれるエリア処理用データのうち、滞在終了時刻が最も遅い時刻)が共に基準タイムスタンプgts以下である(基準時刻と同じか、基準時刻より早い)場合、注目グループjdgを集約グループCG[M-1]に集約する処理が行われる(
図16に示すステップS98)。
注目グループjdgが上記(II)の条件を満たす場合、つまり、注目グループjdgのスタートタイムスタンプの最小値sts_minが基準タイムスタンプgtsより大きい場合(基準時刻よりも遅い場合)、注目グループjdgを、集約グループCG[M-1]に対して、別の集約グループCG[M]とする処理が行われる(
図16に示すステップS92、S96)。
つまり、時間的に重複する2以上のグループを1つの集約グループに集約することから、後に集約グループに対応するエリアを生成する際に、利用者の1つのまとまった行動に対応するエリアのカバレッジ精度を高めることができる。
【0074】
図17において、注目グループjdgが上記(III)の条件を満たす場合、注目データTD1のうち基準タイムスタンプgtsを超えない部分のデータが、直近に生成された集約グループCG[M-1]に集約される。注目データTD1のうち基準タイムスタンプgtsを超える(基準時刻より遅い)部分のデータが、直近に生成された集約グループCG[M-1]の次の集約グループCG[M]になる。また、注目グループjdgに含まれる注目データTD2は、直近に生成された集約グループCG[M-1]にマージされる。このようにして、ステップS108のデータ分配処理が行われる。
上述したデータ分配を行うことで、エリア処理用データの連続性が確保され、後に滞在エリアデータを生成したときに、例えば隣接するエリア同士に隙間が生ずるようなデータの欠損を抑制することができる。エリア処理用データの連続性を確保することで、データ上利用者が突然別の場所に移動する、といったような状況を回避できる。
【0075】
以上説明したように、
図15に示したグルーピング処理では、エリア処理用データリストに含まれる1以上のエリア処理用データを基にスタートタイムスタンプが同じとなるグループを生成し、さらに、利用者による一つのまとまった行動に対応すると考えられる集約グループに集約させる。生成された各集約グループは、それぞれ後述する滞在エリアデータに対応したものとなる。
すなわち、一実施形態では、サーバ5の制御部51は、仮想ポイントごとに生成したエリア処理用データを、スタートタイムスタンプ(滞在開始時刻)に基づいて時刻順にグルーピングしてグループを生成する第2取得部512として機能する。この場合、第2取得部512は、グループに含まれる1以上のエリア処理用データのうちスタートタイムスタンプの最小値(滞在開始時刻が最も早い時刻)と、エンドタイムスタンプの最大値(滞在終了時刻が最も遅い時刻)とを用いて、グループに含まれる1以上のエリア処理用データを集約グループにグループ化する。後述するように、各集約グループから滞在エリアを示す滞在エリアデータ(後述する)が取得される。
1以上のエリア処理用データからなるグループを集約グループに集約させることで、タグ検出データリストから生成される滞在エリアの数が限定されるため、利用者の行動を解析しやすくなる。
【0076】
図16を参照して説明したように、集約グループを生成する際には、ステップS104で算出された距離mdが所定の行動設定値以上である場合に分配処理が行われる。分配処理では、注目グループに含まれるエリア処理用データのスタートタイムスタンプstsとエンドタイムスタンプetsの間に基準タイムスタンプgtsがある場合には、当該エリア処理用データが前後の集約グループに分配される。
ここで、距離mdが行動設定値以上である場合、エリア処理用データのうち基準タイムスタンプgtsを超える部分を破棄することも考えられる。しかし、当該部分を次の集約グループに分配することで、エリア処理用データの連続性が確保され、例えば隣接するエリア同士に隙間が生ずるようなデータの欠損を抑制することができる。
【0077】
(3-4)滞在エリアデータリスト生成処理
次に、滞在エリアデータリスト生成処理について
図18を参照して説明する。
図18に、滞在エリアデータリスト生成処理の全体フローを示す。滞在エリアデータリスト生成処理は、グルーピング処理によって生成された集約グループごとに、利用者の滞在エリアを示す滞在エリアデータを生成する処理である。
【0078】
図18を参照すると、サーバ5は、生成された複数の集約グループCG[j](j=0,1,2,…)から処理対象のグループ(注目グループ)を順次抽出する(ステップS140)。
【0079】
サーバ5は、注目グループを抽出すると、以下の処理を実行する(ステップS142)。
(i)注目グループのスタートタイムスタンプの最小値sts_minを、滞在エリアデータInd[j]のスタートタイムスタンプsts_jとする。
(ii)注目グループのエンドタイムスタンプの最大値ets_maxを、滞在エリアデータInd[j]のエンドタイムスタンプets_jとする。
(iii)滞在エリアデータInd[j]の滞在時間drs_jを、滞在エリアデータInd[j]のエンドスタンプets_jから滞在エリアデータInd[j]のスタートスタンプsts_jを減算した値(ets_j-sts_j)とする。
(iv)注目グループの重心を滞在エリアデータInd[j]の重心とする。
【0080】
次いでサーバ5は、注目グループに含まれる1以上のエリア処理用データから順に処理対象のエリア処理用データ(「注目データ」という。)を抽出し(ステップS144)、注目データに含まれる仮想ポイントIDに対応する仮想ポイントと注目グループの重心との間の距離Dgを算出する(ステップS146)。
サーバ5は、注目グループに含まれる1以上のエリア処理用データに対して算出された距離Dgのうち、最大値を滞在エリアデータInd[j]のエリア半径最大値とし、中央値を滞在エリアデータInd[j]のエリア半径中央値とする(ステップS150)。
なお、エリア半径中央値を取得する場合に限られず、エリア半径平均値を取得してもよい。つまり、注目グループに含まれる1以上のエリア処理用データに対して算出された距離Dgの平均値を求め、当該平均値を滞在エリアデータInd[j]のエリア半径平均値とすることができる。
【0081】
以上説明したように、滞在エリアデータリスト生成処理では、複数の集約グループCG[j](j=0,1,2,…)にそれぞれ対応する複数の滞在エリアデータInd[j](j=0,1,2,…)を含む滞在エリアデータリストが生成される。各滞在エリアデータは、スタートタイムスタンプ、エンドタイムスタンプ、滞在時間、重心、エリア半径最大値、及び、エリア半径中央値を含む。
すなわち、滞在エリアデータリスト生成処理では、各集約グループに含まれる1以上の仮想ポイントと、当該1以上の仮想ポイントに対応付けられた滞在時間とに基づいて、各滞在エリアデータに対応するエリアと、当該エリアにおける利用者の滞在時間とが取得される。仮想ポイントに基づいてエリアが特定されるため、特定されるエリアに無線タグ2の検出位置の誤差が影響を与えることが回避でき、また、エリアを特定するためのデータ量を少なくすることができる。
滞在エリアデータには、利用者のエリアに対する進入時間、退出時間、滞在時間、動きの範囲等の情報が含まれているため、利用者の行動解析に有用である。すなわち、利用者の動きを可変の滞在エリアとして捉えることで、例えば、滞在エリアと滞在時間等から利用者がそこで何をしていたか等の利用者の行動を解析する(定義付ける)ことができる。
例えば、来店者や店舗スタッフを含む複数の利用者に対する滞在エリアデータや店舗内の棚の位置情報等に基づいて、店舗フロアにおける来店者や店舗スタッフの行動を把握することができる。そのような行動の例としては、来店者が店舗内の棚から商品を選別している際の行動、店舗スタッフが来店者に接客しているときの行動、来店者が店舗内のデジタルサイネージ等を閲覧している際の行動等が挙げられる。
【0082】
また、ある来店者の滞在エリアと他の来店者の滞在エリアを比較することにより、例えば来店者同士のソーシャルディスタンスが把握できる。また、店舗スタッフが営業上利用し、無線タグとして機能する移動端末の滞在エリアにより、当該店舗スタッフによる店内での作業を把握できる。例えば、店舗スタッフ自身の滞在エリアと、無線タグが取り付けられた店舗スタッフが動かす品出しカートの滞在エリアとの接点から店舗スタッフの品出し場所と作業時間(つまり、品出し場所での滞在時間)を把握することで、店内オペレーションの最適化を図ることができる。例えば、現在の作業における店舗スタッフの品出し場所及び作業時間と、過去の作業における品出し場所及び作業時間との差異に基づいて、過去よりも大きく作業時間が伸びている品出し場所の作業の短縮を行うように指示を出すことなどが考えられる。
また、例えば、店舗のバックヤードやオフィス等において、無線タグが取り付けられた椅子等の備品の滞在エリアと、椅子を利用し、無線タグとして機能する移動端末を利用する利用者の滞在エリアとの接点から椅子の使用時間を把握することができる。そのため、椅子の耐用年数に照らして椅子の交換時期を推定することで、多く利用されている椅子から順に交換すること等によるコスト削減が期待できる。
【0083】
(3-5)描画処理
図6に示したように、滞在エリアデータリスト生成処理が終了すると、次に描画処理が行われる。描画処理は、店舗マップ及び滞在エリアデータリストを基に、
図4に例示した利用者滞在エリア画像を生成する処理である。
描画処理では、サーバ5は、滞在エリアデータリストの各滞在エリアデータに含まれるスタートタイムスタンプ及びエンドタイムスタンプの順で、重心を順に連結する矢印付き線を店舗マップ上に描画する。サーバ5はまた、重心、エリア半径最大値、及び、エリア半径中央値を基に、同心円である最大円と中央円をエリアとして店舗マップ上に描画する。
重心を順に連結する矢印付き線を描画することで、各エリアへの進入方向及び退出方向に関する情報を表示させることができる。
【0084】
サーバ5は、滞在エリアデータに対応する円(最大円、中央円)を、滞在時間(つまり、利用者が滞在した可能性がある滞在時間の長さ)に応じて異なる態様で描画してもよい。例えば、所定の閾値に応じて滞在時間が長い順に、異なる色(赤、緑、青の順等)、あるいは異なる模様で円の内部を描いてもよいし、また、滞在時間に応じて円の輪郭の太さを異ならせることもできる。こうすることで、利用者の行動を確認することがさらにわかりやすくなる。例えば、利用者が長期間立ち話をしている場合(円は小さく、滞在時間が長い場合)と利用者が少し立ち止まった場合(円は小さく、滞在時間が短い)をより効果的に差別化して表示させることができる。なお、滞在時間に応じて異なる態様で描画することは、滞在時間の値を円と関連付けてテキスト表示することも含まれる。
また、利用者滞在エリア画像として最大円と中央円の両方を描画することは必須ではなく、いずれかの円を描画することであってもよい。
【0085】
なお、上述した
図16のステップS106の「行動設定値」によって、最終的に得られる利用者滞在エリア画像が異なるものとなる。
行動設定値が大きい場合の利用者滞在エリア画像には、滞在エリアデータリストのデータ量が少なくなり、検出データを取得する際の電波状況が悪いときなどに電波の揺れを吸収しやすいという利点がある。また、2以上の利用者(つまり、2以上のタグID)に対して利用者行動解析処理を行う場合に、当該2以上の利用者の接点を認識しやすいという利点もある。他方、利用者の細かい動きを確認することが相対的に難しくなる。
行動設定値が小さい場合の利用者滞在エリア画像には、利用者の細かい動きの変化を捉えやすいという利点がある。他方、滞在エリアデータリストのデータ量が相対的に多くなるとともに、2以上の利用者の接点を認識し難くなる。
したがって、ステップS106の行動設定値は、行動解析システムの用途に応じて最適な値に設定することが好ましい。
【0086】
(4)適用例
次に、一実施形態の利用者滞在エリア画像の2つの用例について、
図19~
図26を参照して説明する。以下では2つの例について説明するが、理解の容易のためにタイムスタンプを時分秒の時刻で表している。
【0087】
(4-1)第1例の利用者の行動について利用者行動解析処理
図19~
図22は、第1例の利用者の行動について利用者行動解析処理を説明する図である。
図19は、第1例の利用者の行動を示す図である。
図19には、利用者の位置を示す無線タグの検出位置の移動に伴い、検出位置を中心として設定される円が示されている。利用者の移動に伴って円がC1→C2→C3→C4→C5→C6→C7と移動している。
図19にはまた、各円に対応する検出位置におけるタイムスタンプが示されている。
図19では、円の移動態様を示すとともに、フロアに等間隔に設けられた仮想ポイントの仮想ポイントID(「01」~「58」)が示されている。
【0088】
図19に示す利用者の移動履歴データに基づいて、エリア処理用データリスト生成処理によって生成されたエリア処理用データリストを
図20に示す。ここで、エリア処理用データリストは、スタートタイムスタンプsts(滞在開始時刻)の小さい(早い)順にエリア処理用データが並べられている。各エリア処理用データは、仮想ポイントID(VpID)に対する、スタートタイムスタンプsts、エンドタイムスタンプets、滞在時間drsの値を含んでいる。
図20の例では、エリア処理用データリストに含まれる複数のエリア処理用データが、グルーピング処理によってスタートタイムスタンプが同じとなる6個のグループG[0]~G[5]にグルーピングされている(
図15のステップS70)。
【0089】
次に
図21を参照すると、6個のグループG[0]~G[5]がさらに3個の集約グループCG[0]~CG[2]に集約されている。
図21に示す各集約グループのエリア処理用データに付された[merge]は1回目の集約が行われたことを示し、[merge2]は2回目の集約が行われたことを示している。
図21の例では、集約グループ生成処理(
図15のステップS80、
図16)により集約グループCG[0]~CG[2]が生成される。
【0090】
・グループG[0]
図15のステップS72により、基準タイムスタンプgtsは「00:00:03」である。集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[0])のスタートタイムスタンプの最小値sts_min(「00:00:01」)は、基準タイムスタンプgts以下(基準時刻と同じか、基準時刻より早い)と判断される(YES)。
次に、ステップS90において注目グループjdg(グループG[0])のエンドタイムスタンプの最大値ets_max(「00:00:03」)は、基準タイムスタンプgts以下である(基準時刻と同じか、基準時刻より早い)と判断される(YES)。
次に、ステップS94において集約グループCG[j]が存在しないとの判断(NO)により、ステップS96により集約グループCG[0]=注目グループjdg(G[0])となる。
【0091】
・グループG[1]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[1])のスタートタイムスタンプの最小値sts_min(「00:00:02」)は、基準タイムスタンプgts「00:00:03」以下(基準時刻と同じか、基準時刻より早い)と判断される(YES)。
次に、ステップS90において注目グループjdg(グループG[0])のエンドタイムスタンプの最大値ets_max(「00:00:03」)は、基準タイムスタンプgts以下と判断される(YES)。
次に、ステップS94において集約グループCG[0]が存在するとの判断(YES)により、ステップS98により注目グループjdg(グループG[1])を集約グループCG[0]に集約する([merge])。
【0092】
・グループG[2]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[2])のスタートタイムスタンプの最小値sts_min(「00:00:03」)は、基準タイムスタンプgts「00:00:03」以下(基準時刻と同じか、基準時刻より早い)と判断される(YES)。
次に、ステップS90において注目グループjdg(グループG[2])のエンドタイムスタンプの最大値ets_max(「00:00:03」)は、基準タイムスタンプgts以下と判断される(YES)。
次に、ステップS94において集約グループCG[0]が存在するとの判断(YES)により、ステップS98により注目グループ(グループG[2])を集約グループCG[0]に集約する([merge2])。
【0093】
・グループG[3]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[3])のスタートタイムスタンプの最小値sts_min(「00:00:04」)は、基準タイムスタンプgts「00:00:03」以下(基準時間以内)ではないと判断される(NO)。
次に、ステップS92において変数jを1増加させる。
次に、ステップS94において集約グループCG[1]が存在しないため(NO)、ステップS96により集約グループCG[1]=注目グループjdg(グループG[3])となる。ここで、基準タイムスタンプgtsが「00:00:05」(集約グループCG[1]に含まれるエリア処理用データのうちエンドスタンプetsの最大値)に更新される(
図16のステップS100)。
【0094】
・グループG[4]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[4])のスタートタイムスタンプの最小値sts_min(「00:00:05」)は、基準タイムスタンプgts「00:00:05」以下(基準時刻と同じか、基準時刻より早い)と判断される(YES)。
ステップS90において注目グループjdg(グループG[4])のエンドタイムスタンプの最大値ets_max(「00:00:05」)は、基準タイムスタンプgts以下と判断される(YES)。
次に、ステップS94において集約グループCG[1]が存在するとの判断(YES)により、ステップS98により注目グループ(グループG[4])を集約グループCG[1]に集約する([merge])。
【0095】
・グループG[5]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[5])のスタートタイムスタンプの最小値sts_min(「00:01:00」)は、基準タイムスタンプgts「00:00:05」以下(基準時刻と同じか、基準時刻より早い)ではないと判断される(NO)。
次に、ステップS92において変数jを1増加させる。
次に、ステップS94において集約グループCG[2]が存在しないため(NO)により、ステップS96により集約グループCG[2]=注目グループjdg(グループG[5])となる。ここで、基準タイムスタンプgtsが「00:01:09」に更新される(
図16のステップS100)。
【0096】
次に、滞在エリアデータリスト生成処理では、
図18のステップS142,S150により、集約グループCG[0]~CG[2]にそれぞれ対応する滞在エリアデータInd[0]~[2]が生成される(
図21参照)。なお、
図21では、重心、エリア半径最大値、エリア半径中央値の具体的な値を省略している。
【0097】
図22に、滞在エリアデータInd[0]~[2]に基づいて生成された描画結果を示す。なお、
図22では、エリア半径最大値に相当する円(最大円)のみを示している。
図22に示す滞在エリアデータInd[0]~[2]に対応する円により、
図2に例示したようなタグ検出データリストが示す数値のデータと異なり、利用者の滞在した可能性がある範囲を視覚的に認識できる。また、
図22に示す滞在エリアデータInd[0]~[2]に対応する円では、集約グループに対応したエリアを示す円となっているため、
図19の円C1~C7の数よりも少なく、利用者の複数の滞在エリアを容易に把握することができ、滞在エリアと滞在時間とに基づいて利用者の行動を解析することが可能となる。また、
図22では、滞在エリアを示す複数の円の間の移動が矢印付きの線で示されているため、利用者の移動態様を容易に把握することができる。
【0098】
(4-2)第2例の利用者の行動について利用者行動解析処理
図23~
図26は、第2例の利用者の行動について利用者行動解析処理を説明する図である。
図23は、第2例の利用者の行動を示す図である。
図23には、利用者の位置を示す無線タグの検出位置の移動に伴い、検出位置を中心として設定される円が示されている。利用者の移動に伴って円がC1→C2→C3→C4→C5→C6→C7→C8→C9と移動している。
図23には、各円に対応する検出位置におけるタイムスタンプが示されている。
図23では、円C5と円C6が行動設定値(例えば3メートル)以上離れている例が示されている。
図23では、円の移動態様を示すとともに、フロアに等間隔に設けられた仮想ポイントの仮想ポイントID(「01」~「58」)が示されている。
【0099】
図23に示す利用者の移動履歴データに基づいて、エリア処理用データリスト生成処理によって生成されたエリア処理用データリストを
図24に示す。エリア処理用データリストは、スタートタイムスタンプstsの小さい順にエリア処理用データが並べられている。各エリア処理用データは、仮想ポイントID(VpID)に対する、スタートタイムスタンプsts(滞在開始時刻)、エンドタイムスタンプets(滞在終了時刻)、滞在時間drsの値を含んでいる。
図24の例では、エリア処理用データリストに含まれる複数のエリア処理用データが、グルーピング処理によってスタートタイムスタンプが同じとなる7個のグループG[0]~G[6]にグルーピングされている(
図15のステップS70)。
【0100】
次に
図25を参照すると、7個のグループG[0]~G[6]がさらに4個の集約グループCG[0]~CG[3]に集約されている。
図25に示す各集約グループのエリア処理用データに付された[chunk.merge]は、1つのエリア処理用データに対して分配処理がなされたことを示している。
図25の例では、集約グループ生成処理(
図15のステップS80、
図16)により集約グループCG[0]~CG[3]が生成される。
【0101】
・グループG[0]
図15のステップS72により、基準タイムスタンプgtsは「00:10:01」である。集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[0])のスタートタイムスタンプの最小値sts_min(「00:10:00」)は、基準タイムスタンプgts「00:10:01」以下(基準時刻と同じか、基準時刻より早い)と判断される(YES)。
次に、ステップS90において注目グループjdg(グループG[0])のエンドタイムスタンプの最大値ets_max(「00:10:01」)は、基準タイムスタンプgts以下と判断される(YES)。
次に、ステップS94において集約グループCG[j]が存在しないとの判断(NO)により、ステップS96により集約グループCG[0]=注目グループjdg(G[0])となる。
【0102】
・グループG[1]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[1])のスタートタイムスタンプの最小値sts_min(「00:10:01」)は、基準タイムスタンプgts「00:10:01」以下(基準時間以内)と判断される(YES)。
次に、ステップS90において注目グループjdg(グループG[1])のエンドタイムスタンプの最大値ets_max(「00:10:03」)は、基準タイムスタンプgts以下ではないと判断される(NO)。
次に、ステップS106において注目グループjdg(グループG[1])の重心と、集約グループCG[0]の重心との間の距離mdが行動設定値未満であるとの判断(NO)により、ステップS98において注目グループjdg(グループG[1])を集約グループCG[0]に集約する([merge])。ここで、グループG[1]の重心(VpID:18)と集約グループCG[0]の重心(VpID:09)との距離が行動設定値(例えば3メートル)より小さく、S106の判断がNOとなるためである。基準タイムスタンプgtsが「00:10:03」に更新される(
図16のステップS100)。
【0103】
・グループG[2]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[2])のスタートタイムスタンプの最小値sts_min(「00:11:00」)は、基準タイムスタンプgts「00:10:03」以下(基準時間以内)ではないと判断される(NO)。
次に、ステップS92において変数jを1増加させ→S94において集約グループCG[1]が存在しないため(NO)により、ステップS96により集約グループCG[1]=注目グループjdg(グループG[2])となる。ここで、基準タイムスタンプgtsが「00:11:00」に更新される(
図16のステップS100)。
【0104】
・グループG[3]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[3])のスタートタイムスタンプの最小値sts_min(「00:11:01」)は、基準タイムスタンプgts以下ではないと判断される(NO)。
次に、ステップS92において変数jを1増加させ→S94において集約グループCG[2]が存在しないとの判断(NO)により、ステップS96により集約グループCG[2]=注目グループjdg(グループG[3])となる。ここで、基準タイムスタンプgtsが「00:11:06」に更新される(
図16のステップS100)。
【0105】
・グループG[4]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[4])のスタートタイムスタンプの最小値sts_min(「00:11:05」)は、基準タイムスタンプgts「00:11:06」以下(基準時刻と同じか、基準時刻より早い)と判断される(YES)。
次に、ステップS90において注目グループjdg(グループG[4])のエンドタイムスタンプの最大値ets_max(「00:11:08」)は、基準タイムスタンプgts「00:11:06」以下(基準時刻と同じか、基準時刻より早い)ではないと判断される(NO)。
次に、ステップS102において注目グループjdg(グループG[4])の重心G_jdgを算出し、ステップS104において集約グループCG[2]の重心gbcから注目グループjdg(グループG[4])の重心G_jdgまでの距離mdを算出する。
次に、ステップS106において距離mdが行動設定値以上であると判断される(YES)。
次に、ステップS108により、データ分配処理が行われる。
なお、ステップS106において、注目グループjdg(グループG[4])の重心G_jdg(VpID:50,51の中間位置)と集約グループCG[2]の重心gbc(VpID:56,57の重心位置)の距離が行動設定値(例えば3メートル)を超えているため、ステップS106の判断がYESとなる。ステップS108のデータ分配処理は、注目グループjgd(グループG[4])に含まれるエリア処理用データごとに行われる。
データ分配処理では、注目グループjdg(グループG[4])に含まれる1個目のエリア処理用データ(VpID:51)は、スタートタイムスタンプsts「00:11:05」が基準タイムスタンプgts「00:11:06」以下(基準時刻と同じか、基準時刻より早い)であり、エンドタイムスタンプets「00:11:05」が基準タイムスタンプgts以下であるため、集約グループCG[2]に集約される([merge])(
図17のTD2参照)。
データ分配処理では、注目グループ(グループG[4])に含まれる2個目のエリア処理用データ(VpID:50)のスタートタイムスタンプsts「00:11:05」が基準タイムスタンプgts以下であり、エンドタイムスタンプets「00:11:08」が基準タイムスタンプgts以下ではない。そこで、2個目のエリア処理用データ(VpID:50)のうち基準タイムスタンプgts以下となる滞在時間の一部(スタートタイムスタンプsts「00:11:05」からエンドタイムスタンプets「00:11:06」までの部分)を集約グループCG[2]に集約する([chunk.merge])。また、2個目のエリア処理用データ(VpID:50)のうち基準タイムスタンプgts以上(基準時刻以降)となる滞在時間の一部(スタートタイムスタンプsts「00:11:06」からエンドタイムスタンプets「00:11:08」までの部分)を集約グループCG[3]とする([chunk.merge])(
図17のTD1参照)。
【0106】
・グループG[5]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[5])のスタートタイムスタンプの最小値sts_min(「00:11:08」)は、基準タイムスタンプgts「00:11:06」以下(基準時間以内)と判断されない(NO)。
次に、ステップS92において変数jを1増加させ→S94において集約グループCG[3]があるため(YES)により、ステップS98によりG[5]をCG[3]に集約する([merge])。ここで、基準タイムスタンプgtsが「00:11:09」に更新される(
図16のステップS100)。
【0107】
・グループG[6]
集約グループ生成処理では、
図16のステップS88において注目グループjdg(グループG[6])のスタートタイムスタンプの最小値sts_min(「00:11:09」)は、基準タイムスタンプgts以下と判断される(YES)。
次に、ステップS90において注目グループjdg(グループG[6])のエンドタイムスタンプの最大値ets_max(「00:00:09」)は、基準タイムスタンプgts以下(基準時間以内)と判断される(YES)。
次に、ステップS94において集約グループCG[3]が存在すると判断されるため、ステップS98により注目グループ(グループG[6])を集約グループCG[3]に集約する([merge2])。
【0108】
次に、滞在エリアデータリスト生成処理では、
図18のステップS142,S150により、集約グループCG[0]~CG[3]にそれぞれ対応する滞在エリアデータInd[0]~[3]が生成される(
図25参照)。なお、
図25では、重心、エリア半径最大値、エリア半径中央値の具体的な値を省略している。
【0109】
図26に、滞在エリアデータInd[0]~[3]に基づいて生成された描画結果を示す。なお、
図26では、エリア半径最大値に相当する円(最大円)のみを示している。
図26に示す滞在エリアデータInd[0]~[3]に対応する円により、
図2に例示したようなタグ検出データリストが示す数値のデータと異なり、利用者の滞在した可能性がある範囲を視覚的に認識できる。また、
図26に示す滞在エリアデータInd[0]~[3]に対応する円では、集約グループに対応したエリアを示す円となっているため、
図23の円C1~C9の数よりも少なく、利用者の複数の滞在エリアを容易に把握することができ、滞在エリアと滞在時間とに基づいて利用者の行動を解析することが可能となる。また、
図26では、滞在エリアを示す複数の円の間の移動が矢印付きの線で示されているため、利用者の移動態様を容易に把握することができる。
【0110】
以上説明したように、実施形態の行動解析システムによれば、サーバ5は、利用者と共に移動する無線タグ2の位置を示す位置情報と時刻情報とを対応付けたタグ検出データリストを取得し、取得したタグ検出データリストに基づき利用者が滞在した可能性がある1以上のエリア(1以上の滞在エリア)を取得する。サーバ5はさらに、取得した1以上のエリアを店舗端末4(表示装置の一例)に表示させることができる。このように、利用者の滞在エリアをよりわかりやすく可視化することができる。
【0111】
一実施形態の行動解析システムによれば、サーバ5は、タグ検出データリストと、フロア内に予め設定された仮想ポイントとに基づき、仮想ポイントに滞在時間を対応付けたエリア処理用データを生成する。サーバ5はさらに、生成されたエリア処理用データに基づき、仮想ポイントをグループ化して1以上のエリアを対応付ける。つまり、仮想ポイントに基づいてエリアが決定されるため、データ量を圧縮しつつ、滞在時間に対応した利用者の移動(滞在エリア)に関する情報が得られる(例えば
図3を参照)。すなわち、動線の基礎となるタグ検出データリストに対して、利用者の行動が解析しやすい程度に最終的な出力データ量(例えば滞在エリアデータリストのデータ量)を圧縮することができる。例えば、
図4に示した例では、
図3の動線データと比較して、2~3%程度にデータを圧縮できている。
【0112】
滞在エリアデータに対応する滞在エリア及び滞在時間の情報は、利用者の行動に対する解析がしやすいものである。例えば、滞在エリアが小さく滞在時間が長い場合には、例えば「利用者が立ち止まっている」、「利用者が立ち話をしている」等と判断することができ、滞在エリアが大きく滞在時間が長い場合には、例えば「利用者が何かを探している」、「利用者が迷っている」等と判断することができる。このように、滞在エリア及び滞在時間の情報に基づき、利用者の行動を解析(例えば定義付ける)ことができる。
一実施形態では、サーバ5の制御部51は、第2取得部512によって取得された滞在エリアと、当該滞在エリアにおける利用者の滞在時間(つまり、利用者が滞在した可能性がある滞在時間)の長さとに基づいて、利用者の行動を解析する解析部として機能してもよい。例えば、解析部は、上述したように、エリアが小さく滞在時間が長い場合やエリアが大きく滞在時間が長い場合等の条件に基づいて利用者の行動を解析することができる。解析部は、エリアに対する進入角度からも利用者の行動を解析することができる。
例えば、解析部は、滞在エリアの大きさと当該エリアにおける滞在時間と、利用者の行動とを予め対応付けたデータベースを参照して、滞在エリアデータに対応するエリア及び/又は滞在時間の情報を基に利用者の行動を特定してもよい。解析部はまた、機械学習を利用して利用者の行動を特定することもできる。機械学習では、滞在エリアの大きさと当該エリアにおける滞在時間と、利用者の行動とを予め学習させて学習モデルを生成しておく。そして、解析部は、滞在エリアデータリスト生成処理により得られた滞在エリアデータに対応する滞在エリア及び/又は滞在時間の情報を学習モデルに入力して、利用者の行動を特定する。
【0113】
例えば店舗の場合など、フロアが複数のゾーン(例えば売り場ゾーン)に分かれている場合、滞在エリアデータリストに含まれる各滞在エリアデータには重心の値が含まれているため、重心の値を基に利用者がいずれのゾーンに滞在していたか認識することも可能である。また、滞在エリアデータに含まれるエリア半径の情報に基づいて、利用者の行動を1又は複数のゾーンに関連付けることもできる。
【0114】
上記利用者行動解析処理では、特定の無線タグ2のタグIDについての処理について説明したが、複数の無線タグ2のタグIDについて同様の処理を行うことで、複数の利用者のフロアにおける距離を可視化することができる。例えば店舗の顧客と従業員等の二人の利用者と共に移動する無線タグのタグ検出データリストからそれぞれの利用者滞在エリア画像を生成することで、両者の距離感から従業員の顧客対応について解析して評価することができる。
【0115】
一実施形態では、上記解析部は、二人以上の利用者に対して取得された複数の滞在エリアの関係性(滞在エリアの重なりの程度やエリアの中心位置同士の距離等)に基づいて、二人以上の利用者の関係を特定する。例えば、二人以上の利用者のエリア同士の重複部分の面積が各エリアの面積の所定比率以上であるか、及び/又は、二人以上の利用者のエリアの重心間の距離が所定値以下である場合には、当該二人以上の利用者が何等かのコミュニケーションをとったと判断することができる。さらに、二人以上の利用者のエリア同士の重複しているときの滞在時間に応じて、コミュニケーションの深さ(単に挨拶をした場合や、長話をした場合等)を測ることができる。上述したように、二人以上の利用者が店舗の顧客と店舗スタッフである場合には、店舗スタッフの顧客対応の程度について把握することもできる。
【0116】
一実施形態では、解析部は、二人以上の利用者に対して取得された共通する滞在時間でのエリアの重なりの程度、及び/又は、エリアの中心位置同士の距離と、当該二人以上の利用者の関係とを定義したデータベースを参照して、当該二人以上の利用者の関係を特定してもよい。解析部はまた、機械学習を利用して二人以上の利用者の関係を特定することもできる。機械学習では、二人以上の利用者に対して取得されたエリアの重なりの程度、及び/又は、エリアの中心位置同士の距離と、当該二人以上の利用者の関係とを予め学習させて学習モデルを生成しておく。そして、解析部は、滞在エリアデータリスト生成処理により得られた当該二人以上の利用者に対する滞在エリアデータを学習モデルに入力して、当該二人以上の利用者の関係を特定する。
二人以上の利用者に対して取得された滞在エリアデータリストを解析することで、当該二人以上の利用者の関係を把握することができる。
【0117】
一実施形態では、上記解析部は、フロアに配置された設備が利用者に対して取得された滞在エリア内に位置しているか否か、及び/又は、設備の位置と滞在エリアの重心(中心位置の一例)との距離に基づいて、利用者と設備との関係を特定する。解析部はまた、利用者の滞在時間も考慮して、利用者と設備との関係を特定してもよい。店舗の例では、設備は、商品棚やデジタルサイネージ、レジ端末等である。例えば、店舗において利用者が滞在するエリア内に商品棚がある場合や、エリアの重心と商品棚の距離が所定値以下である場合には、利用者が商品棚で商品を選んでいると判断することができる。その場合、滞在時間が所定時間以上である場合に限り、利用者が商品棚で商品を選んでいると判断することもできる。
また、店舗において利用者が滞在するエリア内にデジタルサイネージがある場合や、エリアの重心とデジタルサイネージの距離が所定値以下である場合には、利用者がデジタルサイネージを視聴していると判断することができる。その場合、滞在時間が所定時間以上である場合に限り、利用者がデジタルサイネージを視聴していると判断することもできる。
解析部は、利用者に対して取得されたエリア内に設備が位置しているか否か、及び/又は、設備の位置とエリアの重心との距離と、利用者の設備との関係とを定義したデータベースを参照して、利用者の設備との関係を特定してもよい。解析部はまた、利用者の滞在時間も考慮して、利用者と設備との関係を特定してもよい。
利用者に対して取得された滞在エリアデータリストをフロアに配置された設備と関連付けて解析することで、利用者の店舗における行動を店舗内の設備に関連付けてより具体的に定義付けることができる。
【0118】
滞在エリアデータがエリア半径(最大値、中央値)を含むようにし、利用者滞在エリア画像にはエリア半径に基づく円を含む場合について説明したが、その限りではない。利用者の滞在エリアを可視化できればよいため、必ずしも円である必要はなく、例えば仮想ポイントを囲む多角形等で表示してもよい。しかし、円表示を行うことで視覚的に認識しやすいという利点がある。
【0119】
図11に示したように、フロア内において複数の仮想ポイントが一定距離の間隔で設定されている場合について説明したが、その限りではない。フロア上で利用者の行動をより注意深く解析したい領域には細かく仮想ポイントを設定し、それほど注意深く解析する必要がない領域には粗く仮想ポイントを設定してもよい。しかし、フロア内において複数の仮想ポイントが一定距離の間隔で設定することで、フロア全体の利用者の行動を満遍なく解析できる利点がある。
【0120】
以上、情報処理装置、情報処理方法、及び、プログラムの実施形態について説明したが、本発明は上記の実施形態に限定されない。また、上記の実施形態は、本発明の主旨を逸脱しない範囲において、種々の改良や変更が可能である。
例えば、一実施形態では、サーバ5による機能の少なくとも一部を店舗端末4のソフトウェアにより実現してもよいし、店舗端末4による機能の少なくとも一部をサーバ5のソフトウェアにより実現してもよい。また、店舗端末4の機能、及びサーバ5の機能の各々を、必要に応じて、店舗端末4及びサーバ5の間で分散させて実現してもよい。サーバ5で実行される機能を複数の装置で分散させて実行してもよい。
【0121】
例えば、上述した実施形態では、店舗端末4とサーバ5の間のデータ授受がネットワークNW経由で行われる場合について説明したが、その限りではない。店舗端末4とサーバ5の間のデータ授受は、例えば、USB(Universal Serial Bus)メモリ、SD(Secure Digital)メモリカード、HDD装置、SSD(Solid State Drive)等の記憶媒体を経由して行うこともできる。
【符号の説明】
【0122】
1…行動解析システム
2…無線タグ
21…制御部
22…通信部
3…受信機
31…電波受信部
32…入射角測定部
33…通信部
4…店舗端末
41…制御部
42…表示部
43…通信部
5…サーバ
51…制御部
511…第1取得部
512…第2取得部
513…表示制御部
52…ストレージ
53…通信部
NW…ネットワーク
CT…カート