(57)【要約】【課題】複数の時系列データから、高い精度で対象を識別できる特徴量を生成する。【解決手段】計算機は、データ生成部と、複数の頂点及び辺から構成されるグラフを管理するためのグラフ情報を保持する記憶部を有し、データ生成部が、複数のデータ及びグラフ情報を取得して、頂点の数だけ複数のデータを格納する記憶領域を確保するステップと、複数のデータの各々を入力値に変換し、少なくとも一つの頂点に対応する記憶領域に少なくとも一つの入力値を設定するステップと、第１頂点に対応する記憶領域に設定された値を、第１頂点に対応する記憶領域に設定された値及び第１頂点に直接接続される他の頂点に対応する記憶領域に設定された値を用いて更新する更新処理を実行するステップと、複数の頂点の各々に対応する記憶領域に設定された値の集合を特徴量として出力するステップと、を含む。【選択図】図５
2018005448.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ、前記プロセッサに接続されるメモリ、前記プロセッサに接続されるネットワークインタフェースを有する複数の計算機を備える計算機システムにおけるデータ生成方法であって、
少なくとも一つの計算機は、複数のデータを取得し、前記複数のデータを用いて識別対象が属するクラスを識別するための特徴量であるパタンデータを生成するデータ生成部を有し、
少なくとも一つの計算機は、複数の頂点、及び前記複数の頂点を接続する辺から構成されるグラフを管理するためのグラフ情報を保持する記憶部を有し、
前記データ生成方法は、
前記データ生成部が、前記複数のデータ及び前記グラフ情報を取得して、前記グラフに含まれる複数の頂点の数だけ前記複数のデータを格納する記憶領域を確保する第１のステップと、
前記データ生成部が、前記複数のデータの各々を入力値に変換し、前記グラフに含まれる少なくとも一つの頂点に対応する記憶領域に、少なくとも一つの入力値を設定する第２のステップと、
前記データ生成部が、第１頂点に対応する記憶領域に設定された値を、前記第１頂点に対応する記憶領域に設定された値及び前記第１頂点に直接接続される他の頂点に対応する記憶領域に設定された値を用いて更新する更新処理を実行する第３のステップと、
前記データ生成部が、前記グラフに含まれる前記複数の頂点の各々に対応する記憶領域に設定された値の集合を前記パタンデータとして出力する第４のステップと、を含むことを特徴とするデータ生成方法。
【請求項２】
請求項１に記載のデータ生成方法であって、
前記記憶部は、前記複数の入力値の各々を設定する頂点の定義情報を保持し、
前記第２のステップは、前記データ生成部が、前記定義情報に基づいて、前記複数の入力値の各々を設定する頂点を特定するステップを含み、
前記第３のステップは、前記データ生成部が、前記第１頂点に対応する記憶領域に設定された値及び前記第１頂点に接続される他の頂点に対応する記憶領域に設定された値を用いた反応拡散方程式に基づいて前記第１頂点に対応する記憶領域に設定された値を更新するステップを含み、
前記第４のステップは、前記データ生成部が、前記更新処理が複数回実行された後の前記グラフに含まれる複数の頂点の各々に対応する記憶領域に設定された値の集合を前記パタンデータとして出力するステップを含むことを特徴とするデータ生成方法。
【請求項３】
請求項２に記載のデータ生成方法であって、
前記頂点に対応する記憶領域には、前記複数のデータの各々に対応する粒子の数が格納され、
前記第２のステップは、
前記データ生成部が、前記複数のデータの各々を、前記複数のデータの各々に対応する粒子の数に変換するステップと、
前記データ生成部が、前記複数のデータの各々に対応する粒子の数を、前記グラフに含まれる少なくとも一つの頂点に対応する記憶領域に設定するステップと、を含み、
前記第３のステップは、
前記データ生成部が、前記反応拡散方程式に基づいて前記第１頂点に設定された粒子を移動させるか否かを判定するステップと、
前記データ生成部が、前記判定の結果に基づいて、前記第１頂点に設定された粒子の移動先の頂点を決定するステップと、
前記データ生成部が、前記決定に基づいて、前記第１頂点に対応する記憶領域に設定された粒子の数を更新するステップと、を含むことを特徴とするデータ生成方法。
【請求項４】
請求項３に記載のデータ生成方法であって、
前記データ生成部は、前記複数のデータに対応する粒子の数を管理する複数の粒子貯蔵領域を管理し、
前記グラフに含まれる複数の頂点は、前記更新処理が実行された後に当該頂点に対応する記憶領域に設定された粒子の数が初期化される削除頂点を含み、
前記第２のステップは、前記データ生成部が、前記複数のデータの各々に対応する粒子の数を管理する前記粒子貯蔵領域の値を前記グラフの頂点に対応する記憶領域に設定した粒子の数だけ減算するステップを含み、
前記データ生成方法は、
前記データ生成部が、前記更新処理が実行された後、前記削除頂点に対応する記憶領域に設定された粒子の数を初期化するステップと、
前記データ生成部が、前記削除頂点に対応する記憶領域に設定された粒子の数を管理する前記粒子貯蔵領域の値を、前記削除頂点に対応する記憶領域に設定された前記粒子の数だけ加算するステップと、を含むことを特徴とするデータ生成方法。
【請求項５】
請求項４に記載のデータ生成方法であって、
少なくとも一つの計算機は、前記パタンデータを用いて、前記識別対象が属するクラスを識別する識別処理部を有することを特徴とするデータ生成方法。
【請求項６】
プロセッサ、前記プロセッサに接続されるメモリ、前記プロセッサに接続されるネットワークインタフェースを有する複数の計算機を備える計算機システムであって、
少なくとも一つの計算機は、複数のデータを取得し、前記複数のデータを用いて識別対象が属するクラスを識別するための特徴量であるパタンデータを生成するデータ生成部を有し、
少なくとも一つの計算機は、複数の頂点、及び前記複数の頂点を接続する辺から構成されるグラフを管理するためのグラフ情報を保持する記憶部を有し、
前記データ生成部は、
前記複数のデータ及び前記グラフ情報を取得して、前記グラフに含まれる複数の頂点の数だけ前記複数のデータを格納する記憶領域を確保し、
前記複数のデータの各々を入力値に変換し、前記グラフに含まれる少なくとも一つの頂点に対応する記憶領域に、少なくとも一つの入力値を設定し、
第１頂点に対応する記憶領域に設定された値を、前記第１頂点に対応する記憶領域に設定された値及び前記第１頂点に直接接続される他の頂点に対応する記憶領域に設定された値を用いて更新する更新処理を実行し、
前記グラフに含まれる前記複数の頂点の各々に対応する記憶領域に設定された値の集合を前記パタンデータとして出力することを特徴とする計算機システム。
【請求項７】
請求項６に記載の計算機システムであって、
前記記憶部は、前記複数の入力値の各々を設定する頂点の定義情報を保持し、
前記データ生成部は、
前記頂点に対応する記憶領域に前記入力値を設定する場合、前記定義情報に基づいて、前記複数の入力値の各々を設定する頂点を特定し、
前記更新処理では、前記データ生成部が、前記第１頂点に対応する記憶領域に設定された値及び前記第１頂点に接続される他の頂点に対応する記憶領域に設定された値を用いた反応拡散方程式に基づいて前記第１頂点に対応する記憶領域に設定された値を更新し、
前記更新処理が複数回実行された後の前記グラフに含まれる複数の頂点の各々に対応する記憶領域に設定された値の集合を前記パタンデータとして出力することを特徴とする計算機システム。
【請求項８】
請求項７に記載の計算機システムであって、
前記頂点に対応する記憶領域には、前記複数のデータの各々に対応する粒子の数が格納され、
前記データ生成部は、
前記頂点に対応する記憶領域に前記入力値を設定する場合、前記複数のデータの各々を、前記複数のデータの各々に対応する粒子の数に変換し、前記複数のデータの各々に対応する粒子の数を、前記グラフに含まれる少なくとも一つの頂点に対応する記憶領域に設定し、
前記更新処理では、前記データ生成部は、前記反応拡散方程式に基づいて前記第１頂点に設定された粒子を移動させるか否かを判定し、前記判定の結果に基づいて前記第１頂点に設定された粒子の移動先の頂点を決定し、前記決定に基づいて前記第１頂点に対応する記憶領域に設定された粒子の数を更新することを特徴とする計算機システム。
【請求項９】
請求項８に記載の計算機システムであって、
前記データ生成部は、前記複数のデータに対応する粒子の数を管理する複数の粒子貯蔵領域を管理し、
前記グラフに含まれる複数の頂点は、前記更新処理が実行された後に当該頂点に対応する記憶領域に設定された粒子の数が初期化される削除頂点を含み、
前記データ生成部は、
前記頂点に対応する記憶領域に前記入力値を設定する場合、前記複数のデータの各々に対応する粒子の数を管理する前記粒子貯蔵領域の値を前記グラフの頂点に対応する記憶領域に設定した粒子の数だけ減算し、
前記更新処理が実行された後、前記削除頂点に対応する記憶領域に設定された粒子の数を初期化し、
前記削除頂点に対応する記憶領域に設定された粒子の数を管理する前記粒子貯蔵領域の値を、前記削除頂点に対応する記憶領域に設定された前記粒子の数だけ加算することを特徴とする計算機システム。
【請求項１０】
請求項９に記載の計算機システムであって、
少なくとも一つの計算機は、前記パタンデータを用いて、前記識別対象が属するクラスを識別する識別処理部を有することを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の時系列データを用いて、識別対象を所定のクラスに分類するためのデータ（特徴量）を生成する方法及びシステムに関する。
【背景技術】
【０００２】
社会インフラ及び都市等を効率的な設計及び運用を目的として、実社会及びサイバー空間のデータから社会インフラ等の状態を解析若しくは予測し、又は、社会インフラ等を制御等する技術が注目されている。
【０００３】
前述した技術の中で、特に、入力データの識別技術は重要な役割を占める。入力データは、音声データ、化学物質、温度、及び湿度等のセンシングデータ、自動車等の機械及び計算機のログデータ、並びにメール及びＳＮＳ等のログデータから構成される。
【０００４】
入力データを用いた識別処理は、環境及び要素（人、モノ、情報等）がどのような状態にあるかを分類する処理である。具体的には、予め定義された複数のクラスのうち、入力データが属するクラスを求める処理である。例えば、「渋滞」及び「事故」等の交通状態を表すクラス、「爆発物」等の対象の物質を表すクラス等が考えられる。
【０００５】
時系列データを入力データとして用いる識別処理では、一般に、時系列データは、時間方向の平均、分散、又は周波数変換等の統計特徴量に変換され、統計特徴量を用いて入力データが属するクラスが特定される。
【０００６】
前述した方法では、時系列データが複雑な過渡応答を示す場合、異なる特徴を有する時系列データが複数存在する場合（統計特徴量を求める場合の時間方向の長さが異なる場合）、複数の時系列データの間の関係にノイズが載った場合、識別精度が著しく低下する問題がある。
【０００７】
例えば、複数の化学センシングデータを用いて物体の種別等を分類する識別処理の場合、化学物質は物体から空間を通して拡散し、センサに到達するため、計測環境によっては到達時間に大きなばらつきが発生する。複数の化学物質を計測する場合、それぞれの化学物質のセンシングデータ間の過渡応答にノイズが載った状態となる。
【０００８】
時系列データの特徴量を抽出する技術として、特許文献１に記載された技術が知られている。特許文献１には、「１次元時系列信号を非定常カオス解析に基づいて分析し、それによって生成される２次元画像から高次局所自己相関係数を計算して特徴を抽出する。この高次局所自己相関係数の計算は、前記１次元時系列信号の分析によって生成される２次元画像のヒストグラムを算出することによって得た閾値によって、２次元画像情報を２値の情報に変換することによって生成される２値画像情報に基づいて行われる。前記１次元時系列信号は音声信号或いは音響信号であり、前記非定常カオス解析はリカレンスプロット手法によって行われる。」ことが記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−１１６５８８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
一般的に、データの時間変化を識別する場合、多次元の各次元の入力データに対して二次特徴量を生成し、ニューラルネットワーク又はサポートベクターマシン等の識別器に入力して機械学習を行う。二次特徴量は、ヒストグラム、時間方向の平均値、及び分散値等、統計処理によって算出された特徴量、又は、ＦＦＴ等を用いて算出された周波数若しくは位相等が考えられる。前述の学習方法の場合、学習時に用いた教師データへのフィッティングは高精度で行うことができるが、未知データに対する識別精度は低下する。
【００１１】
また、特許文献１の技術を多次元の入力データに拡張しても、次元間の関係性（入力データ間の影響）が考慮されていないため、高い識別精度を実現できない。
【００１２】
従来技術では、特徴量に問題があるため、複数の時系列データを対象とした識別処理の識別精度が低いと考えられる。本発明は、複数の時系列データを対象とした高い精度の識別処理を実現する特徴量を含むデータを生成する方法及びシステムを提供する。
【課題を解決するための手段】
【００１３】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、プロセッサ、前記プロセッサに接続されるメモリ、前記プロセッサに接続されるネットワークインタフェースを有する複数の計算機を備える計算機システムにおけるデータ生成方法であって、少なくとも一つの計算機は、複数のデータを取得し、前記複数のデータを用いて識別対象が属するクラスを識別するための特徴量であるパタンデータを生成するデータ生成部を有し、少なくとも一つの計算機は、複数の頂点、及び前記複数の頂点を接続する辺から構成されるグラフを管理するためのグラフ情報を保持する記憶部を有し、前記データ生成方法は、前記データ生成部が、前記複数のデータ及び前記グラフ情報を取得して、前記グラフに含まれる複数の頂点の数だけ前記複数のデータを格納する記憶領域を確保する第１のステップと、前記データ生成部が、前記複数のデータの各々を入力値に変換し、前記グラフに含まれる少なくとも一つの頂点に対応する記憶領域に、少なくとも一つの入力値を設定する第２のステップと、前記データ生成部が、第１頂点に対応する記憶領域に設定された値を、前記第１頂点に対応する記憶領域に設定された値及び前記第１頂点に直接接続される他の頂点に対応する記憶領域に設定された値を用いて更新する更新処理を実行する第３のステップと、前記データ生成部が、前記グラフに含まれる前記複数の頂点の各々に対応する記憶領域に設定された値の集合を前記パタンデータとして出力する第４のステップと、を含むことを特徴とする。
【発明の効果】
【００１４】
本発明によれば、データ間の影響及びデータの過渡応答を反映した特徴量であるパタンデータを生成できる。当該パタンデータを用いることによって識別処理の識別精度を向上できる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
【図面の簡単な説明】
【００１５】
【図１】実施例１の計算機システムの構成の一例を示す説明図である。
【図２】実施例１の時系列データの一例を示す説明図である。
【図３Ａ】実施例１のグラフの一例を示す説明図である。
【図３Ｂ】実施例１のグラフの一例を示す説明図である。
【図４】実施例１のグラフデータの一例を示す説明図である。
【図５】実施例１のデータ処理部が実行するパタンデータ生成処理を説明するフローチャートである。
【図６】実施例１の時系列データの流入処理の概念を示す説明図である。
【図７】実施例１のパタンデータの一例を示す説明図である。
【図８】実施例１の識別器へのパタンデータの入力方法の一例を示す説明図である。
【図９】実施例１の変換器が頂点のデータを変換する場合に使用するリストの一例を示す説明図である。
【図１０】実施例１の計算機の識別処理の識別精度を示す説明図である。
【図１１】実施例１のデータ処理部が実行するパタンデータ生成処理の変形例を説明するフローチャートである。
【図１２】実施例２のデータ処理部が実行するパタンデータ生成処理を説明するフローチャートである。
【図１３】実施例２の時系列データの流入処理及び粒子の流出処理の概念を示す説明図である。
【図１４】実施例２の時系列データの流入処理及び粒子の流出処理の概念を示す説明図である。
【図１５Ａ】実施例２のパタンデータの一例を示す説明図である。
【図１５Ｂ】実施例２のパタンデータの一例を示す説明図である。
【図１６】実施例３のグラフデータの構造データの一例を示す説明図である。
【図１７】実施例３のグラフの一例を示す図である。
【図１８】実施例３のパタンデータの生成時に入力される時系列データの一例を示す説明図である。
【図１９】実施例３のパタンデータの一例を示す説明図である。
【図２０】実施例４のシステムが実行する処理を説明するフローチャートである。
【発明を実施するための形態】
【実施例１】
【００１６】
実施例１では、複数の時系列データを用いたパタンデータの生成方法及びパタンデータを用いた識別処理について説明する。
【００１７】
図１は、実施例１の計算機システム１００の構成の一例を示す説明図である。
【００１８】
図１に示すように、実施例１の計算機システム１００は、複数の計算機１０１、及びストレージシステム１０２から構成され、複数の計算機１０１及びストレージシステム１０２は、ネットワーク１０３を介して接続される。
【００１９】
本実施例の計算機システム１００は、３つの計算機１０１−１、１０１−２、１０１−３を含む。なお、計算機１０１の数は、３つより小さくてもいし、また、３つより大きくてもよい。
【００２０】
ネットワーク１０３は、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、及びＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等が考えられる。なお、本実施例はネットワーク１０３の種別に限定されない。また、複数の計算機１０１の各々を接続するネットワーク、及び複数の計算機１０１の各々とストレージシステム１０２とを接続するネットワークは、異なるネットワークであってもよい。
【００２１】
計算機１０１は、パタンデータ生成処理、及び生成されたパタンデータを用いた識別処理等を実行する。計算機１０１は、プロセッサ１１０、メモリ１１１、ネットワークインタフェース１１２を備え、各構成はバス１１４を介して互いに接続される。
【００２２】
プロセッサ１１０は、演算処理を実行する１つ以上のＣＰＵ１１５を含む。ＣＰＵ１１５は、メモリ１１１に格納されるプログラムを実行することによって、計算機１０１が有する機能を実現する。また、計算機１０１上で実行される処理は１つ以上のＣＰＵ１１５によって実行される。なお、１つのＣＰＵ１１５が複数の処理を実行してもよい。なお、ＣＰＵ１１５は、ＦＰＧＡ及びＧＰＵ等の演算装置であってもよい。
【００２３】
以下の説明では、機能部（モジュール）を主語に処理を説明する場合、ＣＰＵ１１５が、当該機能部を実現するプログラムを実行していることを示す。
【００２４】
メモリ１１１は、ＣＰＵ１１５（プロセッサ１１０）が実行するプログラム及び当該プログラムによって使用される情報を格納する。メモリ１１１に格納されるプログラム及び情報については後述する。また、メモリ１１１は、ＣＰＵ１１５が実行する処理に割り当てるメモリ空間を含む。
【００２５】
なお、当該メモリ空間は、複数のメモリ１１１のメモリ領域上に確保されてもよいし、また、１つのメモリ１１１のメモリ領域上に確保されてもよい。また、メモリ１１１は、複数の処理に割り当てられた１つのメモリ空間を含んでいてもよいし、複数の処理の各々に割り当てられた複数のメモリ空間を含んでいてもよい。
【００２６】
ネットワークインタフェース１１２は、ネットワーク１０３を介して外部装置と通信する。本実施例では、プロセッサ１１０は、ネットワークインタフェース１１２を介して、他の計算機１０１又はストレージシステム１０２にアクセスする。
【００２７】
ストレージシステム１０２は、計算機１０１が使用する各種データを格納する。ストレージシステム１０２は、プロセッサ１３０、メモリ１３１、ネットワークインタフェース１３２、ディスクインタフェース１３３、及び複数のＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１３４を備え、各構成はバス１３５を介して互いに接続される。
【００２８】
プロセッサ１３０、メモリ１３１、及びネットワークインタフェース１３２は、プロセッサ１１０、メモリ１１１、及びネットワークインタフェース１１２と同一のものである。ディスクインタフェース１３３は、複数のＨＤＤ１３４と接続するためのインタフェースである。ＨＤＤ１３４は、各種データを格納する記憶装置である。なお、ストレージシステム１０２は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等のＨＤＤ以外の記憶装置を有してもよい。
【００２９】
ここで、計算機１０１のメモリ１１１に格納されるプログラム及び情報について説明する。メモリ１１１は、データ処理部１２０を実現するプログラムを格納する。また、メモリ１１１は、グラフデータ１２１、時系列データ１２２、及びパタンデータ１２３を格納する。
【００３０】
データ処理部１２０は、パタンデータ生成処理及び識別処理を実行する。なお、データ処理部１２０は、前述した処理以外の処理を実行してもよい。
【００３１】
パタンデータ生成処理では、データ処理部１２０（ＣＰＵ１１５）は、パタンデータ１２３を生成するために用いるグラフに含まれる頂点に時系列データの値を入力し、各頂点に設定された時系列データの値を更新することによってパタンデータ１２３を生成する。ここで、グラフは、複数の頂点及び複数の頂点を接続する複数の辺から構成される。
【００３２】
識別処理では、データ処理部１２０（ＣＰＵ１１５）は、識別対象のデータをパタンデータ１２３に変換し、パタンデータ１２３を識別器に入力することによって所定の識別を行う。本実施例では、コンボリューショナルニューラルネットワーク（ＣＮＮ）又はニューラルネットワーク（ＮＮ）を識別器として用いるものとする。ＮＮは、一般的なデータ認識に用いられ、ＣＮＮは画像認識等に用いられる。
【００３３】
なお、データ処理部１２０は、複数のプログラムモジュールから構成されてもよい。例えば、データ処理部１２０は、パタンデータ１２３を生成するデータ生成部、識別処理を実行する識別処理部を含んでもよい。また、それぞれのプログラムモジュールを別々の計算機１０１が備える構成であってもよい。
【００３４】
グラフデータ１２１は、複数の頂点及び複数の辺から構成されるグラフのデータである。グラフデータ１２１の詳細は、図３Ａ、図３Ｂ、及び図４を用いて説明する。
【００３５】
時系列データ１２２は、識別対象のデータである。時系列データ１２２には、現在を含む所定の時間範囲に含まれる値、又は、現在の値を含む、所定のサンプル数の値を保持する。なお、メモリ１１１には、複数の時系列データ１２２が格納されてもよい。複数の時系列データ１２２は、同じ種類のデータでもよいし、異なる種類のデータでもよい。時系列データ１２２の一例については、図２を用いて説明する。
【００３６】
パタンデータ１２３は、複数の時系列データ１２２から生成された特徴量であり、グラフの頂点に設定された値の集合として与えられる。
【００３７】
本実施例では、グラフデータ１２１及び時系列データ１２２は、ストレージシステム１０２に格納される。したがって、ＣＰＵ１１５は、ストレージシステム１０２からグラフデータ１２１及び時系列データ１２２を取得し、取得されたグラフデータ１２１及び時系列データ１２２をメモリ１１１にロードする。
【００３８】
図２は、実施例１の時系列データ１２２の一例を示す説明図である。
【００３９】
図２では、時系列データＡ、時系列データＢ、時系列データＣ、及び時系列データＤの４つの時系列データ１２２を示す。図２に示す時系列データ１２２は、縦軸が強度、横軸が時間を示す。
【００４０】
本実施例では、現実世界の時間経過に伴って変化する時系列データ１２２をパタンデータ１２３に変換することを想定する。この場合、データ処理部１２０は、周期的に、各時系列データ１２２の現在の値（強度）を取得し、パタンデータ１２３を生成する。
【００４１】
なお、過去の履歴等を示す時系列データ１２２が入力された場合、データ処理部１２０は、シミュレーション時間を変数として設定し、各時系列データ１２２のシミュレーション時間の値を取得する。過去の履歴等を示す時系列データ１２２を用いたパタンデータ１２３の生成方法は実施例１の変形例として説明する。
【００４２】
図３Ａ及び図３Ｂは、実施例１のグラフの一例を示す説明図である。図４は、実施例１のグラフデータ１２１の一例を示す説明図である。
【００４３】
グラフ３００は、複数の頂点３０１及び複数の辺３０２から構成される。各頂点３０１は、辺３０２を介して、他の頂点３０１と接続される。各頂点３０１を接続する辺の矢印は、相互作用の向きを示す。
【００４４】
図３Ａに示すグラフ３００は、縦及び横が６個の頂点３０１から構成される格子状の有向グラフである。枠３１０の部分の拡大図に示すように、頂点Ｉ０（３０１）は、頂点Ｉ１（３０１）に対してデータを流出する頂点であり、かつ、頂点Ｉ１（３０１）からデータが流入される頂点である。
【００４５】
パタンデータ生成処理において、時系列データ１２２の値は、少なくとも１つの頂点３０１に設定される。頂点３０１に設定された値は、自頂点３０１に設定された値及び隣接する頂点３０１に設定された値を用いて更新される。グラフ３００の各頂点に設定された値の集合がパタンデータ１２３として出力される。
【００４６】
なお、グラフ３００は、図３Ａに示すような格子状のグラフに限定されない。例えば、図３Ｂに示すようなグラフ３００でもよい。図３Ｂに示すグラフ３００は、図３Ａに示すグラフ３００より中心付近の辺３０２の数が多い。
【００４７】
グラフ３００を管理するデータであるグラフデータ１２１は、構造データ４００及び流入定義データ４１０を含む。
【００４８】
構造データ４００は、グラフ３００の構造、及び頂点３０１に設定される値を管理するデータである。構造データ４００は、頂点ＩＤ４０１、流出頂点ＩＤ４０２、流入頂点ＩＤ４０３、頂点データ領域４０４から構成されるエントリを複数含む。
【００４９】
頂点ＩＤ４０１は、グラフ３００に含まれる頂点３０１を一意に識別するための識別子である。流出頂点ＩＤ４０２及び流入頂点ＩＤ４０３は、頂点ＩＤ４０１に対応する頂点３０１と辺３０２を介して直接接続される頂点３０１の識別子である。流出頂点ＩＤ４０２は、頂点ＩＤ４０１に対応する頂点３０１から他の頂点３０１の向きの辺３０２を介して接続される頂点３０１の識別子である。流入頂点ＩＤ４０３は、他の頂点３０１から頂点ＩＤ４０１に対応する頂点３０１の向きの辺３０２を介して接続される頂点３０１の識別子である。
【００５０】
流出頂点ＩＤ４０２及び流入頂点ＩＤ４０３に分けることによって、接続関係を管理することができる。なお、図３Ａのように、全ての頂点３０１が双方向の辺３０２を介して接続される場合、流出頂点ＩＤ４０２及び流入頂点ＩＤ４０３には同じ頂点３０１の識別子が格納される。
【００５１】
頂点データ領域４０４は、頂点ＩＤ４０１に対応する頂点３０１に設定される各時系列データ１２２の値を格納する。１つのエントリの頂点データ領域４０４には、グラフ３００に入力される時系列データ１２２の数だけ列が生成される。各列には時系列データ１２２の識別子が設定される。例えば、４つの時系列データ１２２がグラフ３００に入力される場合、頂点データ領域４０４には４つの列が生成される。
【００５２】
なお、頂点データ領域４０４は、構造データ４００とは別の情報として管理されてもよい。なお、複数の時系列データ１２２が１つの頂点データ領域４０４の列を共有してもよい。この場合、時系列データ１２２の数及び頂点データ領域４０４の列の数が一致しないため、時系列データ１２２に対する頂点データ領域４０４の列の対応関係を予め決定しておけばよい。
【００５３】
なお、識別子、長さ、及び接続する頂点３０１を管理する必要がある場合、構造データ４００は、頂点３０１を管理するデータ及び辺３０２を管理するデータの２つに分けてもよい。
【００５４】
流入定義データ４１０は、時系列データ１２２の値を入力する頂点３０１の定義情報である。流入定義データ４１０は、データＩＤ４１１、頂点ＩＤ４１２、及び規格化定数４１３から構成されるエントリを複数含む。
【００５５】
データＩＤ４１１は、時系列データ１２２を識別するための識別子である。例えば、データＩＤ４１１には、時系列データ１２２の種別及び名称等が格納される。頂点ＩＤ４１２は、時系列データ１２２の値を入力する頂点３０１の識別子である。規格化定数４１３は、頂点３０１に入力する値を規格化するために使用する値である。
【００５６】
後述するように、データ処理部１２０は、流入定義データ４１０にしたがって、時系列データ１２２の値を規格化し、規格化された値をグラフ３００に含まれる少なくとも一つの頂点３０１に入力する。例えば、時系列データＡの値は、頂点ＩＤ４１２が「Ｉ１４」である頂点３０１に入力される。
【００５７】
なお、構造データ４００及び流入定義データ４１０を別々のデータとして管理されてもよい。
【００５８】
図５は、実施例１のデータ処理部１２０が実行するパタンデータ生成処理を説明するフローチャートである。図６は、実施例１の時系列データ１２２の流入処理の概念を示す説明図である。図７は、実施例１のパタンデータ１２３の一例を示す説明図である。
【００５９】
本実施例では、データ処理部１２０は、周期的に、以下で説明するパタンデータ生成処理を実行する。
【００６０】
まず、データ処理部１２０は、ストレージシステム１０２からグラフデータ１２１を取得し、メモリ１１１に取得したグラフデータ１２１を格納する（ステップＳ５０１）。また、データ処理部１２０は、ストレージシステム１０２から時系列データ１２２の現時刻の値（最新の値）を取得し、取得した値をメモリ１１１に格納する（ステップＳ５０２）。なお、すでに、メモリ１１１にグラフデータ１２１が格納されている場合、データ処理部１２０は、ステップＳ５０１の処理を省略できる。
【００６１】
次に、データ処理部１２０は、時系列データ１２２の流入処理を実行する（ステップＳ５０３）。具体的には、以下のような処理が実行される。
【００６２】
データ処理部１２０は、構造データ４００の頂点データ領域４０４に時系列データ１２２の数だけ列を生成する。データ処理部１２０は、生成された列に初期値として「０」を設定する。データ処理としては、データ処理部１２０が、メモリ１１１に頂点３０１の数だけ値を格納する記憶領域を生成し、各記憶領域に「０」を設定する。なお、すでに頂点データ領域４０４に列が生成されている場合、当該処理は省略される。
【００６３】
データ処理部１２０は、取得された時系列データ１２２の値の中から、対象の値を選択する。データ処理部１２０は、流入定義データ４１０のデータＩＤ４１１を参照し、対象の値に対応する時系列データ１２２の識別子に一致するエントリを検索する。
【００６４】
データ処理部１２０は、検索されたエントリの規格化定数４１３に基づいて、対象の値を規格化する。例えば、時系列データＡから取得された値が「３０」である場合、データ処理部１２０は、値「３０」を規格化定数「１」で除算することによって値を規格化する。
【００６５】
値を規格化するアルゴリズムは、データ処理部１２０にあらかじめ設定されているものとする。なお、複数の時系列データ１２２の各々に異なる規格化のアルゴリズムを設定することができる。
【００６６】
データ処理部１２０は、検索されたエントリの頂点ＩＤ４１２から頂点３０１の識別子を取得する。データ処理部１２０は、構造データ４００の頂点ＩＤ４０１を参照し、取得された頂点３０１の識別子に一致するエントリを検索する。
【００６７】
データ処理部１２０は、検索されたエントリの頂点データ領域４０４を参照し、規格化された値を設定する列を特定する。データ処理部１２０は、規格化された値を用いて特定された列の値を更新する。例えば、データ処理部１２０は、特定された列に規格化された値を上書きし、又は、特定された列に格納されている値に規格化された値を加算する。
【００６８】
データ処理部１２０は、全ての時系列データ１２２の値について前述した処理を実行する。なお、本実施例では、規格化された値がグラフ３００の頂点３０１に入力されているが、量子化された値であってもよい。
【００６９】
図６は、前述した時系列データ１２２の流入処理の概念を示す。例えば、時系列データＡの値は、規格化又は量子化された後、頂点ＩＤ４０１が「Ｉ１４」の頂点３０１に変換された値が入力される。以下の説明では、流入処理において頂点３０１に設定される時系列データ１２２の値を入力値とも記載する。以上がステップＳ５０３の処理の説明である。
【００７０】
次に、データ処理部１２０は、パタンデータ１２３を生成するためのループ処理を開始する（ステップＳ５０４）。データ処理部１２０は、ループ処理の開始時に、ループ処理の回数を示す変数に「１」を設定する。ループ処理は、予め設定された回数だけ繰り返し実行される。
【００７１】
データ処理部１２０は、更新値算出処理を実行する（ステップＳ５０５）。更新値算出処理では、データ処理部１２０は、対象の頂点３０１に設定された値及び他の頂点３０１に設定された値に基づいて対象の頂点３０１の更新値を算出する。具体的には、以下のような処理が実行される。
【００７２】
データ処理部１２０は、構造データ４００を参照し、グラフ３００に含まれる頂点３０１の中から対象の頂点３０１を１つ選択する。例えば、データ処理部１２０は、構造データ４００の上のエントリから順に選択する。データ処理部１２０は、選択されたエントリの流入頂点ＩＤ４０３を取得し、頂点ＩＤ４０１が取得された頂点３０１の識別子に一致するエントリを検索する。以下の説明では、流入頂点ＩＤ４０３に対応する頂点３０１を流入頂点３０１とも記載する。
【００７３】
データ処理部１２０は、対象の頂点３０１に対応するエントリの頂点データ領域４０４の値、及び流入頂点３０１に対応するエントリの頂点データ領域４０４の値を取得する。データ処理部１２０は、各頂点３０１に設定された値を用いて、対象の頂点３０１に設定された値の更新値を算出する。頂点３０１に設定された値は、隣接する頂点３０１に設定された値との間の相互作用によって更新される。
【００７４】
例えば、対象の頂点３０１に対応するエントリの頂点データ領域４０４に時系列データＡ及び時系列データＢの列が含まれる場合、対象の頂点３０１の時系列データＡの更新値は式（１）に基づいて算出され、また、対象の頂点３０１の時系列データＡの値は式（２）に基づいて更新される。
【００７５】
【数１】
2018005448.tif 000003
【００７６】
【数２】
2018005448.tif 000004
【００７７】
Ｄｉ，Ａは、識別子が「ｉ」である対象の頂点３０１に設定された更新前の時系列データＡの値を表す。Ｄｉ，Ｂは、識別子が「ｉ」である対象の頂点３０１に設定された更新前の時系列データＢの値を表す。ｆ（Ｄｉ，Ａ）はＤｉ，Ａを変数とする関数を表す。ｇ（Ｄｉ，Ｂ）は、Ｄｉ，Ｂを変数とする関数を表す。ｈ（Ｄｊ，Ａ）は、識別子が「ｊ」である流入頂点３０１に設定された時系列データＡの値を変数とする関数を表す。ｌ（Ｄｊ，Ｂ）は、識別子が「ｊ」である流入頂点３０１に設定された時系列データＢの値を変数とする関数を表す。なお、具体的な関数は、予め与えてもよいし、実験結果等から求めてもよい。
【００７８】
式（１）の右辺の第１項は、対象の頂点３０１に設定された更新対象の時系列データ１２２の値から算出される値である。式（１）の右辺の第２項は、対象の頂点３０１に設定された他の時系列データ１２２の値から算出される値である。式（１）の右辺の第３項は、流入頂点３０１に設定された更新対象の時系列データ１２２の値から算出される値である。式（１）の右辺の第４項は、流入頂点３０１の他の時系列データ１２２の値から算出される値である。なお、式（１）の右辺の第３項及び第４項は、流入頂点３０１に設定される時系列データ１２２の値を変数とする関数の値の合計値を表す。
【００７９】
式（１）は、反応拡散方程式と呼ばれる微分方程式である。式（１）の右辺の第１項及び第２項は反応項と呼ばれ、式（１）の右辺の第３項及び第４項は拡散項と呼ばれる。
【００８０】
式（１）に示すように、同じデータの値は更新値を増やす方向に作用することから第１項及び第３項の符号はプラスとなり、また、異なるデータの値は更新値を減らす方向に作用することから第２項及び第４項の符号はマイナスとなる。
【００８１】
なお、４つの時系列データ１２２がグラフ３００に入力される場合、対象の頂点３０１の時系列データＡの更新値を求める式及び時系列データＡの更新式は式（３）、（４）で与えられる。
【００８２】
【数３】
2018005448.tif 000005
【００８３】
【数４】
2018005448.tif 000006
【００８４】
式（１）と式（３）との違いは、関数ｇ、ｌの変数が増えている点である。更新式の一般形は、グラフ３００に入力される時系列データ１２２の数に依存しない。
【００８５】
ここで、図３Ａの枠３１０の部分を用いて、ステップＳ５０５の処理を説明する。ここでは、更新値は式（５）で求められるものとする。頂点Ｉ０（３０１）の時系列データＡの値が「０」、頂点Ｉ０（３０１）の時系列データＢの値が「１０」であるものとする。頂点Ｉ１（３０１）の時系列データＡの値が「１０」、頂点Ｉ０（３０１）の時系列データＢの値が「２０」であるものとする。また、頂点Ｉ６（３０１）の時系列データＡの値が「２０」、頂点Ｉ６（３０１）の時系列データＢの値が「５」であるものとする。
【００８６】
【数５】
2018005448.tif 000007
【００８７】
この場合、頂点Ｉ０（３０１）の更新された時系列データＡの値は、式（６）に示すように「３」となる。
【００８８】
【数６】
2018005448.tif 000008
【００８９】
したがって、頂点Ｉ０（３０１）に対応するエントリの頂点データ領域４０４の時系列データＡの列の値は「０」から「３」に更新される。なお、データ処理部１２０は、この時点では、頂点Ｉ０（３０１）の時系列データ１２２の値を更新しない。データ処理部１２０は、頂点３０１の識別子及び時系列データ１２２の識別子を対応付けた更新値をメモリ１１１に格納する。以上が、ステップＳ５０５の処理の説明である。
【００９０】
次に、データ処理部１２０は、更新値算出処理の結果に基づいて、各頂点３０１の値を更新する（ステップＳ５０６）。具体的には、データ処理部１２０は、グラフ３００に含まれる各頂点３０１に対応するエントリの頂点データ領域４０４に更新値を加算する。このとき、データ処理部１２０は、ループ処理の回数を示す変数に「１」を加算する。
【００９１】
次に、データ処理部１２０は、ループ処理の回数が所定の閾値より大きいか否かを判定する（ステップＳ５０７）。
【００９２】
ループ処理の回数が所定の閾値以下である場合、データ処理部１２０は、ステップＳ５０５に戻り、同様の処理を実行する。ループ処理の回数が所定の閾値より大きい場合、データ処理部１２０は、構造データ４００をパタンデータ１２３としてメモリ１１１に格納する（ステップＳ５０８）。その後、データ処理部１２０は、パタンデータ生成処理を終了する。
【００９３】
なお、データ処理部１２０は、流出頂点ＩＤ４０２及び流入頂点ＩＤ４０３のカラムが削除された構造データ４００をパタンデータ１２３として出力してもよい。
【００９４】
本実施例では、各頂点３０１の頂点データ領域４０４の値は初期化されない。値を残すことによって、前回の処理結果を反映した処理が可能となるためである。なお、データ処理部１２０は、パタンデータ１２３をメモリ１１１に格納した後、グラフデータ１２１の各頂点３０１の頂点データ領域４０４の値を初期化してもよい。
【００９５】
データ処理部１２０は、ループ処理を所定の回数、繰り返し実行することによって、ある頂点３０１に入力された時系列データ１２２の値がグラフ３００の各頂点３０１に拡散する。式（３）に示すように各頂点３０１に設定された値は相互作用をしながら拡散するため、各頂点３０１に設定される時系列データ１２２の値は異なる。したがって、パタンデータ１２３は、各時系列データ１２２の値の分布を示すデータであり、値の違いを視覚化すると幾何学的な模様を形成する。
【００９６】
図７に示すように、時系列データ１２２が全く入力されていないグラフ３００は模様を形成していない。一方、ある時点の時系列データ１２２の値がグラフ３００に入力された結果、模様を形成したパタンデータ１２３が出力される。
【００９７】
パタンデータ１２３−１は、１回目のパタンデータ生成処理によって出力されたデータを表し、パタンデータ１２３−２は、２回目のパタンデータ生成処理によって出力されたデータを表し、パタンデータ１２３−２は、３回目のパタンデータ生成処理によって出力されたデータを表し、パタンデータ１２３−４は、４回目のパタンデータ生成処理によって出力されたデータを表す。本実施例では、パタンデータ生成処理が実行されるたびに１つのパタンデータ１２３が生成される。
【００９８】
一般に、頂点データ領域４０４に含まれる列は蛋白質、当該列に格納される時系列データ１２２の値は濃度に対応し、反応拡散方程式は動植物の模様等の形成に係わるものと考えられている。
【００９９】
このように、データ処理部１２０は、複数の時系列データ１２２から、データ間の影響を考慮した過渡応答を示すパタンデータ１２３を生成することができる。すなわち、データ処理部１２０は、複数の入力データから様々なパタンデータ１２３を生成することができる。
【０１００】
データ処理部１２０は、パタンデータ生成処理によって生成されたパタンデータ１２３を用いて識別処理を実行する。
【０１０１】
図８は、実施例１の識別器へのパタンデータ１２３の入力方法の一例を示す説明図である。図９は、実施例１の変換器が頂点のデータを変換する場合に使用するリストの一例を示す説明図である。
【０１０２】
まず、データ処理部１２０は、パタンデータ１２３の各頂点３０１に設定される値を変換器８０１に入力することによって、識別器が扱うことができるデータ形式のデータに変換する。
【０１０３】
１つの頂点３０１には、グラフ３００に入力された時系列データ１２２の数だけ値が設定される。識別器として用いるＣＮＮ８０２には、１つの頂点３０１に対して１次元のデータを入力する必要がある。そのため、変換器８０１は、１つの頂点３０１に設定される複数の値を１次元のデータに変換する。
【０１０４】
例えば、変換器８０１は、図９に示すようなデータＩＤ及び変換値を対応付けたリスト９００を使用した以下のような変換方法が考えられる。変換器８０１は、１つの頂点３０１に設定された複数の値を参照し、値が最も大きい時系列データ１２２の識別子を特定する。変換器８０１は、リストに基づいて、特定された時系列データ１２２の識別子に対応する変換値をＣＮＮ８０２に入力する。なお、変換値はメモリ１１１に格納される。
【０１０５】
例えば、時系列データＡの値が「１０」、時系列データＢの値が「２０」、時系列データＣの値が「０」、時系列データＤの値が「５」である頂点３０１の場合、変換値「０．２５」が当該頂点３０１の値としてＣＮＮ８０２に入力される。
【０１０６】
学習時には、データ処理部１２０は、学習用の時系列データ１２２から生成されたパタンデータ１２３をＣＮＮ８０２に入力する。識別処理では、データ処理部１２０は、識別用の時系列データ１２２から生成されたパタンデータ１２３をＣＮＮ８０２に入力する。
【０１０７】
ＣＮＮ８０２からは分類するクラスに対応する値が出力される。例えば、第１クラスの値を示す出力値が「０．５」以上で、かつ、他のクラスの出力値が「０．５」より小さい場合、入力されたデータは第１クラスに分類される。
【０１０８】
図１０は、実施例１の計算機１０１の識別処理の識別精度を示す説明図である。
【０１０９】
図１０では、データを４つのクラスに分類する識別処理の識別精度を示す。
【０１１０】
なお、識別精度の括弧は、各クラスの出力値が「０．５」以上である場合の識別精度を表す。例えば、第１クラスに入力するテストサンプルデータの数が１０００個であり、第１クラスの出力値が「０．５」以上で、かつ、識別結果が第１クラスであるデータの数が２５０である場合を考える。当該２５０個のテストサンプルデータのうち、第１クラスの出力値が「０．５」より小さいテストサンプルデータの数が５０個の場合、検出精度は、式（７）に示すように８０％となる。
【０１１１】
【数７】
2018005448.tif 000009
【０１１２】
図１０に示すように、パタンデータ１２３を用いることによって識別処理の識別精度が向上することが示された。
【０１１３】
本実施例では、ＮＮ又はＣＮＮを識別器として使用していたが、変換器８０１の変換方法を適宜変更することによって、サポートベクターマシン等の他の識別アルゴリズムにも対応することができる。
【０１１４】
（実施例１の変形例）
ここでは、シミュレーションに基づく、パタンデータ生成処理について説明する。図１１は、実施例１のデータ処理部１２０が実行するパタンデータ生成処理の変形例を説明するフローチャートである。
【０１１５】
データ処理部１２０は、グラフデータ１２１を取得した後、シミュレーション時間のループ処理を開始する（ステップＳ１１０１）。具体的には、データ処理部１２０は、シミュレーション時間を示す変数に時系列データ１２２の最も過去の時間を設定する。以下、データ処理部１２０は、シミュレーション時間が時系列データ１２２の最も未来の時間に一致するまで繰り返し処理を実行する。
【０１１６】
データ処理部１２０は、ストレージシステム１０２から、シミュレーション時間における時系列データ１２２の値を取得し、取得した時系列データ１２２の値をメモリ１１１に格納する（ステップＳ１１０２）。
【０１１７】
データ処理部１２０は、任意のシミュレーション時間における時系列データ１２２の値に基づいて生成されたパタンデータ１２３をメモリ１１１に格納した後（ステップＳ５０８）、シミュレーション時間が最も未来の時間に一致するか否かを判定する（ステップＳ１１０３）。
【０１１８】
シミュレーション時間が最も未来の時間に一致しない場合、データ処理部１２０は、シミュレーション時間を更新し、ステップＳ１１０２に戻り、同様の処理を実行する。シミュレーション時間が最も未来の時間に一致する場合、データ処理部１２０は、パタンデータ生成処理を終了する。
【実施例２】
【０１１９】
実施例２では入力値が実施例１と異なる。実施例２では、データ処理部１２０は、時系列データ１２２の値を粒子の数に変換し、所定の数の粒子を入力値としてグラフ３００に入力する。以下、実施例１との差異を中心に実施例２について説明する。
【０１２０】
実施例２の計算機システム１００の構成は、実施例１と同一の計算機システム１００の構成であるため説明を省略する。実施例２の計算機１０１の構成及びストレージシステム１０２の構成は、実施例１の計算機１０１の構成及びストレージシステム１０２の構成と同一であるため説明を省略する。
【０１２１】
また、実施例２のグラフデータ１２１の構造データ４００は、実施例１のグラフデータ１２１の構造データ４００と同一であるため説明を省略する。実施例２のグラフデータ１２１の流入定義データ４１０は、規格化定数４１３を含まない。実施例２の時系列データ１２２は、実施例１の時系列データ１２２と同一であるため説明を省略する。
【０１２２】
図１２は、実施例２のデータ処理部１２０が実行するパタンデータ生成処理を説明するフローチャートである。図１３及び図１４は、実施例２の時系列データ１２２の流入処理及び粒子の流出処理の概念を示す説明図である。
【０１２３】
データ処理部１２０は、現時刻の各時系列データ１２２の値を取得した後（ステップＳ５０２）、時系列データ１２２の流入処理を実行する（ステップＳ１２０１）。具体的には、以下のような処理が実行される。
【０１２４】
データ処理部１２０は、構造データ４００の頂点データ領域４０４に時系列データ１２２の数だけ列を生成する。データ処理部１２０は、生成された列に初期値として「０」を設定する。なお、すでに頂点データ領域４０４に列が生成されている場合、当該処理は省略される。
【０１２５】
データ処理部１２０は、取得された時系列データ１２２の値の中から、対象の値を選択する。データ処理部１２０は、対象の値を粒子数に変換する。
【０１２６】
値を粒子数に変換する変換アルゴリズムは様々考えられる。例えば、値が小数を含む場合、切り上げ、切り捨て、又は四捨五入をすることによって整数に変換するアルゴリズムが考えられる。また、値をスケーリングすることによって粒子数に変換するアルゴリズムが考えられる。なお、時系列データ１２２の各々に異なる変換アルゴリズムを設定することができる。
【０１２７】
データ処理部１２０は、流入定義データ４１０のデータＩＤ４１１を参照し、対象の値に対応する時系列データ１２２の識別子に一致するエントリを検索する。データ処理部１２０は、検索されたエントリの頂点ＩＤ４１２から頂点３０１の識別子を取得する。データ処理部１２０は、構造データ４００の頂点ＩＤ４０１を参照し、取得された頂点３０１の識別子に一致するエントリを検索する。
【０１２８】
データ処理部１２０は、検索されたエントリの頂点データ領域４０４を参照し、入力値（粒子数）を設定する列を特定する。データ処理部１２０は、入力値を用いて特定された列の値を更新する。例えば、データ処理部１２０は、特定された列に粒子数を上書きし、又は、特定された列に格納されている値に粒子数を加算する。
【０１２９】
データ処理部１２０は、全ての時系列データ１２２の値について前述した処理を実行する。
【０１３０】
例えば、時系列データ１２２の値が「１０」である場合、粒子数「１０」に変換され、所定の頂点３０１の頂点データ領域４０４の列に「１０」が格納される。
【０１３１】
時系列データ１２２の値を粒子数として扱われることによって、グラフ３００に含まれる各時系列データ１２２の粒子数の総和は、原則、変わらない。
【０１３２】
データ処理部１２０は、ステップＳ１２０１の処理の後、パタンデータ１２３を生成するためのループ処理を開始する（ステップＳ５０４）。データ処理部１２０は、ループ処理の開始時に、ループ処理の回数を示す変数に「１」を設定する。
【０１３３】
データ処理部１２０は、値の更新処理を実行する（ステップＳ１２０２）。値の更新処理では、データ処理部１２０は、各頂点３０１に設定された所定の数の粒子を移動させることによって、各頂点３０１に設定された値を更新する。具体的には、以下のような処理が実行される。
【０１３４】
データ処理部１２０は、構造データ４００の頂点データ領域４０４を参照し、対象の粒子の種別を選択する。データ処理部１２０は、構造データ４００の頂点データ領域４０４を参照し、対象の粒子の種別に対応する列の値が「０」より大きい値のエントリを検索する。すなわち、処理対象の粒子の種別に対応する粒子が設定された頂点３０１が検索される。データ処理部１２０は、検索されたエントリの中から対象の頂点３０１（エントリ）を１つ選択する。
【０１３５】
データ処理部１２０は、選択されたエントリの流入頂点ＩＤ４０３を取得し、頂点ＩＤ４０１が取得された頂点３０１の識別子に一致するエントリを検索する。
【０１３６】
データ処理部１２０は、対象の頂点３０１に設定された対象の粒子の種別の粒子数及び流入頂点３０１に設定された対象の粒子の種別の粒子数を取得する。
【０１３７】
データ処理部１２０は、対象の粒子の種別に対応する粒子の中から、対象の粒子を１つ選択する。なお、同一の種別の粒子は区別されないため、いずれの粒子が選択されてもよい。
【０１３８】
データ処理部１２０は、各頂点３０１に設定された粒子数に基づいて、選択された粒子の移動先となる頂点３０１を決定する。対象の粒子の移動先の頂点３０１は、自頂点３０１に設定された粒子数及び流入頂点３０１に設定された粒子数との間の相互作用によって決定される。
【０１３９】
実施例２では、相互作用は粒子の移動に置き換えるため、粒子の移動判定式として相互作用の式が与えられる。
【０１４０】
例えば、選択されたエントリの頂点データ領域４０４に時系列データＡ及び時系列データＢの列が含まれる場合、処理対象の頂点３０１の時系列データＡの粒子の移動判定式は式（８）で与えられる。
【０１４１】
【数８】
2018005448.tif 000010
【０１４２】
Ｎｉ，Ａは、識別子が「ｉ」である対象の頂点３０１に設定された更新前の時系列データＡの粒子数を表す。Ｎｉ，Ｂは、識別子が「ｉ」である対象の頂点３０１に設定された更新前の時系列データＢの粒子数を表す。ｆ（Ｎｉ，Ａ）はＮｉ，Ａを変数とする関数を表す。ｇ（Ｎｉ，Ｂ）は、Ｎｉ，Ｂを変数とする関数を表す。ｈ（Ｎｊ，Ａ）は、識別子が「ｊ」である流入頂点３０１に設定された時系列データＡの粒子数を変数とする関数を表す。ｌ（Ｎｊ，Ｂ）は、識別子が「ｊ」である流入頂点３０１に設定された時系列データＢの粒子数を変数とする関数を表す。
【０１４３】
データ処理部１２０は、Ｐｉ，Ａの値及び閾値を用いて、対象の頂点３０１に設定された時系列データＡの１つの粒子を流入頂点３０１に移動させるか否かを判定する。例えば、Ｐｉ，Ａが０以上の場合、データ処理部１２０は、１つの粒子を移動させると判定し、Ｐｉ，Ａが０以下の場合、データ処理部１２０は、１つの粒子を移動させないと判定する。
【０１４４】
なお、流入頂点３０１が複数存在する場合、データ処理部１２０は、複数の流入頂点３０１の中から移動先の流入頂点３０１を１つ選択する。
【０１４５】
粒子を流出頂点３０１に移動させる場合、データ処理部１２０は、対象の頂点３０１のエントリの頂点データ領域４０４を参照して、対象の粒子の数を「１」減算する。また、データ処理部１２０は、流入頂点３０１のエントリの頂点データ領域４０４を参照して、対象の粒子の数を「１」加算する。
【０１４６】
粒子を流入頂点３０１に移動させない場合、データ処理部１２０は、各エントリの頂点データ領域４０４の更新を行わない。
【０１４７】
データ処理部１２０は、選択された種別の全ての粒子について前述の処理を実行する。また、データ処理部１２０は、対象の頂点３０１に設定された全ての種別の粒子について同一の処理を実行する。
【０１４８】
なお、辺３０２に距離等の属性が付与されている場合、当該属性を考慮して粒子を移動させてもよい。例えば、辺３０２に距離として「５」が設定されている場合、ステップＳ５０４からステップＳ５０７のループ処理が５回実行された後に、粒子を移動させるようにしてもよい。
【０１４９】
実施例２では、式（８）に基づいて決定された頂点３０１に粒子を移動させるため、実施例１のステップＳ５０６のような更新は行われない。例えば、時系列データＢの粒子数が「２」であり、１つの粒子を流入頂点３０１に移動させた場合、時系列データＢの他の粒子について式（８）を用いた判定処理の実行時の時系列データＢの粒子数は「１」となる。以上が、ステップＳ１２０２の処理の説明である。
【０１５０】
次に、データ処理部１２０は、粒子の流出処理を実行する（ステップＳ１２０３）。粒子の流出処理では、所定の条件に一致する粒子がグラフ３００から出力（削除）される。具体的には、以下のような処理が実行される。
【０１５１】
実施例２では、グラフ３００に粒子が入力される。そのため、時系列データ１２２が入力されるたびに、グラフ３００に格納される粒子数が増加する。そこで、データ処理部１２０は、所定の条件に一致する粒子をグラフ３００から削除することによって、グラフ３００に格納される粒子数を減少させる。グラフ３００から粒子を削除する方法として図１３又は図１４に示すような方法が考えられる。
【０１５２】
図１３では、本実施例のデータ処理部１２０は、値の更新処理の実行後、格子状のグラフ３００の外周の頂点３０１に移動した粒子をパス１３００に出力する。粒子は、パス１３００を介して流出口１３０１から排出される。すなわち、グラフ３００から粒子が削除される。データ処理としては、頂点３０１に設定された各粒子の数が初期化される。なお、粒子を出力する頂点３０１は、外周の頂点３０１に限定されない。
【０１５３】
粒子を出力する頂点３０１を設定する方法としては、構造データ４００に、粒子を出力する頂点３０１を識別するためのカラムを設ける方法が考えられる。
【０１５４】
具体的な処理としては、データ処理部１２０は、構造データ４００を参照し、外周の頂点３０１に対応するエントリの頂点データ領域４０４の全ての列の値の合計値を、出力粒子数としてメモリ１１１に格納する。また、データ処理部１２０は、当該エントリの頂点データ領域４０４の全ての列の値を「０」に設定する。
【０１５５】
グラフ３００に格納される粒子数及び出力粒子数を合計することによって、入力された粒子の総数を把握できる。
【０１５６】
図１４では、メモリ１１１が、時系列データ１２２毎に粒子を格納する粒子貯蔵領域１４００を含む。粒子貯蔵領域１４００には、予め、所定の数の粒子が格納される。具体的には、粒子貯蔵領域１４００には、粒子数を示す値が格納される。なお、粒子貯蔵領域１４００は、パタンデータ生成処理の開始時に生成される。
【０１５７】
時系列データ１２２の流入処理において、データ処理部１２０は、時系列データ１２２の値を粒子数に変換し、対応する粒子貯蔵領域１４００から当該粒子数の粒子を取り出し、頂点３０１に粒子を入力する。このとき、データ処理部１２０は、粒子貯蔵領域１４００の値を取り出された粒子の数だけ減算する。
【０１５８】
粒子の流出処理において、データ処理部１２０は、パス１３００及び流出口１３０１を介して、外周の頂点３０１に設定される粒子を粒子貯蔵領域１４００に格納する。データ処理としては、データ処理部１２０は、粒子貯蔵領域１４００の値を頂点データ領域４０４の値だけ加算する。
【０１５９】
なお、時系列データ１２２の流入処理において、粒子貯蔵領域１４００に、変換された粒子数分の粒子が格納されていない場合、データ処理部１２０は、取り出し可能な数だけ粒子をグラフ３００に入力する。例えば、変換された粒子数が「１０」、かつ、粒子貯蔵領域１４００の粒子数が「３」である場合、データ処理部１２０は、３つの粒子をグラフ３００に入力する。これによって強度の高い時系列データ１２２の影響が低くなる。これは、興奮した細胞がしばらく鈍感になるという性質を取り入れたものである。
【０１６０】
図１５Ａ及び図１５Ｂは、実施例２のパタンデータ１２３の一例を示す説明図である。
【０１６１】
ここでは、位相が異なる２セットの時系列データ群が入力された場合のパタンデータ１２３を示す。１つの時系列データ群には、４つの時系列データ１２２が含まれる。また、グラフ３００は、格子状のグラフ３００を用いるものとする。また、図１４に示す粒子の管理方法を採用するものとする。
【０１６２】
図１５Ａ及び図１５Ｂでは、粒子が入力されていない頂点３０１は白丸で表し、また、粒子数が最も大きい粒子の種別に応じて各頂点３０１を色分けしている。図１５Ａ及び図１５Ｂに示すように、パタンデータ生成処理が実行されるたびに、１つのパタンデータ１２３が生成される。位相が異なる時系列データ１２２が入力された場合、模様が異なるパタンデータ１２３が出力される。このようなパタンデータ１２３を用いることによって識別処理の識別精度を向上させることができる。
【実施例３】
【０１６３】
実施例３では、時系列データ１２２ごとにグラフ３００の領域が分けられる。また、実施例３では、時系列データ１２２の値が粒子の数に変換される。以下、実施例２との差異を中心に、実施例３について説明する。
【０１６４】
実施例３の計算機システム１００の構成は、実施例１と同一の計算機システム１００の構成であるため説明を省略する。実施例２の計算機１０１の構成及びストレージシステム１０２の構成は、実施例１の計算機１０１の構成及びストレージシステム１０２の構成と同一であるため説明を省略する。
【０１６５】
また、実施例３のグラフデータ１２１の流入定義データ４１０は、規格化定数４１３を含まない。実施例２の時系列データ１２２は、実施例１の時系列データ１２２と同一であるため説明を省略する。
【０１６６】
実施例３では、グラフデータ１２１の構造データ４００が異なる。図１６は、実施例３のグラフデータ１２１の構造データ４００の一例を示す説明図である。図１７は、実施例３のグラフ３００の一例を示す図である。
【０１６７】
構造データ４００は、頂点ＩＤ４０１、流出頂点ＩＤ４０２、流入頂点ＩＤ４０３、及び頂点データ領域４０４の他に、活性頂点ＩＤ１６０１及び抑制頂点ＩＤ１６０２を含む。
【０１６８】
活性頂点ＩＤ１６０１は、頂点３０１に設定された粒子を滞留作用を与える頂点３０１の識別子である。抑制頂点ＩＤ１６０２は、頂点３０１に設定された粒子を移動作用を与える頂点３０１の識別子である。各頂点の作用の違いは、式（８）の極性の違いとして表される。滞留作用は、式（８）の第２項及び第４項に対応し、活性作用は、式（８）の第１項及び第３項に対応する。
【０１６９】
実施例３では、頂点３０１間の粒子の流れは、流出頂点ＩＤ４０２及び流入頂点ＩＤ４０３で管理され、頂点３０１間の相互作用は、活性頂点ＩＤ１６０１及び抑制頂点ＩＤ１６０２で管理される。
【０１７０】
図１６に示す構造データ４００に対応するグラフ３００は、図１７に示すグラフ３００となる。グラフ３００に入力される時系列データ１２２の数に合わせて予めグラフ３００が複数の領域１７００に分割される。また、各領域１７００の相対的な位置が同一の頂点３０１間は、抑制作用を与える辺１７０１を介して接続される。
【０１７１】
図１７に示すグラフ３００は、下の上の方向に粒子が移動する構造となっている。したがって、各時系列データ１２２の値は、最も下位の頂点３０１に入力される。また、最も上位の頂点３０１に移動した粒子は、パス１３００及び流出口１３０１を介して、各粒子貯蔵領域１４００に出力される。
【０１７２】
このようなグラフ３００を用いることによって時間方向の履歴を残すことができる。すなわち、下位の頂点３０１の周辺では新しい時系列データ１２２の値の影響が反映され、上位の頂点３０１の周辺では古い時系列データ１２２の値の影響が反映される。
【０１７３】
なお、図１７に示すグラフ３００の構造は一例であって、これに限定されない。流出頂点ＩＤ４０２、流入頂点ＩＤ４０３、活性頂点ＩＤ１６０１、及び抑制頂点ＩＤ１６０２を変えることによって様々な構造のグラフ３００を構成することができる。例えば、スケールフリーグラフ、ランダムグラフ、及びニューラルネットワーク等の多層の二部グラフを構成できる。
【０１７４】
図１８は、実施例３のパタンデータ１２３の生成時に入力される時系列データ１２２の一例を示す説明図である。図１９は、実施例３のパタンデータ１２３の一例を示す説明図である。
【０１７５】
図１８に示すような２つの時系列データ１２２がグラフ３００に入力されるものとする。グラフ３００は、図１７に示すような格子状のグラフであり、２つの領域１７００−１、１７００−２に分割される。各領域１７００−１、１７００−２の最下位の中央の頂点３０１に各時系列データ１２２の値が入力されるものとする。また、各領域１７００−１、１７００−２の最上位の頂点３０１から粒子が出力されるものとする。図１７に示すように、抑制作用は領域１７００−１及び領域１７００−２の間で働くものとする。
【０１７６】
図１８では、頂点３０１に設定された粒子の数に応じて、頂点３０１の表示形式を変えている。
【０１７７】
図１８に示すように、グラフ３００の下位の頂点３０１から上位の頂点３０１に向かって履歴が反映されたパタンデータ１２３が生成される。また、領域１７００−１及び領域１７００−２は、一方の領域１７００の粒子数の影響を受けていることが分かる。例えば、領域１７００−１において粒子数が多い頂点３０１から抑制作用を受ける領域１７００−２の頂点３０１は、粒子数は少ない。
【実施例４】
【０１７８】
実施例４では、実施例１から実施例３で説明したパタンデータ生成処理を用いた、装置の制御システムについて説明する。ここでは、化学物質等を計測し、識別対象が属するクラスを識別し、識別結果に基づいて装置の制御を行うシステムを例に説明する。
【０１７９】
システムは、２つの化学センサ、１つの温度センサ、及び１つの湿度センサを有する。なお、センサの種別に限定されず、圧電センサ、重力センサ、光センサ、赤外線センサ、振動センサ、加速度センサ、熱センサ、速度センサ、回転数センサ、フローセンサ、及び音センサ等の様々なセンサに対応できる。
【０１８０】
システムは、周期的に、各センサによって計測された値を取得する。各センサから取得される値が時系列データ１２２の値に対応する。また、当該システムでは、センサから取得された値から生成されたパタンデータ１２３を用いて、識別対象が属するクラスを識別する。また、システムは、識別結果に基づいて装置の制御内容を決定するものとする。
【０１８１】
例えば、車輪及びモータを搭載するロボットを制御するシステムであり、クラスが「餌」、「天敵」、「その他」の３つである場合、以下のような制御が行われる。識別結果が「餌」である場合、システムは任意の対象に接近するようにモータの回転速度及び車輪の向きを制御する。識別結果が「天敵」である場合、システムは任意の対象から遠ざかるようにモータの回転速度及び車輪の向きを制御する。また、識別結果が「その他」である場合、システムは前回の行動を維持するように制御内容を決定する。
【０１８２】
システムのハードウェア構成及びソフトウェア構成は、実施例１の計算機１０１と同様の構成であるものとする。
【０１８３】
図２０は、実施例４のシステムが実行する処理を説明するフローチャートである。
【０１８４】
ＣＰＵ１１５は、システムの起動後、初期化処理を実行する（ステップＳ２００１）。その後、ループ処理を開始する（ステップＳ２００２）。当該ループ処理は、周期的に実行される。システムは、電源オフ等、明示的な処理の停止指示を受信するまでループ処理を永続的に実行する。
【０１８５】
ＣＰＵ１１５は、センシング処理を実行する（ステップＳ２００３）。具体的には、ＣＰＵ１１５は、各センサに計測を指示する。各センサは、識別対象に対する計測を行う。計測された結果は、メモリ１１１に格納される。
【０１８６】
次に、ＣＰＵ１１５は、パタンデータ生成処理を実行する（ステップＳ２００４）。パタンデータ生成処理は、実施例１から実施例３で説明したパタンデータ生成処理のいずれを適用してもよい。パタンデータ生成処理によって生成されたパタンデータ１２３は、メモリ１１１に格納される。
【０１８７】
次に、ＣＰＵ１１５は、パタンデータ１２３を用いた識別処理を実行する（ステップＳ２００５）。識別処理は、実施例１で説明した識別処理を適用する。識別結果は、メモリ１１１に格納される。
【０１８８】
なお、ＣＰＵ１１５は、必要に応じて、外部装置に識別結果を送信し、又は、ディスプレイ等の出力装置に識別結果を表示してもよい。なお、識別結果の表示方法としては、図、表、又は文字を用いて表示する方法が考えられる。また、クラスに対応するＬＥＤ等を有するシステムの場合、識別結果に対応するＬＥＤを点滅する方法等も考えられる。
【０１８９】
次に、ＣＰＵ１１５は、識別結果に基づいて、装置の制御内容を決定し（ステップＳ２００６）、決定された制御内容を実行するための制御信号を装置に出力する（ステップＳ２００７）。所定の条件を満たした場合、ＣＰＵ１１５は、ループ処理を終了する（ステップＳ２００８）。
【０１９０】
例えば、システムが、予め、クラス毎に実行するプログラムをサブルーチン又はライブラリとして保持しておき、識別結果に基づいて対応するクラスのプログラムを実行する。
【０１９１】
車輪及びモータを搭載するロボットを制御するシステムの場合、ＣＰＵ１１５は、モータの回転速度及び車輪の向きを決定し、モータの回転数及び車輪の向きを変更するための制御信号をロボットに出力する。これによって、クラスに応じたロボットの制御が可能となる。
【実施例５】
【０１９２】
実施例５では、実施例１から実施例３で説明したパタンデータ生成処理を用いたデータ解析システムについて説明する。ここでは、ビッグデータ処理を例に説明する。
【０１９３】
ＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）では、ネットワークを介して接続される複数の装置からデータが取得される。大量のデータを解析することによって有用な知見を得ることができる。装置から取得されるデータとしては、購買、株価、為替、天候及びＳＮＳ等のログが考えられる。また、クラスとしては、需要拡大、需要縮小、及び現状維持等が考えられる。
【０１９４】
また、データセンタでは、データセンタに含まれる装置の状態等を示すデータが取得される。大量のデータを解析することによってデータセンタの最適な運用が可能となる。
【０１９５】
具体的な処理の流れは、実施例４と同一である。ただし、時系列データ１２２として取得されるデータは、ネットワークを介して接続される装置等から取得された値である。また、実施例５では、ステップＳ２００６、ステップＳ２００７の処理は実行されなくてもよい。
【０１９６】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０１９７】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０１９８】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０１９９】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０２００】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０２０１】
１００  計算機システム
１０１  計算機
１０２  ストレージシステム
１０３  ネットワーク
１１０、１３０  プロセッサ
１１１、１３１  メモリ
１１２  ネットワークインタフェース
１１４、１３５  バス
１１５  ＣＰＵ
１２０  データ処理部
１２１  グラフデータ
１２２  時系列データ
１２３  パタンデータ
１３２  ネットワークインタフェース
１３３  ディスクインタフェース
１３４  ＨＤＤ
３００  グラフ
４００  構造データ
４１０  流入定義データ
８０１  変換器
８０２  ＣＮＮ
【図１】
2018005448.tif 000011
【図２】
2018005448.tif 000012
【図３Ａ】
2018005448.tif 000013
【図３Ｂ】
2018005448.tif 000014
【図４】
2018005448.tif 000015
【図５】
2018005448.tif 000016
【図６】
2018005448.tif 000017
【図７】
2018005448.tif 000018
【図８】
2018005448.tif 000019
【図９】
2018005448.tif 000020
【図１０】
2018005448.tif 000021
【図１１】
2018005448.tif 000022
【図１２】
2018005448.tif 000023
【図１３】
2018005448.tif 000024
【図１４】
2018005448.tif 000025
【図１５Ａ】
2018005448.tif 000026
【図１５Ｂ】
2018005448.tif 000027
【図１６】
2018005448.tif 000028
【図１７】
2018005448.tif 000029
【図１８】
2018005448.tif 000030
【図１９】
2018005448.tif 000031
【図２０】
2018005448.tif 000032