【実施例1】
【0012】
本発明の情報処理システムおよび情報処理方法の実施例について以下に説明する。
図1に、本実施例の情報処理システム101のブロック図を示す。
【0013】
情報処理システム101は、グラフ処理装置110と、データベース125と、事例データベース126とを有する。グラフ処理装置110は、対象選択器120と、事例生成器122と、シナリオグラフ生成器123と、可能性の束生成器124とを有する。グラフ処理装置110は、時系列データ107および関係性データ108を入力とし、シナリオグラフデータ105および可能性の束データ102を出力する。可能性の束102は、ユーザに提示するためにユーザインタフェース(I/F)127へ出力される。
【0014】
本実施例では、例として渋滞を対象としたグラフ処理を処理対象として説明する。ここで、時系列データ107の例を
図3A,Bに示す。時系列データ107は、データベース125に保存される。
図3Aには、時刻別の通行車両数の時系列データ300を、
図3Bにはデータ300に対応する平均車速の時系列データ301を示した。時系列データ107は、道路に配置されたセンサ毎に取得されるものであり、道路を通過する通行車両数および同平均車速が取得される。
【0015】
関係性データ108の例を
図4A,Bに示す。また、
図4A,Bに示した関係性データ108の元になる道路に対するセンサの配置を
図4Cに示す。
【0016】
関係性データ108は、時系列データの源と源との間の関係性を表したデータであり、本実施例ではセンサ間の関係性を表したデータである。関係性データ108は、データベース125に保存される。
図4Cに示した交差点402を含む道路上に分散して配置されたセンサ1〜7を、各センサを頂点とし、隣り合うセンサを辺でつないでグラフ表記すると
図4Aのグラフ400になる。また、
図4Bのセンサ間の関係性のデータ401は、
図4Aのグラフ400をデータ構造で表記したものである。センサ間の関係性のデータ401では、センサ間に関係性がある場合は「1」、無い場合は「0」となる。本実施例では、関係性は道路による繋がりを表し、例えば、道路1の道路2との交差点402に配置されたセンサ1と道路2に配置されたセンサ2は、道路1と道路2が交差点で接続されており、またセンサ同士がグラフ400上で隣り合って接続されているので関係性があり、センサ2とセンサ3はグラフ400上で隣り合って接続されていないので、関係性がない。本実施例では、渋滞を事例とし、関係性はセンサ群の空間的な配置関係であるが、他の実施例としては、会社の倒産を事例とし、関係性は会社間の取引関係とすることもできる。
【0017】
図18に、情報処理システム101およびユーザ端末1801のハードウェア構成を示す。情報処理システム101とユーザ端末1801の間は、ネットワーク1802および無線基地局1803を介して、無線接続される。本実施例では、無線接続の例を示したが、有線接続でも実施可能である。また、本実施例の道路上に配置されたセンサ群(センサ1,2,・・・)1804は、ネットワーク1802を介して情報処理システム101と接続される。これにより、情報処理システム101は、時系列データの源であるセンサ群1804からの情報を収集し、時系列データ107を作成して、データベース125に保存することができる。
【0018】
情報処理システム101は、中央処理装置(CPU)1805と、主記憶1806と、ストレージ1807と、ネットワークインタフェース(I/F)1808とを有する。情報処理システム101の対象選択器120、事例生成器122、シナリオグラフ生成器123、および可能性の束生成器124は、プログラムとしてストレージ1807に保存され、CPU1805および主記憶1806で実行される。
【0019】
ユーザ端末1801は、例えばタブレット端末などの携帯端末であり、ユーザI/F127を実現する。ユーザ端末1801は、CPU1809と、主記憶1810と、ストレージ1811と、タッチパネル1812と、ネットワークI/F1813とを備える。ユーザ端末1801は、タッチパネル1812で対象の事例の選択などのユーザからの入力を受け付け、タッチパネル1812の液晶画面に可能性の束102などを表示する。
【0020】
次に、本実施例の情報処理システム101によるグラフ処理について説明する。
図2に、情報処理システム101のグラフ処理の動作のフローチャートを示す。
【0021】
先ず、対象の選択のステップ201で、ユーザは対象の事例を選択する。本実施例では、ユーザは、対象選択器120からユーザ端末1801のタッチパネル1812を介して提示される対象の候補うち「渋滞」を対象として選択したとする。対象として「渋滞」が選択されたことを受信した対象選択器120は、事例生成器122に、対象の定義103として「渋滞」の定義を送信する。本実施例では、「渋滞」の定義は、平均車速20km/h以下とする。対象の定義103は、予めストレージ1807に保存しておいてもよいし、ユーザがタッチパネル1812から入力できるようにしてもよい。また、対象選択器120は、対象の定義103として、さらに、昨日と一昨日の事例と指定して、事例生成器122に送信する。昨日と一昨日という事例の期間は、ユーザがタッチパネル1812から入力できるようにしてもよいし、予め設定しておいてもよい。
【0022】
対象の定義103を受信した事例生成器122は、受信した対象の定義103に対応する時系列データ107と関係性データ108とをデータベース125から取得する。
図2においては、当該処理はステップ202とステップ203に相当する。
【0023】
事例生成処理204について説明する。事例生成処理204は事例生成器122で実行される。事例生成器122は、対象の定義103、時系列データ107、および関係性データ108を入力とし、事例グラフデータ106を出力とする。
【0024】
事例生成処理204の詳細フローチャートを
図5に記す。処理501−1〜501−2間のループ処理において、事例生成器122は、時系列データ107を走査し、事象(本実施例では渋滞)を抽出し(処理502)、抽出された事象に対応する頂点の情報を生成する(処理503)。
【0025】
図6A,B,Cに処理502および処理503の例を示す。事例生成器122は、平均車速の時系列データ301において、対象の定義103に適合する事象を抽出する。ここでは平均時速20km/h以下に適合する事象である
図6Aで楕円601〜603で囲んだ事象1〜3が抽出される。抽出された事象は頂点の情報として生成され、グラフ表記では
図6Bに示したグラフ610の頂点となり、データ構造で表現すると
図6Cに示した事例グラフデータ620のエントリになる。各頂点の情報は、事例グラフデータ620の各エントリのように、頂点データとして、センサ識別情報(ID)やセンサデータの取得の時刻などの時系列データの情報と対応付けられて、主記憶1806やストレージ1807に保持される(処理504)。
【0026】
続いて、事例生成器122は、生成された頂点の情報から任意の2つの頂点に対するループ処理(処理505−1〜505−2)を実行する。ここで、説明のために仮に、任意の2つの頂点として選択された頂点をそれぞれ、頂点Aおよび頂点Bとする。事例生成器122は、当該2つの頂点の情報に保持されている時刻のデータから、頂点間のセンサデータの取得の時間間隔を処理506で評価する。時間間隔(頂点Bのセンサデータの取得の時刻と頂点Aのセンサデータの取得の時刻の間の時間)が0より大きく予め決められた閾値よりも小さい場合、事例生成器122は、処理507において、当該2つの頂点の関係性を関係性データ401から取得する。事例生成器122は、取得した関係性を処理508で評価し、関係性が「1」、即ち関係性がある場合は、処理509において当該2つの頂点間(ここでは頂点Aと頂点Bの間)に辺の情報を出力する。出力された辺の情報は、頂点Aの情報の辺データの頂点Bの列に「1」として保存される。一方、処理507、処理509のいずれかの評価で条件を充たさない(Nであった)場合は、事例生成器122は、辺の情報を出力しない。したがって、辺の情報は「0」のままになる。以上のようにして、事例生成器122は辺の情報を生成する。
【0027】
図7A,Bに、処理505−1〜処理505−2の処理の例を示す。ここで閾値を2とし、
図6Cの頂点1(611)と頂点2(612)を例に説明する。頂点1(611)と前記頂点2(612)は、事例グラフデータ620から時間間隔(頂点2の時刻(=4)−頂点1の時刻(=3)=1)が1であり、処理506の評価式(0<1<2)が成り立つ。また、センサ間の関係性のデータ401より関係性があり処理508の評価式(関係性=1)が成り立つ。従って、頂点1と頂点2間で
図7Aのグラフ表記700の辺1(701)の情報が
図7Bの辺データ711のように出力される。同様に、事例生成器122は、頂点1と頂点3間で辺2(702)の情報を出力し、頂点2と頂点3間には辺の情報を出力しない。ここで、辺は時間方向に大きくなる方向に対して方向を持つ有向辺である。以上の生成された辺の情報をデータ表記で示すと、
図7Bの事例グラフデータ710の各エントリのようになる。
【0028】
以上の処理で、事例生成器122は、対象の定義103、時系列データ107および関係性データ108を入力とし、事例グラフデータ106を出力する。
【0029】
次に、シナリオグラフ生成処理205について説明する。シナリオグラフ生成処理は、事例グラフデータの複数のエントリを統合し、シナリオグラフ(確率過程グラフ)を生成する処理である。
【0030】
シナリオグラフ生成処理205は、シナリオグラフ生成器123で実行される。シナリオグラフ生成器123は、事例グラフデータ106を入力とし、シナリオグラフデータ105を出力とする。
【0031】
シナリオグラフ生成処理205のフローチャートを
図8に示す。先ず処理801において、シナリオグラフ生成器123は、事例グラフデータを取得する。その後、シナリオグラフ生成器123は、事例グラフデータから任意の1頂点を選択(選択した頂点を頂点Aとする)するループ処理(802−1〜802−2)を実行する。
【0032】
シナリオグラフ生成器123は、頂点Aが既に類似頂点として選択されているかどうかの評価を処理803で実施し、選択されていない場合は処理804に移行する。続いて、シナリオグラフ生成器123は、取得した事例グラフデータから頂点A以外の頂点を選択(選択した頂点を頂点Bとする)するループ処理(805−1〜805〜2)を実行する。処理806にて、シナリオグラフ生成器123は、頂点Aと頂点Bの類似度を計算する。類似度は、例えば、それぞれの頂点が保持する平均速度などのデータの差分絶対値を指標とする。シナリオグラフ生成器123は、処理807において、求めた類似度と予め指定された閾値とを比較して評価し、評価式(類似度<閾値)が充たされれば、処理808に移行し、頂点Bを頂点Aの類似頂点として類似頂点リストに登録する。
【0033】
処理801〜805−2までの処理の具体例を
図9A,B,Cに示す。例として、処理801でシナリオグラフ生成器123が取得した事例グラフデータを、
図9Aに示した事例グラフデータ1(900)と事例グラフデータ2(920)とする。それぞれの事例グラフデータは対象の定義103で指定されたものであり、事例グラフデータ1が昨日のデータで、事例グラフデータ2が一昨日のデータに対応する。事象グラフデータ1および事象グラフデータ2のグラフ表記をそれぞれ
図9Bのグラフ910およびグラフ930に示す。
【0034】
シナリオグラフ生成器123は、先ず頂点Aとして事例グラフデータ1の頂点1を選択する。頂点Aは、類似頂点として選択されたことは無い。ループ処理805にて、シナリオグラフ生成器123は、頂点Bとして事例グラフデータ1の頂点2を選択する。そして、シナリオグラフ生成器123は、頂点Aと頂点Bの平均車速から類似度を計算(頂点Aの平均車速(=15)−頂点Bの平均車速(=10)=5)し、閾値と比較する。ここで、閾値は1とすると、処理807の評価式(5<1)は充足しないことになり、頂点Bは類似頂点リストに追加されない。シナリオグラフ生成器123は、処理805−1に戻り、頂点Bとして事例グラフデータ1の頂点3を選択し、同様に処理する。ここでも、評価式は充足されないので頂点Bは類似頂点リストに追加されない。続いて同様に、シナリオグラフ生成器123は、事例グラフデータ2の頂点1を処理する。事例グラフデータ2の頂点1は処理807の評価式を充足するので、類似頂点リストに追加される。これを繰り返し、
図9Cに示した類似頂点リスト940が生成される。ここで、類自頂点リスト940の頂点Aの列に事例グラフデータ2の頂点1が含まれないが、これは事例グラフデータ1を先に処理したために、事例グラフデータ2の頂点1が類似頂点として選択されたためである。
【0035】
次に、処理810以降を説明する。処理810にて、シナリオグラフ生成器123は、辺識別子を定義し、「2」で初期化する。その後、シナリオグラフ生成器123は、頂点Aに対する類似頂点リストから頂点を選択(選択した頂点を類似頂点とする)するループ処理(811−1〜811−2)を実行する。
【0036】
処理812において、シナリオグラフ生成器123は、類似頂点の辺データを取得し、辺データが「1」のデータ、即ち関係性のある頂点に対する辺、を「2」で初期化された辺識別子に変更する(処理813)。そして処理814にて、シナリオグラフ生成器123は、類似頂点の頂点データおよび変更された辺データを頂点Aの情報に保存する。シナリオグラフ生成器123は、当該ループの最後に辺識別子に1を加える。辺識別子に1を加える理由は、辺識別子が重複した値を持つことを回避するためであり、変形例としては、1以外の数字または重複リストなどによっても実現できる。以上を類似頂点リストの頂点がなくなるまで繰り返すことによって、頂点Aと類似する頂点を、頂点Aに統合し、辺識別子によって、統合された辺と統合前の辺とを区別することが可能となる。これらを繰り返すことによって、事例グラフデータの複数のエントリを、一つのグラフデータに統合できる。ここで、統合されたグラフデータをシナリオグラフデータと呼ぶ。
【0037】
処理810〜処理811−2までの処理の具体例を
図10A,Bに示す。
図10では、簡単のため、事例グラフデータ1の頂点1を頂点11、事例グラフデータ2の頂点1を頂点21のように記載する。頂点Aが頂点11の際に、類似頂点リスト940の対応する類似頂点は頂点21である。従って、処理812にて、シナリオグラフ生成器は頂点21の辺データを取得する。頂点21の辺データでは、頂点22に対応する辺が「1」となっているため、処理813にて、シナリオグラフ生成器123は、辺データを辺識別子「2」に書き換える。そして処理814にて、シナリオグラフ生成器123は、頂点21の保持するデータを頂点11に追加する。以上を繰り返すことによって、
図10Bに示したシナリオグラフデータ1010が生成される。このとき、シナリオグラフデータ1010のグラフ表記は
図10Aのグラフ1000のように描け、複数の事例グラフデータのエントリが一つに統合されたことが分かる。さらに、シナリオグラフデータ1010では、辺識別情報データ1011から、統合前の辺を区別できる。
【0038】
以上の処理で、シナリオグラフ生成処理205では、事例グラフデータ106が入力され、シナリオグラフデータ105が出力される。
【0039】
次に可能性の束生成処理206について説明する。可能性の束生成処理は、シナリオグラフデータを元に、複数のシナリオ(これを可能性の束と定義する)を生成する処理である。複数のシナリオは、時系列データと関係性データから予測された、例えば、未来の起き得る事例群であり、ユーザは複数のシナリオを本実施例のシステムによって得ることで、想定していなかった事例などを発見できる。
【0040】
可能性の束生成処理206は、可能性の束生成器124で実行される。可能性の束生成器124は、シナリオグラフデータ105を入力とし、可能性の束102を出力とする。
【0041】
可能性の束生成処理206のフローチャートを
図11に示す。先ず、処理1101において、可能性の束生成器124は、シナリオグラフデータを取得する。その後、可能性の束生成器124は頂点リストを初期化し(処理1102)、ユーザがタッチパネル1812から開始頂点の選択をする(処理1103)。処理1103では、例えば、グラフ処理装置110はユーザに対し、タッチパネル1802を介して取得したシナリオデータに基づいてシナリオグラフを提示し、ユーザは提示されたシナリオグラフ内から開始頂点を選択する。
【0042】
処理1104にて、可能性の束生成器124は、選択された開始頂点を頂点リストへ追加する。次に、可能性の束生成器124は処理1105のトラバース処理を実行するが、当該処理は再帰関数となっており、トラバース処理内部でトラバース処理を実行している。
【0043】
トラバース処理1105のフローチャートを
図12に示す。トラバース処理では、選択された頂点の辺データを取得(処理1201)し、取得した辺データに格納されている辺識別子のうちから確率的に遷移する辺識別子を取得(処理1202)し、取得した辺識別子の遷移確率を算出し(処理1203)、算出した遷移確率から遷移する辺を選択する(処理1204)。
【0044】
処理1203では、遷移確率は、0を除く辺識別子の種類数を母数として、各識別子の種類間で等しい遷移確率とする。また処理1204では、可能性の束生成器124は、算出した遷移確率に基づいて最も低い遷移確率を持つ辺を選択する。遷移確率に差ができうるのは、統合される複数の頂点がそれぞれ同じ統合された頂点への遷移確率を有すると、統合により遷移確率がその和となるためである。
【0045】
図19は、入力された事例グラフデータについて頂点の統合がなされ、重みつきの確率過程グラフが作成される概念を示した模式図である。
図19の左の二つの事例グラフ1901間で、2組(1902、1903)の頂点が類似の特徴を持つために統合され、
図19の右に示したように他の辺に対して重みが大きい辺を有する確率過程グラフ1904ができる。
【0046】
次に、処理1205で、可能性の束生成器124は、選択された辺に含まれる辺識別子と同一の辺識別子を持つ全ての辺の辺データを取得する。可能性の束生成器124は、取得した辺データが0かどうか評価し(処理1206)、0で無かった場合、取得した辺のループ処理(1207−1〜1207−2)を実行する。当該ループ処理内では、該辺の接続先の頂点を選択し(処理1208)、頂点リストに追加(処理1209)、そして、トラバース処理1105を実行する再帰処理となる。
【0047】
上記の処理を行うことで得られた頂点リストをシナリオとして登録することで、シナリオグラフデータ105から、選択された開始頂点を起点としたシナリオを生成することができる。また、複数の開始頂点を選択することで、複数のシナリオを生成することができる。当該複数のシナリオを可能性の束と呼ぶ。
【0048】
処理1101〜処理1106までの処理の具体例を示す。本例では、可能性の束生成器124は、
図10Bのシナリオグラフデータ1000を処理1101にて取得する。またここで、処理1103で選択された開始頂点を頂点11とする。処理1104において、頂点11が頂点リストに追加される。その後トラバース処理1105において、可能性の束生成器124は、頂点11の辺データを取得し(処理1201)、確率的に遷移する辺識別子を取得する(処理1202)。頂点11の0を除く辺識別子の種類数は2(1と2の2種類)であるから、確率的に遷移する辺識別子は辺識別子1と辺識別子2である。次に処理1203において、頂点11の辺識別子の種類数は2であるから、辺識別子1の遷移確率は1/2、辺識別子2の遷移確率は1/2となる。本実施例では、最小となる確率の辺が複数あった場合には、若い番号の辺識別子を選択する。したがって本例では、処理1205で辺識別子1が選択される。ここで、遷移確率に差が生じる場合としては、仮に例えば、頂点Xから頂点Yに向かう辺があり、頂点Xと頂点11とが類似し、また頂点Yと頂点22とが類似する場合であり、この場合には頂点11から頂点22に遷移する確率が2/3で、頂点11から頂点12および頂点13に遷移する確率の1/3よりも高くなる。辺識別子1を持つ辺は頂点12と頂点13であり、頂点12と頂点13は並行して遷移するので、処理1207−1〜1207−2のループ処理では頂点12と頂点13が対象となる。まず頂点12が選択され(処理1208)、頂点12が頂点リストへ登録される(処理1209)。次のトラバース処理では頂点12が選択された頂点として処理される。当該頂点は接続する辺を持たないため、評価式(処理1206)が偽となり、トラバース処理が終了する。頂点13においても頂点12と同様に処理される。
【0049】
以上の処理から、頂点リストには頂点11、頂点12、頂点13が登録されており、これがシナリオデータとなる。この登録されたシナリオデータを
図13Aに示す。シナリオデータ1310は各頂点の頂点データと辺データを保持している。また、シナリオデータ1310のグラフ表記を
図13Bのグラフ1300に示す。さらに、処理1103で複数の頂点が選択されることで、単一のシナリオだけでなく、複数のシナリオ、すなわち可能性の束を得ることができる。
【0050】
最後に、可能性の束生成処理206は、生成した可能性の束となるシナリオデータを事例データベース126に保存し、タッチパネル1812に可能性の束を提示する(処理207)。
【0051】
以上の処理(処理201〜207)によって、グラフ処理装置110は、時系列データと関係性データを入力とし、シナリオグラフデータ(確率過程グラフ)を生成し、シナリオグラフデータから複数のシナリオ、即ち可能性の束を出力する。
【0052】
以上のように、本実施例の情報処理システム101は、ひとつの頂点から複数の頂点に平行して遷移する場合にも対応することができ、ひいては可能性の束の算出、希少な事例の発見や解析ができる。また、本実施例では、もっとも小さい遷移確率となる辺を処理1204で選択したが、逆に処理1204でもっとも高い遷移確率となる辺を選択することで、もっとも起こりそうな事例の発見や解析が可能となる。