(57)【要約】  センサが出力したセンサデータを受け付けるデータの管理装置は、センサデータの値を予め設定したクラスタに分類して、センサデータの時刻とセンサの識別子とクラスタとを含むクラスタデータを生成し、クラスタデータからセンサの識別子を要素とするセンサ軸方向とセンサデータの時刻を要素とする時刻軸方向とからなる配列要素にクラスタを格納する２次元配列を生成し、２次元配列から時刻軸方向でセンサ軸方向の配列要素を並べ替えたブロックを生成し、出現比率が最大となるクラスタを代表値とする１以上のブロックから時刻を含む時刻集合ごとに、前記センサの識別子を含むセンサ集合を含むクラスタブロックを生成して、クラスタブロックデータに格納する。
2017002190.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリを含んでセンサが出力したセンサデータを受け付けるデータの管理装置であって、
前記センサデータの値を予め設定したクラスタに分類し、前記センサデータの時刻と前記センサの識別子と前記クラスタとを含むクラスタデータを生成するクラスタデータ生成部と、
前記クラスタデータから、前記センサの識別子を要素とするセンサ軸方向と、前記センサデータの時刻を要素とする時刻軸方向と、からなる配列要素に前記クラスタを格納する２次元配列を生成し、前記２次元配列から、時刻軸方向でセンサ軸方向の配列要素を並べ替えたブロックを生成し、出現比率が最大となるクラスタを代表値とする１以上のブロックから前記時刻を含む時刻集合ごとに、前記センサの識別子を含むセンサ集合を含むクラスタブロックを生成して、クラスタブロックデータに格納するブロックデータ生成部と、
を含むことを特徴とするデータの管理装置。
【請求項２】
請求項１に記載のデータの管理装置であって、
前記ブロックデータ生成部は、
前記クラスタブロックの代表値としてのクラスタが、当該クラスタブロックを構成するブロックのクラスタに含まれる比率を純粋度として算出し、当該純粋度をクラスタブロックの要素とすることを特徴とするデータの管理装置。
【請求項３】
請求項２に記載のデータの管理装置であって、
前記クラスタデータ生成部は、
前記生成したクラスタデータをクラスタ時系列データに格納し、
前記ブロックデータ生成部は、
前記クラスタ時系列データに格納されたクラスタデータについて前記クラスタブロックを生成し、前記純粋度が予め設定した純粋度閾値以上のクラスタブロックを前記クラスタブロックデータに格納し、前記純粋度が前記純粋度閾値未満のクラスタブロックのクラスタデータについては、前記クラスタ時系列データに保存しておき、前記クラスタ時系列データに新たなクラスタデータが追加された場合に、前記クラスタ時系列データに保存しておいた前記クラスタデータをクラスタブロックの生成に利用することを特徴とするデータの管理装置。
【請求項４】
請求項２に記載のデータの管理装置であって、
前記クラスタデータ生成部は、
前記生成したクラスタデータをクラスタ時系列データに格納し、
前記ブロックデータ生成部は、
前記クラスタ時系列データに格納されたクラスタデータについて前記クラスタブロックを生成し、現在時刻から前記時刻集合に含まれる時刻までの時間が予め設定した時間閾値以上で、かつ、前記純粋度が予め設定した純粋度閾値以上のクラスタブロックを前記クラスタブロックデータに格納し、現在時刻から前記時刻集合に含まれる時刻までの時間が前記時間閾値未満のクラスタブロックのクラスタデータについては、前記クラスタ時系列データに保存しておき、前記クラスタ時系列データに新たなクラスタデータが追加された場合に、前記クラスタ時系列データに保存しておいた前記クラスタデータをクラスタブロックの生成に利用することを特徴とするデータの管理装置。
【請求項５】
請求項１に記載のデータの管理装置であって、
前記クラスタデータ生成部は、
前記生成したクラスタデータをクラスタ時系列データに格納し、
前記ブロックデータ生成部は、
現在時刻から前記クラスタ時系列データに格納されたクラスタデータの時刻までの時間が予め設定された時間閾値以上のデータについては、ブロックデータの生成対象から除外することを特徴とするデータの管理装置。
【請求項６】
請求項１に記載のデータの管理装置であって、
検索対象の期間と、センサの識別子を検索条件として受け付ける制御部と、
前記検索条件を満たすデータを取得する検索部と、をさらに含み、
前記クラスタデータ生成部は、
前記生成したクラスタデータをクラスタ時系列データに格納し、
前記検索部は、
前記クラスタブロックデータから前記検索条件を満たすクラスタブロックを取得し、前記クラスタ時系列データから前記検索条件を満たすクラスタデータを取得し、前記取得したクラスタブロックとクラスタデータとを出力することを特徴とするデータの管理装置。
【請求項７】
請求項６に記載のデータの管理装置であって、
前記制御部は、
前記検索部が取得したクラスタブロックとクラスタデータから前記センサの識別子とクラスタの関係を時系列で表示する画面を生成することを特徴とするデータの管理装置。
【請求項８】
請求項１に記載のデータの管理装置であって、
前記ブロックデータ生成部は、
前記２次元配列から、時刻軸方向でセンサ軸方向の配列要素を並べ替えたブロックを生成する際に、ＩＲＭ（Ｉｎｆｉｎｉｔｅ  Ｒｅｌａｔｉｏｎａｌ  Ｍｏｄｅｌ）を用いて並べ替えることを特徴とするデータの管理装置。
【請求項９】
プロセッサとメモリを含むデータ管理装置がセンサから出力されたセンサデータを受け付けるデータの管理方法であって、
前記データ管理装置が、前記センサデータの値を予め設定したクラスタに分類し、前記センサデータの時刻と前記センサの識別子と前記クラスタとを含むクラスタデータを生成する第１のステップと、
前記データ管理装置が、前記クラスタデータから、前記センサの識別子を要素とするセンサ軸方向と、前記センサデータの時刻を要素とする時刻軸方向と、からなる配列要素に前記クラスタを格納する２次元配列を生成する第２のステップと、
前記データ管理装置が、前記２次元配列から、時刻軸方向でセンサ軸方向の配列要素を並べ替えたブロックを生成し、出現比率が最大となるクラスタを代表値とする１以上のブロックから前記時刻を含む時刻集合ごとに、前記センサの識別子を含むセンサ集合を含むクラスタブロックを生成して、クラスタブロックデータに格納する第３のステップと、を含むことを特徴とするデータの管理方法。
【請求項１０】
請求項９に記載のデータの管理方法であって、
前記第３のステップは、
前記クラスタブロックの代表値としてのクラスタが、当該クラスタブロックを構成するブロックのクラスタに含まれる比率を純粋度として算出し、当該純粋度をクラスタブロックの要素とすることを特徴とするデータの管理方法。
【請求項１１】
請求項１０に記載のデータの管理方法であって、
前記第１のステップは、
前記生成したクラスタデータをクラスタ時系列データに格納し、
前記第３のステップは、
前記クラスタ時系列データに格納されたクラスタデータについて前記クラスタブロックを生成し、前記純粋度が予め設定した純粋度閾値以上のクラスタブロックを前記クラスタブロックデータに格納し、前記純粋度が前記純粋度閾値未満のクラスタブロックのクラスタデータについては、前記クラスタ時系列データに保存しておき、前記クラスタ時系列データに新たなクラスタデータが追加された場合に、前記クラスタ時系列データに保存しておいた前記クラスタデータをクラスタブロックの生成に利用することを特徴とするデータの管理方法。
【請求項１２】
請求項１０に記載のデータの管理方法であって、
前記第１のステップは、
前記生成したクラスタデータをクラスタ時系列データに格納し、
前記第３のステップは、
前記クラスタ時系列データに格納されたクラスタデータについて前記クラスタブロックを生成し、現在時刻から前記時刻集合に含まれる時刻までの時間が予め設定した時間閾値以上で、かつ、前記純粋度が予め設定した純粋度閾値以上のクラスタブロックを前記クラスタブロックデータに格納し、現在時刻から前記時刻集合に含まれる時刻までの時間が前記時間閾値未満のクラスタブロックのクラスタデータについては、前記クラスタ時系列データに保存しておき、前記クラスタ時系列データに新たなクラスタデータが追加された場合に、前記クラスタ時系列データに保存しておいた前記クラスタデータをクラスタブロックの生成に利用することを特徴とするデータの管理方法。
【請求項１３】
請求項９に記載のデータの管理方法であって、
前記第１のステップは、
前記生成したクラスタデータをクラスタ時系列データに格納し、
前記第３のステップは、
現在時刻から前記クラスタ時系列データに格納されたクラスタデータの時刻までの時間が予め設定された時間閾値以上のデータについては、ブロックデータの生成対象から除外することを特徴とするデータの管理方法。
【請求項１４】
請求項９に記載のデータの管理方法であって、
前記データ管理装置が、検索対象の期間と、センサの識別子を検索条件として受け付ける第４のステップと、
前記データ管理装置が、前記検索条件を満たすデータを取得する第５のステップと、をさらに含み、
前記第１のステップは、
前記生成したクラスタデータをクラスタ時系列データに格納し、
前記第５のステップは、
前記クラスタブロックデータから前記検索条件を満たすクラスタブロックを取得し、前記クラスタ時系列データから前記検索条件を満たすクラスタデータを取得し、前記取得したクラスタブロックとクラスタデータとを出力することを特徴とするデータの管理方法。
【請求項１５】
請求項１４に記載のデータの管理方法であって、
前記データ管理装置が、前記取得したクラスタブロックとクラスタデータから前記センサの識別子とクラスタの関係を時系列で表示する画面を生成する第６のステップをさらに含むことを特徴とするデータの管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時系列のビッグデータを分析する技術に関する。
【背景技術】
【０００２】
近年、ＩｏＴ（Internet of Things）やＩＣＴ（Information and Communication Technology）という言葉に象徴される様に、様々な機器がネットワークに接続され、相互にデータ通信や制御を行えるようになってきた。例えば、電力の分野では各家庭の家電機器に取り付けた電力センサの時系列データを収集して、家電制御のスケジューリングに活用し、電力の全体需要の予測を行っている。あるいは、交通の分野では、各車両に取り付けた加速度センサの時系列データを収集して、道路整備の計画に活用したり、保険料策定の指針に用いている。【０００３】
これらの大量のセンサから出力される時系列データの分析においては、センサのグループ化が重要となる。例えば、電力計などのセンサによる電力分析においては、朝食時の各家庭をまとめて消費電力の分布を作成したり、交通分析においては、初心者の車をまとめて急ブレーキの分布を作成することができる。【０００４】
従来、センサのグループはドメイン知識を基に固定的な集合として管理されていた。なお、ドメイン知識とは、特定の技術分野における専門知識を示す。例えば、特定の地区の家庭のセンサや、特定の車種の車両のセンサなどである。しかし、実際の分析に用いるグループの多くは時間の経過とともに変化する。例えば、ある時刻における朝食時の家庭の消費電力は刻々と変化する。あるいは、ある時刻における初心者の車両は運転者の交代や熟練によって変化する。【０００５】
これに対して、単純に各時刻における各センサのクラスタのデータを管理する方法が考えられる。しかしこの方法では、センサからのデータ量や期間に応じて大量のデータが発生することとなり、データ量の逼迫や、分析における検索の遅延といった問題が生じる。よって、クラスタ時系列を少ないデータ量で分析に有用に管理することが課題となる。【０００６】
クラスタ時系列を管理する従来技術としては、クラスタの時間変化を表す時間変化情報をＩＲＭ（Infinite Relational Model）のモデルパラメータに導入する技術が提案されている(例えば、特許文献１)。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−４８５８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記特許文献１に記載の従来技術は、ある時点におけるクラスタに時間変化を適用することで目的の時刻のクラスタを得る方法である。そのため、未計測時刻におけるクラスタの推定に効果を期待できる。【０００９】
しかし、既計測時刻におけるクラスタの管理という観点では、特に時間変化の多い時系列データにおいて、少ないデータ量で精度の高いモデルを構築しにくいという課題があった。
【課題を解決するための手段】
【００１０】
本発明は、プロセッサとメモリを含んでセンサが出力したセンサデータを受け付けるデータの管理装置であって、前記センサデータの値を予め設定したクラスタに分類し、前記センサデータの時刻と前記センサの識別子と前記クラスタとを含むクラスタデータを生成するクラスタデータ生成部と、前記クラスタデータから、前記センサの識別子を要素とするセンサ軸方向と、前記センサデータの時刻を要素とする時刻軸方向と、からなる配列要素に前記クラスタを格納する２次元配列を生成し、前記２次元配列から、時刻軸方向でセンサ軸方向の配列要素を並べ替えたブロックを生成し、出現比率が最大となるクラスタを代表値とする１以上のブロックから前記時刻を含む時刻集合ごとに、前記センサの識別子を含むセンサ集合を含むクラスタブロックを生成して、クラスタブロックデータに格納するブロックデータ生成部と、を含む。
【発明の効果】
【００１１】
本発明によれば、取得したデータを、複数の値が含まれるブロックに並べかえて代表値で管理することで、少ないデータ量で精度の高いモデル（またはデータの集合）を生成することができる。また、高い圧縮効果を得ることができる。また、あるクラスタを持つセンサ集合と時刻集合の検索や、センサ集合と時刻集合におけるクラスタの割合の算出などが容易となり、分析が高速に行える。また、純粋度を管理することで、データ圧縮の精度の保証や計算完了データの切り分けが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施例を示し、計算機システムの構成の一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、クラスタ時系列データをクラスタブロックデータとして保管する計算機システムの機能要素を示すブロック図である。
【図３】本発明の第１の実施例を示し、センサが測定した時系列データの構成の一例を示す図である。
【図４】本発明の第１の実施例を示し、クラスタの生成に用いるクラスタモデルデータの構成の一例を示す図である。
【図５】本発明の第１の実施例を示し、クラスタ判断の結果として一時的に保管するクラスタデータの構成の一例を示す図である。
【図６】本発明の第１の実施例を示し、並べ替え対象のデータとして管理するクラスタ時系列データの構成の一例を示す図である。
【図７】本発明の第１の実施例を示し、並べ替え結果のデータとして管理するクラスタブロックデータの構成の一例を示す図である。
【図８】本発明の第１の実施例を示し、並べ替え終了のデータとして管理する保管クラスタ時系列データの構成の一例を示す図である。
【図９】本発明の第１の実施例を示し、センサデータ記録部で行われるセンサ時系列データの記録処理の一例を示すフローチャートである。
【図１０】本発明の第１の実施例を示し、クラスタデータ生成部で行われるクラスタを判定する処理の一例を示すフローチャートである。
【図１１】本発明の第１の実施例を示し、クラスタデータ読出部で行われるクラスタの判定結果を送信する処理の一例を示すフローチャートである。
【図１２】本発明の第１の実施例を示し、クラスタデータ記録部で行われるクラスタ時系列データを記録する処理の一例を示すフローチャートである。
【図１３】本発明の第１の実施例を示し、ブロックデータ生成部で行われる並べ替えによりクラスタブロックデータを生成する処理の一例を示すフローチャートである。
【図１４】本発明の第１の実施例を示し、クラスタデータ保管部で行われる再計算除外のためにクラスタ時系列データを別途保管する処理の一例を示すフローチャートである。
【図１５】本発明の第２の実施例を示し、計算機システムの機能要素の一例を示すブロック図である。
【図１６】本発明の第２の実施例を示し、クラスタデータ検索部における、分析に向けてクラスタデータと時系列データを検索する処理の一例を示すフローチャートである。
【図１７】本発明の第２の実施例を示し、Ｕ／Ｉ制御部における、入力装置と出力装置を制御する処理の一例を示すフローチャートである。
【図１８】本発明の第２の実施例を示し、クラスタの分析を行う画面の構成の一例を示す図である。
【図１９】本発明の第１の実施例を示し、センサ軸と時刻軸を含む２次元配列の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施形態について添付図面を用いて説明する。
【実施例１】
【００１４】
図１は、本発明を適用する計算機システムの基本構成を示すブロック図である。計算機システムはクラスタ生成装置１００と、クラスタ時系列管理装置１２０と、から構成され、これらの装置はネットワーク１１０で相互に接続されている。ネットワーク１１０とは、企業内のＬＡＮ（Local Area Network）やＬＡＮ間を接続するＷＡＮ（Wide Area Network）やＩＳＰ（Internet Service Provider）によるインターネット接続などを指す。なお、クラスタ生成装置１００とクラスタ時系列管理装置１２０は同一のハードウェア（計算機またはプロセッサとメモリを含む装置）として構成されても良いし、複数のハードウェアとして構成されても良い。【００１５】
クラスタ生成装置１００はプロセッサ１０１と、メモリ１０２と、センサ群１０３と、記憶装置１０４と、ネットワークインターフェース１０５とを含み、これらの構成要素は内部バス等により相互に接続されている。【００１６】
なお、これらの構成要素は構成により一部欠けても良いし、同様の要素や入出力装置などを追加しても良い。また、記憶装置１０４はメモリ１０２に含まれても良いし、外部記憶装置で代替しても良い。また、センサ群１０３は、１以上のセンサを含み、内部バスの他に、有線ネットワークや無線ネットワークを介して接続されても良い。【００１７】
プロセッサ１０１は、メモリ１０２に格納されたプログラムを実行する処理部であり、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などを採用することができる。【００１８】
メモリ１０２はプロセッサ１０１で実行されるプログラムや、プログラムから参照、更新するデータを一時的に記憶する主記憶部であり、ＲＡＭ（Random Access Memory）や一部ＲＯＭ（Read Only Memory）などを指す。【００１９】
センサ群１０３は、自然現象や人工物の性質や時空間情報を、科学的原理によりクラスタ生成装置１００が解釈可能な信号に置き換える変換部であり、電力センサや加速度センサなどで構成することができる。【００２０】
記憶装置１０４はメモリ１０２を介してプロセッサ１０１で実行されるプログラムや、プログラムが使用するデータを継続的に記憶する補助記憶部であり、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などで構成することができる。【００２１】
ネットワークインターフェース１０５は、クラスタ生成装置１００とクラスタ時系列管理装置１２０とを接続するために利用される通信部であり、ネットワーク１１０を介してデータの送受信を行うためのインターフェースを指す。【００２２】
クラスタ時系列管理装置１２０は、プロセッサ１２１と、メモリ１２２と、ネットワークインターフェース１２３と、入力装置１２４と、出力装置１２５と、記憶装置１２６とを含み、これらの構成要素は内部バスにより相互に接続されている。これらの構成要素は構成により一部欠けても良いし、同様の要素やセンサ群などを追加しても良い。また、記憶装置１２６はメモリ１２２に含まれても良いし、外部記憶装置で代替しても良い。【００２３】
プロセッサ１２１、メモリ１２２、ネットワークインターフェース１２３、記憶装置１２６はそれぞれ、プロセッサ１０１、メモリ１０２、ネットワークインターフェース１０５、記憶装置１０４の同名の装置と同様である。【００２４】
入力装置１２４は、キーボードやマウスなどで構成され、プログラムの実行や停止の指示や情報の入力を行うのに利用される。出力装置１２５には、ディスプレイやプリンタなどが接続され、プログラムの実行結果の表示を行う。【００２５】
図２は本発明の第１の実施例であるクラスタ時系列データをクラスタブロックデータとして保管するための計算機システムの機能要素を示したブロック図である。【００２６】
まず、クラスタ生成装置１００の構成について説明する。クラスタ生成装置１００のメモリ１０２には、センサデータ記録部２１０と、クラスタデータ生成部２１１と、クラスタデータ読出部２１２のプログラムが格納されている。【００２７】
記憶装置１０４には、センサ時系列データ２００と、クラスタモデルデータ２０１と、クラスタデータ２０２と、が格納されている。ネットワークインターフェース１０５はクラスタデータ送信部２２０を含む。【００２８】
クラスタ生成装置１００におけるプログラムとデータの関係は以下の通りである。まず、センサデータ記録部２１０がセンサ群１０３を介してセンサ時系列データ２００を生成する。【００２９】
次にクラスタデータ生成部２１１が、センサ時系列データ２００とクラスタモデルデータ２０１を基にクラスタデータ２０２を後述するように生成する。最後にクラスタデータ読出部２１２がクラスタデータ２０２を、クラスタデータ送信部２２０からクラスタ時系列管理装置１２０へ送信する。クラスタデータ読出部２１２は、送信後にクラスタデータ２０２のレコードを削除する。なお、これらのプログラムは互いに包含関係にあってもよいし、あるいは独立関係にあってもよい。また、クラスタモデルデータ２０１はセンサ時系列データ２００を基にクラスタデータ生成部２１１によって生成されても良い。【００３０】
センサデータ記録部２１０と、クラスタデータ生成部２１１と、クラスタデータ読出部２１２の各機能部はプログラムとして記憶装置１０４からメモリ１０２にロードされる。【００３１】
プロセッサ１０１は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ１０１は、センサデータ記録プログラムに従って処理することセンサデータ記録部２１０として機能する。他のプログラムについても同様である。さらに、プロセッサ１０１は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。【００３２】
次に、クラスタ時系列管理装置１２０の構成について説明する。クラスタ時系列管理装置１２０のメモリ１２２には、クラスタデータ記録部２４０と、ブロックデータ生成部２４１と、クラスタデータ保管部２４２のプログラムが格納されている。【００３３】
記憶装置１２６には、クラスタ時系列データ２５０と、クラスタブロックデータ２５１と、保管クラスタ時系列データ２５２が格納されている。ネットワークインターフェース１２３はクラスタデータ受信部２３０を含む。【００３４】
クラスタ時系列管理装置１２０におけるプログラムとデータの関係は以下の通りである。まず、クラスタデータ記録部２４０がクラスタデータ２０２を、クラスタデータ受信部２３０を介してクラスタ生成装置１００から受信し、クラスタデータ２０２からクラスタ時系列データ２５０を後述するように生成する。【００３５】
次に、ブロックデータ生成部２４１が、クラスタ時系列データ２５０を基に、複数のクラスタが含まれるブロックとしてのクラスタブロックデータ２５１を生成する。ブロックデータ生成部２４１は、クラスタブロックデータ２５１を生成するとクラスタ時系列データ２５０のレコードを削除する。【００３６】
最後に、クラスタデータ保管部２４２がクラスタ時系列データ２５０から保管クラスタ時系列データ２５２へレコードを移す。これらのプログラムは互いに包含関係にあってもよく、あるいいは独立関係にあってもよく、呼出しの順序やタイミングも適宜変更することができる。【００３７】
クラスタデータ記録部２４０と、ブロックデータ生成部２４１と、クラスタデータ保管部２４２の各機能部はプログラムとして記憶装置１２６からメモリ１２２にロードされる。【００３８】
プロセッサ１２１は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ１２１は、クラスタデータ保管部プログラムに従って処理することクラスタデータ保管部２４２として機能する。他のプログラムについても同様である。さらに、プロセッサ１２１は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。【００３９】
なお、クラスタ生成装置１００とクラスタ時系列管理装置１２０の各機能を実現するプログラム、テーブル等の情報は、記憶装置１０４、１２６などのストレージサブシステムや不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。【００４０】
本実施例の、クラスタ時系列は、ひとつのクラスタに含まれるセンサの識別子が、時刻に応じて変化する場合に、時刻毎のクラスタの構成要素を指す。【００４１】
図３はセンサ群１０３によって計測されてセンサデータ記録部２１０によって生成されるセンサ時系列データ２００の構成の一例を示す図である。センサ時系列データ２００は所定の計測間隔毎にセンサの数に応じて図示の様なレコード３１０が生成される。【００４２】
各レコードは、時刻３００と、センサ３０１と、センサ値３０２のカラムをひとつのエントリに含む。時刻３００は当該レコードの生成時刻を表したものである。時刻３００は、図中では、ＹＹ／ＭＭ／ＤＤ  ｈｈ：ｍｍ：ｓｓの表現形式を用いているが、時刻またはタイムスタンプが正しく判別できれば、他の表現形式を用いても良い。なお、時刻３００としては、クラスタ生成装置１００がレコードを作成した時刻の他に、センサが当該センサデータを測定した時刻を用いてもよい。【００４３】
センサ３０１は、センサ群１０３を構成するセンサのうち、センサデータを計測したセンサの識別子を表したものである。図中ではＳＸ（Ｓ１〜Ｓ５）の形式としたが、個々のセンサを識別できれば他の表現形式を用いても良い。なお、センサの識別子本実施例１では、計算機システム内でユニークな値であれば良い。また、他の識別子についても同様である。【００４４】
センサ値３０２は計測されたセンサデータの値（例えば、風速：ｍ／ｓｅｃ）を表したものである。図中ではＸＸ．ＸＸの形式としたが、後述するモデル４０１との乖離を算出できれば他の表現形式を用いても良い。なお、センサ値３０２には、センサの種類に応じた形式でセンサデータを格納することができる。なお、図３の例では、時刻３００（タイムスタンプ）を昇順でソートした状態を示す。【００４５】
図４はクラスタデータ生成部２１１がクラスタ判定のための教師データとして用いるクラスタモデルデータ２０１の構成の一例を示す図である。クラスタモデルデータ２０１は判別したいクラスタとモデルの数に応じた図中４１０の様なレコードを有する。【００４６】
各レコードは、クラスタ４００と、モデル４０１のカラムをひとつのエントリに含む。クラスタ４００にはクラスタの識別子が格納される。図３に示したセンサ時系列データ２００の各レコードがどのクラスタに判定されたかは、この識別子を用いて後述するクラスタデータ２０２に記録される。図中では識別子をＣＸ（Ｃ１〜Ｃ５）の形式としたが、クラスタの識別ができれば他の表現形式を用いても良い。【００４７】
モデル４０１は、クラスタに含まれるセンサデータのモデルを表したものである。図中ではＸＸ．ＸＸ、ＸＸ．ＸＴ，…とセンサデータの値を列挙したベクトル形式とした。しかしながら、この形式に限定されるもの絵ではなく、センサ時系列データ２００のレコードとの乖離度である距離が、予め設定された手法（または法則）に従って算出できれば、複数のベクトル値でもよいし、あるいはスカラー値でもよく、他の表現形式を用いても良い。【００４８】
図５は、クラスタデータ生成部２１１によって生成されるクラスタデータ２０２の構成の一例を示す図である。クラスタデータ２０２はクラスタの判定を行った単位時間毎にセンサの数に応じて図中５１０の様なレコードを生成する。【００４９】
各レコードは時刻５００、センサ５０１、クラスタ５０２のカラムをひとつのエントリに含む。時刻５００は、当該レコードのセンサデータについてクラスタの判定を行った開始時刻（またはタイムスタンプ）を表したものである。図中では、ＹＹ／ＭＭ／ＤＤ  ｈｈ：ｍｍ：ｓｓの表現形式を用いているが、時刻が正しく判別できれば、他の表現形式を用いても良い。また、クラスタを判断したレコードと対応づけられれば、開始時刻、終了時刻などの情報で記録しても良い。【００５０】
センサ５０１は、センサデータを計測したセンサの識別子を表したものである。図中ではＳＸ（Ｓ１〜Ｓ５）の形式としたが、センサが識別できれば他の表現形式を用いても良い。クラスタ５０２はクラスタの判断結果となるクラスタの識別子を表したものである。図中ではクラスタモデルデータ２０１のクラスタ４００と同様のカラムとしたが、これらが対応づけられれば他の表現を用いてもよい。なお、図５の例では、時刻５００（タイムスタンプ）が１分間の例を示す。【００５１】
図６は並べ替え対象のデータとしてクラスタ時系列管理装置１２０が管理するクラスタ時系列データ２５０の構成の一例を示す図である。クラスタ時系列データ２５０は、クラスタデータ２０２を蓄積したデータであり、蓄積期間に応じて図中６１０の様なレコードを生成する。【００５２】
各レコードは時刻６００、センサ６０１、クラスタ６０２のカラムをひとつのエントリに含む。時刻６００、センサ６０１、クラスタ６０２は、図５に示したクラスタデータ２０２の時刻５００、センサ５０１、クラスタ５０２の同名のカラムと同様である。また、図６の例では、時刻６００（タイムスタンプ）を昇順でソートした時系列順の状態を示す。【００５３】
図７は、クラスタ時系列データ２５０を並べ変えた結果としてクラスタ時系列管理装置１２０が管理するクラスタブロックデータ２５１の構造の一例を示す図である。クラスタブロックデータ２５１は、図６のクラスタ時系列データ２５０を並べ替えて、複数のクラスタを含むブロックの数に応じて図中７１０の様なレコードが生成される。【００５４】
各レコードは時刻集合７００、センサ集合７０１、クラスタ７０２、純粋度７０３のカラムをひとつのエントリに含む。時刻集合７００は並べ替えの結果ブロックとしてまとまった時刻を表したものである。図中ではＩＳＯ８６０１に準拠した日時を列挙した表現形式を用いているが、まとまった時刻が識別できれば他の表現形式を用いてもよい。【００５５】
センサ集合７０１は、並べ替えの結果、出現比率が最大のクラスタにまとまったセンサの識別子を表したものである。図中では、クラスタ６０２を列挙した表現形式を用いているが、まとまったクラスタが識別できれば他の表現形式を用いてもよい。【００５６】
クラスタ７０２は並べ替えの結果、ブロックとしてまとまったクラスタの代表値を表したものである。図中ではＣＸ（Ｃ１〜Ｃ５）の表現形式を用いたが、どのクラスタであるか識別できれば他の表現形式を用いてもよい。【００５７】
純粋度７０３は、後述する並べ替えの結果、まとまったブロックに含まれるクラスタを母数としたクラスタブの代表値の比率である。図中では有効桁数２ケタの浮動小数点数を用いたが、割合を識別できれば他の表現形式を用いてよい。【００５８】
また、クラスタブロックデータ２５１の１レコードは、ひとつのクラスタブロックを示す。ひとつのクラスタブロックは、複数のクラスタを含む１以上のブロックをまとめたデータである。【００５９】
例えば、図中７１０のレコードは、時刻集合７００が２０１４−１２−２４の１２：３０：００〜１２：３３：００で、クラスタ＝Ｃ１のセンサＳ１と、クラスタ＝Ｃ１のセンサＳ３と、クラスタ＝Ｃ１のセンサＳ５の３つのクラスタをひとつにまとめてセンサ集合７０１＝Ｓ１、Ｓ３、Ｓ５とする。すなわち、時刻集合７００で、センサデータの代表値の出現比率が最大となるクラスタに対応するセンサをセンサ集合７０１としてまとめる。そして、時刻集合７００とセンサ集合７０１に対応するクラスタの代表値の比率である純粋度７０３で、圧縮されたデータの精度を管理する。【００６０】
図８は、クラスタデータ保管部２４２が、並べ替え終了のデータとして管理する保管クラスタ時系列データ２５２の構造の一例を示す図である。保管クラスタ時系列データ２５２には、後述するように終了判断に応じて図中８１０の様なレコードが生成される。【００６１】
各レコードは時刻８００、センサ８０１、クラスタ８０２のカラムをひとつのエントリに含む。時刻８００、センサ８０１、クラスタ８０２は、図６に示したクラスタ時系列データ２５０の時刻６００、センサ６０１、クラスタ６０２およびクラスタデータ２０２の時刻５００、センサ５０１、クラスタ５０２の同名のカラムと同様である。【００６２】
図９は、センサデータ記録部２１０における、センサ時系列データ２００を記録する処理の一例を示すフローチャートである。この処理は、クラスタ生成装置１００のセンサデータ記録部２１０が、起動後から繰り返して実行する。【００６３】
センサデータ記録部２１０では、ステップＳ９００、ステップＳ９０５に記載の通り、１分経つ毎にクラスタ生成装置１００を停止するまでステップＳ９０１、ステップＳ９０２、ステップＳ９０３、ステップＳ９０４を繰り返す。【００６４】
図中では１分経つ毎の繰り返しとしたが、クラスタを判断するレコードの単位（または範囲）にあわせて、任意の単位時間（または時刻の範囲）での繰り返しでもよく、クラスタ生成装置１００が認識できる他のイベントをトリガーとした繰り返しでもよい。また、センサデータ記録部２１０では、ステップＳ９０１、ステップＳ９０４に記載の通り１秒経つ毎にクラスタ生成装置１００を停止するまでステップＳ９０２、ステップＳ９０３を繰り返す。図中では１秒経つ毎の繰り返しとしたが、センサ群１０３の計測間隔にあわせて任意の単位時間の繰り返しでもよい。【００６５】
図９の処理では、まず、ステップＳ９０２でセンサ群１０３からセンサデータを取得し、時刻３００、センサ３０１、センサ値３０２を含むレコードを生成してセンサ時系列データ２００に追加する。レコードの生成には、Ａ／Ｄ変換や時刻補正などの予め設定した前処理を含む。次に、ステップＳ９０４でクラスタデータ生成部２１１を呼出し、後述するような処理を実行する。【００６６】
上記の処理により、センサデータ記録部２１０は、１秒ごとに取得したセンサ群１０３の測定値からセンサ時系列データ２００に新たなレコードを追加する。そして、センサデータ記録部２１０は、１分ごとにクラスタデータ生成部２１１を起動して、後述するようにクラスタデータを生成する。【００６７】
図１０はクラスタデータ生成部２１１における、センサ時系列データ２００の各レコードがどのクラスタに分類されるかを判定する処理の一例を示すフローチャートである。クラスタデータ生成部２１１ではステップＳ１００３とステップＳ１００８に記載の通り、クラスタモデルデータ２０１の全レコードを取得するまでステップＳ１００４、ステップＳ１００５、ステップＳ１００６、ステップＳ１００７を繰り返す。【００６８】
まず、ステップＳ１０００では、クラスタデータ生成部２１１がセンサ時系列データ２００から過去１分のレコードを取得して開始時刻を保持する。なお、クラスタデータ２０２に生成処理の開始時刻は、センサ時系列データ２００の時刻３００を用いればよい。【００６９】
図５のクラスタデータ２０２の説明でも記載したが、クラスタ生成装置１００では、クラスタを判定したレコードを特定できれば、開始終了時刻、終了時刻などの情報で保持しても良い。また、クラスタの判定を行うレコードの単位に応じて任意の日時（またはタイムスタンプ）のレコードを取得しても良い。【００７０】
次にステップＳ１００１で、クラスタデータ生成部２１１は、取得したレコードの各時刻３００のセンサ値３０２を各次元の要素として、センサ３０１毎に６０次元の波形のベクトルを生成する。本実施例１では１分（６０秒）ごとにクラスタデータ２０２の生成を行うので、センサ３０１毎に６０次元の波形のベクトル値を算出する例を示す。例えば、図３で示したように、センサ３０１がＳ１〜Ｓ５の場合、クラスタデータ生成部２１１は、各センサ３０１の６０次元の波形ベクトル値Ｖ１〜Ｖ５を算出する。なお、これに限定されるものではなく、図４に示したクラスタモデルデータ２０１が持つモデル４０１に応じて、次元数は任意で良く、例えば、１次元のスカラー値であっても良い。【００７１】
次にステップＳ１００２で、クラスタデータ生成部２１１は、センサ３０１毎に距離変数とクラスタ変数を定義して距離変数を十分に大きい値で初期化する。例えば、図３で示したように、センサ３０１がＳ１〜Ｓ５の場合、クラスタデータ生成部２１１は、各センサ３０１毎に距離変数Ｄ１〜Ｄ５と、クラスタ変数ＣＬ１〜ＣＬ５をそれぞれ初期化する。ここで、十分に大きい値とは、後述するユークリッド距離で算出される値よりも大きい値のことである。ステップＳ１００２の処理では、距離変数とクラスタ変数の初期化が目的のため、任意の値で初期化して、１回目のループで算出したユークリッド距離で必ず更新する方法でも良い。【００７２】
ステップＳ１００３からステップＳ１００８では、クラスタデータ生成部２１１が、クラスタモデルデータ２０１の全てのレコードについて以下の処理を繰り返す。【００７３】
次にステップＳ１００４で、クラスタデータ生成部２１１は、クラスタモデルデータ２０１から１レコードを取得する。すなわち、クラスタ４００に対応するモデル４０１を取得する。【００７４】
本実施例１ではクラスタデータ生成部２１１がモデル４０１について１レコードずつ判定し、後述する判定結果で解を更新しているが、モデル４０１のレコードをまとまった単位で取得して一斉に判定を行っても良い。【００７５】
次にステップＳ１００５で、クラスタデータ生成部２１１が、センサ３０１毎にモデル４０１のベクトルと、６０次元の波形ベクトル値Ｖ１〜Ｖ５のユークリッド距離をそれぞれ算出する。なお、各センサ毎のユークリッド距離を変数Ｅ１〜Ｅ５とする。【００７６】
本実施例１ではベクトルの要素毎の距離を積算したユークリッド距離Ｅ１〜Ｅ５を用いたが、類似性を判断できる値であれば、ＤＴＷ（Dynamic Time Warping）など公知または周知の手法を用いて距離を算出して良い。【００７７】
ステップＳ１００５の処理によって、クラスタデータ生成部２１１が、ステップＳ１００１で算出したセンサ３０１毎の６０次元の波形ベクトル値Ｖ１〜Ｖ５と、モデル４０１に定義されたベクトルとのユークリッド距離Ｅ１〜Ｅ５とを、類似度の指標としてそれぞれ算出する。【００７８】
次にステップＳ１００６ではクラスタデータ生成部２１１が、上記算出されたユークリッド距離Ｅ（ｎ）について、保持している距離変数Ｄ（ｎ）よりも小さいか否かをそれぞれ判定する。なお、本実施例１において、（ｎ）は「１」〜「５」の何れかを示し、「１」〜「５」の演算を順次実行するものとする。そして、クラスタデータ生成部２１１は、算出されたユークリッド距離Ｅ（ｎ）が距離変数Ｄ（ｎ）以上の場合には、類似性が低いと判定してステップＳ１００８からステップＳ１００４へ戻って蒸気処理を繰り返す。【００７９】
一方、クラスタデータ生成部２１１は、算出されたユークリッド距離Ｅ（ｎ）が距離変数Ｄ（ｎ）よりも小さい場合には、類似性が高いと判定して、ステップＳ１００７へ進む。【００８０】
ステップＳ１００７では、クラスタデータ生成部２１１が、センサ３０１毎にクラスタ変数ＣＬ（ｎ）をクラスタ４００の値で更新し、さらに距離変数Ｄ（ｎ）をユークリッド距離Ｅ（ｎ）で更新する。すなわち、クラスタデータ生成部２１１は、ユークリッド距離Ｅ（ｎ）が距離変数Ｄ（ｎ）よりも小さいことから、センサ３０１の６０次元の波形ベクトル値Ｖ（ｎ）と、モデル４０１のベクトルの類似性は高いと判定する。そして、クラスタデータ生成部２１１は、クラスタ変数ＣＬ（ｎ）をモデル４０１に対応するクラスタ４００に更新し、距離変数Ｄ（ｎ）にユークリッド距離Ｅ（ｎ）を設定する。【００８１】
上記ステップＳ１００３〜Ｓ１００８の繰り返し処理が終了すると次に、ステップＳ１００９へ進む。【００８２】
ステップＳ１００９では、クラスタデータ生成部２１１が、ステップＳ１０００で保持した開始時刻と、センサ３０１毎のクラスタ変数ＣＬ（ｎ）とから、時刻５００、センサ５０１、クラスタ５０２のレコードを生成してクラスタデータ２０２へ追加する。この結果、１分間のセンサ時系列データ２００から、図５で示すようにセンサ５０１毎にセンサデータが所属するクラスタへ振り分けたクラスタデータ２０２が生成される。次にクラスタデータ生成部２１１は、ステップＳ１０１０でクラスタデータ読出部２１２を呼出す。【００８３】
以上の処理によって、１秒ごとのセンサ時系列データ２００から、６０次元波形ベクトル値Ｖ（ｎ）とモデル４０１のユークリッド距離Ｅ（ｎ）が算出され、ユークリッド距離（ｎ）が距離変数Ｄ（ｎ）よりも小さければ、当該モデル４０１のクラスタに当該センサを所属させる。すなわち、１秒毎のセンサデータから、センサＳ（ｎ）毎に１分間の代表値をモデル４０１で定義されたクラスタとして分類することで、ひとつのセンサＳ（ｎ）のセンサデータを時系列方向で圧縮する。【００８４】
図５の例では、時刻１２：３０：００において、センサＳ１、Ｓ５のセンサデータがクラスタＣ１に分類され、センサＳ２、Ｓ４のセンサデータがクラスタＣ２に分類され、センサＳ３のセンサデータがクラスタＣ３に分類されたことを示す。【００８５】
図１１は、クラスタデータ読出部２１２で行われる、クラスタデータ２０２をクラスタ生成装置１００からクラスタ時系列管理装置１２０へ送信する処理の一例を示すフローチャートである。【００８６】
まず、ステップＳ１１００では、クラスタデータ読出部２１２が、クラスタデータ２０２の全レコードを取得する。次にステップ１１０１では、クラスタデータ読出部２１２が、取得中のレコードを、クラスタデータ送信部２２０を介してクラスタ時系列管理装置１２０へ送信する。【００８７】
次にステップ１１０２で、クラスタデータ読出部２１２は、送信が完了すると、クラスタデータ２０２の全レコードを削除する。図中では、送信済みのクラスタデータ２０２を削除しているが、レコードを削除せずに送信すべきレコードを時刻（タイムスタンプ）や差分などから判定して送信しても良い。【００８８】
上記処理により、クラスタデータ生成部２１１がクラスタデータ２０２の生成を完了すると、クラスタデータ読出部２１２は記憶装置１０４からクラスタデータ２０２を読み出して、クラスタ時系列管理装置１２０へ送信する。そして、送信が完了したクラスタデータ２０２は記憶装置１０４から削除される。【００８９】
図１２は、クラスタ時系列管理装置１２０のクラスタデータ記録部２４０で行われる、クラスタ時系列データ２５０を記録する処理の一例を示すフローチャートである。この処理は、クラスタ時系列管理装置１２０の起動後から繰り返して実行される。【００９０】
クラスタデータ記録部２４０はステップ１２００とステップＳ１２０４に記載の通り、クラスタ時系列管理装置１２０が停止するまで、ステップＳ１２０１、ステップＳ１２０２、ステップＳ１２０３を繰り返す。【００９１】
まず、クラスタデータ記録部２４０はステップＳ１２０１でクラスタ生成装置１００からクラスタデータ２０２のレコードを受信したか否かを判定する。レコードを受信してない場合は再びＳ１２０１へと戻る。これはつまり、レコードの待ち受け状態を表す。【００９２】
レコードを受信した場合は、ステップＳ１２０２に進み、クラスタデータ記録部２４０がクラスタデータ受信部２３０を介して受信したレコードをクラスタ時系列データ２５０へ追加する。【００９３】
次にステップＳ１２０３では、クラスタデータ記録部２４０がブロックデータ生成部２４１を呼出す。【００９４】
上記処理では、クラスタ生成装置１００からクラスタデータ２０２のレコードを受信する度に、クラスタ時系列データ２５０にレコードを追加してから、ブロックデータ生成部２４１を呼び出す。上記処理により、所定の時間間隔で生成されたクラスタデータ２０２は、図６で示すようにクラスタ時系列データ２５０で時系列の順で、センサ６０１が所属するクラスタ６０２が時刻６００毎に蓄積される。【００９５】
なお、上記ではレコードを受信する度にブロックデータ生成部２４１を呼出しているが、任意の時間間隔やクラスタ時系列管理装置１２０が認識できる他のイベントをトリガーにして、ブロックデータ生成部２４１を呼出しても良い。【００９６】
図１３はブロックデータ生成部２４１で行われる、クラスタ時系列データ２５０の並べ替えによってクラスタブロックデータ２５１を生成する処理の一例を示すフローチャートである。この処理は、図１２の処理によって繰り返して呼び出される処理である。【００９７】
ブロックデータ生成部２４１では、ステップＳ１３０３とステップＳ１３１０に記載の通り、十分に大きな回数までステップＳ１３０４、ステップＳ１３０５、ステップＳ１３０６、ステップＳ１３０７、ステップＳ１３０８、ステップＳ１３０９を繰り返す。【００９８】
ここで、十分に大きな回数とは、ブロックデータ生成処理が収束するまでのループ回数であり、並べ替えのロジックに応じて必要なループの回数を指す。この十分に大きな回数は、計算機システムの管理者などがセンサ群１０３の種類や数あるいはセンサデータの用途などに応じて予め設定したループ回数を用いることができる。また、ブロックデータ生成処理が収束する例としては、ブロックを並べ替える尤度（事後確率）が更新されなくなった時点とすることもできる。【００９９】
また、ブロックデータ生成部２４１ではステップＳ１３０６とステップＳ１３０８に記載の通り、計算過程で生成されているセンサ軸要素のクラスタと、時刻軸要素のクラスタの組合せから成るクラスタブロックデータの全てに対してステップＳ１３０７を繰り返す。【０１００】
なお、本実施例では全てのクラスタブロックに対して事後確率の計算を行っているが、ある時点での事後確率を保持しておき、並べ替えの結果変化したブロックのみの差分を計算しても良い。【０１０１】
まず、ステップＳ１３００では、ブロックデータ生成部２４１がクラスタ時系列データ２５０の全レコードを取得してセンサ軸Ｔ１と時刻軸Ｔ２に対するクラスタという関係を要素に持つ２次元配列１９００を図１９のように生成する。【０１０２】
図１９は、センサ軸Ｔ１と時刻軸Ｔ２を含む２次元配列１９００の一例を示す図である。２次元配列１９００は、図中行方向をセンサ３０１の識別子を要素とするセンサ軸Ｔ１とし、図中列方向をセンサデータの時刻３００を要素とする時刻軸Ｔ２とする。【０１０３】
そして、図示の例では、センサ軸Ｔ１にはセンサＳ１〜Ｓ５を列挙し、時刻軸Ｔ２には時刻１２：３０：００〜１２：３４：００を列挙した例を示す。センサ軸Ｔ１と時刻軸Ｔ２から定まるカラム（配列の要素）には、クラスタの識別子が格納される。図１９の２次元配列１９００は、図６のクラスタ時系列データ２５０のセンサ６０１の識別子をセンサ軸Ｔ１とし、時刻６００を時刻軸Ｔ２として、カラムにクラスタ６０２を並べ替えたものである。本実施例１では２次元配列を用いる例を示すが、センサと時刻に対するクラスタが識別できれば別のデータ構造を用いても良い。【０１０４】
次にステップＳ１３０１では、ブロックデータ生成部２４１が、センサ軸Ｔ１の要素内でのクラスタリングと、時刻軸Ｔ２の要素内でのクラスタリングを行うため、２次元配列１９００を初期化する。この初期化は、例えば、センサ軸Ｔ１の要素に対するクラスタと、時刻軸Ｔ２の要素に対応するクラスタを所定値などで初期化すればよい。【０１０５】
次にステップＳ１３０２では、ブロックデータ生成部２４１が、クラスタのまとまりやすさに係わるハイパパラメータγと、クラスタブロック内の各クラスタ割合に関わるハイパパラメータβと、圧縮精度に関わる純粋度閾値と、ブロック化の範囲に関わる時間閾値を設定する。なお、ハイパパラメータγ、βと、純粋度閾値及び時間閾値は予め設定された値を用いればよい。【０１０６】
ステップＳ１３０３〜Ｓ１３１０では、ブロックデータ生成部２４１が、上記のループ回数に達するまで処理を繰り返す。【０１０７】
次にステップＳ１３０４では、ブロックデータ生成部２４１が、センサ軸Ｔ１の要素と時刻軸Ｔ２の要素の中から１つの要素をランダムに選択してクラスタの番号を消去する。本実施例１では、センサ軸Ｔ１と時刻軸Ｔ２の中から要素をランダムに抽出したが、全ての要素を順次に選択しても良い。【０１０８】
次にステップＳ１３０５では、ブロックデータ生成部２４１が、ハイパパラメータγを変数に有するＣＲＰ（Chinese Restaurant Process）の手法を用いて選択し、当該選選択した要素を既存のクラスタの番号に設定しなおす。つまり、ＣＲＰで選択した各軸方向で要素（ブロック）をまとめることを意味する。この処理によって、時刻軸Ｔ２方向のブロックと、センサ軸Ｔ１方向のブロックが、それぞれまとめられる。【０１０９】
なお、ＣＲＰについては、"The nested Chinese restaurant process and Bayesian nonparametric inference of topic hierarchies"（DAVID M. BLEI、THOMAS L. GRIFFITHS、MICHAEL I. JORDAN  著；Journal of the ACM (JACM) JACM Homepage archive, Volume 57 Issue 2, January 2010, Article No. 7 ）や"Hierarchical Topic Models and the Nested Chinese Restaurant Process"（David M. Blei、 Thomas L. Griffiths、Michael I. Jordan、 Joshua B. Tenenbaum  著）などの周知の手法と同様であるので、説明は省略する。【０１１０】
次にステップＳ１３０６〜Ｓ１３０８では、ブロックデータ生成部２４１が、センサ軸Ｔ１の要素と、時刻軸Ｔ２の要素の組合せから定まるクラスタ番号の全てのブロックについて繰り返して実行する。【０１１１】
次にステップＳ１３０７では、ブロックデータ生成部２４１が、ハイパパラメータβを変数に有するディリクレ分布（Dirichlet distribution）から生成された多項分布に従って、クラスタブロック内のクラスタが生成されたとみなした場合の事後確率を算出する。【０１１２】
この事後確率は、ひとつのクラスタブロックに複数のブロックをまとめた際のブロックの尤もらしさ（尤度）を算出することを意味する。同一クラスタが多く含まれるブロックを尤もらしいと判定するためには、多項分布における各クラスタの発生割合に偏りが現れるようにディリクレ分布のパラメータγを設定しておく必要がある。【０１１３】
本実施例１では、図１９で示した２次元配列１９００の時刻範囲（１２：３０：００〜１２：３４：００）で５つのセンサＳ１〜Ｓ５のクラスタ番号を、図７に示すクラスタブロックデータ２５１のクラスタブロックにまとめる例を示す。本実施例１では５つのセンサのクラスタ番号をブロック化するためディリクレ分布を仮定して生成される多項分布を用いるが、連続値をブロック化するのであれば正規分布を仮定して生成される正規分布を用いても良い。あるいは、共役事前分布のように解析的に事後確率を算出できる分布であれば他の分布を仮定しても良い。【０１１４】
２次元配列１９００のセンサ軸Ｔ１の要素と時刻軸Ｔ２の要素の組合せからなる全てのブロックについてステップＳ１３０７の処理が完了すると、ステップ１３０９の処理に進む。この時点で、２次元配列１９００から、時刻軸Ｔ２方向でセンサ軸Ｔ１方向の配列要素を並べ替えたブロックのうち、出現比率が最大のクラスタを代表値とする１以上のブロックからクラスタブロックが生成される。【０１１５】
ステップＳ１３０９では、ブロックデータ生成部２４１が、各クラスタブロックの事後確率を掛け合わせた全体事後確率が最大となる場合のクラスタブロックを正解として保持する。【０１１６】
ステップＳ１３０４〜Ｓ１３０９の処理が所定のループ回数に達すると、ステップ１３１１の処理に進む。ステップＳ１３０４〜Ｓ１３０９のループが完了した時点で、ブロックデータ生成部２４１が保持しているクラスタブロックがクラスタブロックの候補として出力される。【０１１７】
クラスタブロックの生成については、例えば、２次元配列１９００内の同一の時刻においてセンサ軸Ｔ１方向でクラスタ番号が等しいセンサをひとつのブロックとし、さらに、隣接する時刻軸Ｔ２方向でクラスタ番号が等しいブロックを結合することでクラスタブロックを生成する。【０１１８】
実際には、隣接するセンサ軸Ｔ１方向と隣接する時刻軸Ｔ２方向とでクラスタ番号が一致しない場合があるため、複数のブロックのセンサデータの代表値となるクラスタ番号を設定したクラスタブロックを生成する。センサデータの代表値となるクラスタ番号がクラスタブロックに含まれる比率が純粋度７０３で表される。純粋度７０３は、クラスタブロックの代表値であるクラスタが、当該クラスタブロックを構成するブロックのクラスタに含まれる比率である。【０１１９】
次にステップＳ１３１１では、ブロックデータ生成部２４１が、各クラスタブロックのセンサ軸Ｔ１の要素を時刻集合７００、時刻軸Ｔ２の要素をセンサ集合７０１、クラスタブロック内で最も出現割合が最大のクラスタ番号をクラスタ７０２、その割合を純粋度７０３とし、純粋度７０３が規定の閾値以上で、かつ、現在時刻から時刻集合７００に含まれる時刻までの時間が時間閾値以上の場合にはレコードを生成してクラスタブロックデータ２５１に追加する。【０１２０】
次にステップＳ１３１２では、ブロックデータ生成部２４１が、生成したレコードの時刻集合７００に含まれる時刻６００とセンサ集合７０１に含まれるセンサ６０１を持つクラスタ時系列データ２５０のレコードを削除する。【０１２１】
なお、ステップＳ１３００〜ステップＳ１３１０の処理はＩＲＭによる並べ替え（クラスタの時間変化による並び替え）に相当するが、クラスタがまとまる並べ替えができれば任意のロジックを用いて良い。【０１２２】
上記処理によって、クラスタ時系列管理装置１２０では、クラスタ時系列データ２５０のデータを２次元配列１９００に展開し、センサ軸Ｔ１と時刻軸Ｔ２の要素を並べ替えて、クラスタ番号を代表値とするクラスタブロックを生成する。クラスタブロックは、時刻集合７００毎にセンサ集合７０１と、センサデータの代表値を示すクラスタ７０２と、クラスタの比率を示す純粋度７０３を含み、複数のブロックをまとめたデータとなる。【０１２３】
換言すれば、取得したセンサデータを、複数の値が含まれるクラスタブロックに並べかえて代表値（クラスタ）で管理することにより、少ないデータ量で精度の高いモデル（またはデータの集合）を生成することができ、また、高いデータ圧縮効果を得ることができる。【０１２４】
本実施例１では、クラスタ生成装置１００は、センサ群１０３の各センサが１秒ごとに測定したセンサデータを、１分ごとに集約してクラスタデータ２０２を生成する。クラスタデータ２０２を受信したクラスタ時系列管理装置１２０では、クラスタ時系列データ２５０に蓄積してから、上述の処理によってクラスタブロックデータ２５１を算出する。これにより、センサ群１０３からの大量のセンサデータを、時刻集合７００毎にセンサ集合７０１の代表値であるクラスタ番号で管理することが可能となる。【０１２５】
また、ブロックデータ生成部２４１では、算出された純粋度が予め設定された純粋度閾値以上のクラスタブロックのみクラスタブロックデータ２５１に記録する。一方、ブロックデータ生成部２４１は、算出された純粋度が予め定めた閾値未満のクラスタブロックについては、並べ替え対象の時系列のまま削除することなくクラスタ時系列データ２５０に保存しておく。そして、ブロックデータ生成部２４１が再度処理を実行する際に、新たなクラスタ時系列データ２５０が追加された場合、上記保存されたクラスタ時系列データ２５０と追加されたクラスタ時系列データを用いて上記処理を実行する。【０１２６】
これにより、ブロックデータ生成部２４１は、クラスタブロックに採用されなかったクラスタ時系列データ２５０を保存しておき、新たなクラスタ時系列データ２５０が加えられたときに再度ブロックデータ生成処理を行って、より多くのクラスタブロックを生成することができる。【０１２７】
また、ブロックデータ生成部２４１は、現在時刻から時刻集合７００に含まれる時刻までの時間が定めた時間閾値以上で、かつ、算出された純粋度が予め設定した純粋度閾値以上のクラスタブロックをクラスタブロックデータ２５１に記録する一方、現在時刻から時刻集合７００に含まれる時刻までの時間が時間閾値未満か、あるいは、純粋度が予め設定した閾値未満のブロックについては、クラスタ時系列データ２５０にそのまま保存しておく。そして、新たにクラスタ時系列データ２５０が追加された場合に、ブロックデータ生成部２４１は、上記保存されたクラスタ時系列データ２５０と追加されたクラスタ時系列データを用いて上記処理を実行する。これにより、より多くのクラスタブロックを生成することができる。【０１２８】
また、ブロックデータ生成部２４１は、並べ替え対象（ブロックデータの生成対象）のクラスタ時系列データ２５０で現在時刻から時刻６００までの時間が予め設定された時間閾値以上のレコードについては、並べ替え完了としてブロックデータの生成対象から除外してもよい。【０１２９】
また、純粋度の閾値を管理することによって、クラスタブロックデータ２５１の精度を保証することができる。すなわち、時系列で変化する大量のデータを代表値で管理しながらもデータの精度を確保できる。これにより、大量のセンサデータを分析するソースとしてクラスタブロックデータ２５１を提供することができる。【０１３０】
図１４は、クラスタデータ保管部２４２で行われる再計算除外のためにクラスタ時系列データ２５０を保管クラスタ時系列データ２５２として保管する処理の一例を示したフローチャートである。この処理は、所定の周期（例えば、１日）や管理者の指令に応じて実行される。【０１３１】
まずステップＳ１４００で、クラスタデータ保管部２４２は、クラスタ時系列データ２５０から時刻６００が、現在より１カ月以上前のレコードを取得する。本実施例では現在より１カ月以上前のレコードを対象としたが、十分に再計算が行われたと思われる所定の期間を用いても良い。あるいは、期間に代わって、例えば、ブロックデータ生成部２４１による計算回数を管理しておき、計算回数に基づき保管クラスタ時系列データ２５２へ保管するデータを判定しても良い。【０１３２】
次に、クラスタデータ保管部２４２は、ステップＳ１４００で取得したレコードを保管クラスタ時系列データ２５２に追加する（Ｓ１０４０）。次にクラスタデータ保管部２４２は、ステップＳ１４０２で保管クラスタ時系列データ２５２へ追加したレコードを、クラスタ時系列データ２５０から削除する。【０１３３】
上記処理により、ブロックデータ生成部２４１によって計算されて所定の条件（期間または演算回数）となったクラスタ時系列データ２５０は、保管クラスタ時系列データ２５２へ移動される。これにより、ブロックデータ生成部２４１が演算の対象とするクラスタ時系列データ２５０が過大になるのを防ぐことができる。【０１３４】
以上のように、本実施例１では、センサ群１０３から時系列的に値が変化する大量のセンサデータを収集するクラスタ時系列管理装置１２０が、センサデータを複数の値が含まれるブロックに並べかえて、ブロック毎にセンサデータの代表値であるクラスタ番号で管理するクラスタブロックを生成することで、少ないデータ量で精度の高いモデル（またはデータの集合）を生成することができる。また、時系列的に変換するセンサデータを、クラスタブロックデータ２５１とすることで高い圧縮効果を得ることができる。また、クラスタブロックデータ２５１が代表値に対応するクラスタ番号を保持することで、あるクラスタを含むセンサ集合と時刻集合の検索や、センサ集合と時刻集合におけるクラスタの割合の計算機などが容易となり、データの分析を高速に行うことが可能となる。【０１３５】
また、純粋度を管理することで、データ圧縮の精度の保証や計算完了データの切り分けが可能となる。また、ブロックデータ生成部２４１では、ループ回数を用いて上限のある繰り返し計算を行うことで、限られた計算機リソースの中でより多くのクラスタブロックを生成してデータ圧縮の効果を向上させることが可能となる。【０１３６】
また、上記実施例１では、クラスタ生成装置１００がセンサ群１０３を有する例を示したが、これに限定されるものではない。例えば、クラスタ生成装置１００がネットワークを介して複数のセンサに接続されてセンサデータを受信する構成であっても良い。
【実施例２】
【０１３７】
図１５は本発明の第２の実施例における保管したクラスタブロックデータ２５１を分析に活用するための計算機システムの機能構成を示すブロック図である。前記実施例１の図２と同名の構成要素は、図２に記載の機能と同様の機能を持つ。【０１３８】
前記実施例１の図２と異なる点は、クラスタ生成装置１００において、クラスタデータ読出部２１２にセンサ時系列データ２００を接続した点と、クラスタ時系列管理装置１２０において、記憶装置１２６にセンサ時系列データ２００Ａを追加してクラスタデータ記録部２４０と接続した点と、メモリ１２２に含まれる構成要素にクラスタデータ検索部１５００とＵ／Ｉ制御部１５０１を追加した点と、それに伴い入力装置１２４と出力装置１２５を明記した点である。なお、記憶装置１２６のセンサ時系列データ２００Ａは、クラスタ生成装置１００のセンサ時系列データ２００の複製である。【０１３９】
本実施例２では、クラスタデータ記録部２４０とブロックデータ生成部２４１とクラスタデータ保管部２４２とクラスタデータ検索部１５００とＵ／Ｉ制御部１５０１を同一メモリ空間に配置したが、クラスタデータ検索部１５００とＵ／Ｉ制御部１５０１のみ別のメモリ空間に配置されていても良い。【０１４０】
また、クラスタ生成装置１００のセンサ時系列データ２００をクラスタ時系列管理装置１２０のセンサ時系列データ２００に移す処理は、実施例１で記載したクラスタ生成装置１００のクラスタデータ２０２をクラスタ時系列管理装置のクラスタ時系列データ２５０に移す処理と同様である。読出や記録の対象を増やすだけの違いであるため、ここでは処理の詳細を再掲載しない。【０１４１】
図１６はクラスタデータ検索部１５００における分析に向けてクラスタデータと時系列データを検索する処理の一例を示すフローチャートである。【０１４２】
まず、クラスタデータ検索部１５００は、ステップＳ１６００でＵ／Ｉ制御部１５０１から期間（指定期間）とセンサの指定（指定センサ）を受け付ける。なお、指定期間は日時の範囲であり、指定センサは、センサの識別子で指定することができる。【０１４３】
次にクラスタデータ検索部１５００は、ステップＳ１６０１でクラスタ時系列データ２５０から時刻６００とセンサ６０１に指定期間内の時刻及び指定センサを含むレコードを取得する。【０１４４】
次にクラスタデータ検索部１５００は、ステップＳ１６０２でクラスタブロックデータ２５１から時刻集合７００及びセンサ集合７０１に、指定期期間内の時刻及び指定センサを含むレコードを取得する。【０１４５】
次にクラスタデータ検索部１５００は、ステップＳ１６０３で保管クラスタ時系列データ２５２から時刻８００及びセンサ８０１に、指定期間内の時刻及び指定センサを含むレコードを取得する。【０１４６】
次にクラスタデータ検索部１５００は、ステップＳ１６０４でセンサ時系列データ２００Ａから時刻３００及びセンサ３０１に、指定期間内の時刻及び指定センサを含むレコードを取得する。次にクラスタデータ検索部１５００は、ステップＳ１６０１〜Ｓ１６０５で取得したレコードをＵ／Ｉ制御部１５０１に応答する。【０１４７】
以上の処理により、クラスタデータ検索部１５００は、Ｕ／Ｉ制御部１５０１から受け付けた指定期間内の時刻と指定センサを含むデータを、クラスタ時系列データ２５０とクラスタブロックデータ２５１と保管クラスタ時系列データ２５２及びセンサ時系列データ２００Ａから取得して、Ｕ／Ｉ制御部１５０１に出力することができる。【０１４８】
図１７はＵ／Ｉ制御部１５０１における、入力装置１２４と出力装置１２５を制御する処理の一例を示したフローチャートである。【０１４９】
まず、Ｕ／Ｉ制御部１５０１は、ステップＳ１７００で入力装置１２４を介してユーザが入力したセンサと期間の指定を受け付ける。次にＵ／Ｉ制御部１５０１は、ステップＳ１７０１で指定期間とセンサを引数としてクラスタデータ検索部１５００を呼出す。【０１５０】
次にＵ／Ｉ制御部１５０１は、ステップＳ１７０２でクラスタデータ検索部１５００に上記図１６の処理を実行させて検索結果のレコードを受け取る。次にＵ／Ｉ制御部１５０１は、ステップＳ１７０３で出力装置１２５を介してクラスタ分析画面１８００を生成する。【０１５１】
上記処理によって、後述の図１８の画面が生成され、出力装置１２５に出力される。【０１５２】
図１８は上記図１５の入力装置１２４と出力装置１２５における、クラスタの分析を行う画面の構成の一例を示した図である。【０１５３】
出力装置１２５にはクラスタ分析画面１８００が表示される。クラスタ分析画面１８００は期間１８０１と、センサ１８０２と、円グラフ１８０３と、ヒストグラム１８０４と、ブロック図１８０５と、選択部１８０６から構成される。【０１５４】
期間１８０１はユーザが指定する分析の期間を表す。期間１８０１は例えば入力装置１２４のマウスによってカレンダーをクリックすることにより生成できる。あるいは、キー入力により時間を表す文字列を直接入力しても良い。【０１５５】
センサ１８０２はユーザが指定する分析対象のセンサを表す。センサ１８０２は例えば入力装置１２４のマウスによってあらかじめデータとして持っておいたセンサの一覧をクリックすることにより生成できる。あるいは、キー入力によりセンサを表す文字列を直接入力しても良い。【０１５６】
円グラフ１８０３はユーザが指定した期間１８０１とセンサ１８０２の範囲における、クラスタの割合を表す。円グラフ１８０３はクラスタデータ検索部１５００から検索結果として受け取ったレコードを基にＵ／Ｉ制御部１５０１が生成することができる。【０１５７】
具体的には、Ｕ／Ｉ制御部１５０１は、クラスタ時系列データ２５０から取得したレコード数と、クラスタブロックデータ２５１から取得した各レコードの時刻集合の時刻要素数とセンサ集合のセンサ要素数を掛け合わせたブロックサイズの小計数と、保管クラスタ時系列データ２５２から取得したレコード数との合計数を母数（分母）とする。【０１５８】
次に、Ｕ／Ｉ制御部１５０１は、クラスタ時系列データ２５０から取得したレコード内でＣ１と一致するクラスタ６０２を持つレコード数と、クラスタブロックデータ２５１から取得したレコード内でＣ１と一致するクラスタ７０２を持つレコードのブロックサイズの小計数と、保管クラスタ時系列データ２５２から取得したレコード内でＣ１と一致するクラスタ８０２を持つレコード数との合計を分子とする。【０１５９】
そしてＵ／Ｉ制御部１５０１は、上記分子を母数で割れば、Ｃ１クラスタの割合が算出できる。Ｕ／Ｉ制御部１５０１は、同様にしてＣ２、Ｃ３と各クラスタで繰り返し、全ての割合の算出が完了したら、円グラフ１８０３等の形で表示することで実現できる。【０１６０】
ヒストグラム１８０４は選択部１８０６によって選択されたクラスタに該当する時系列のヒストグラム集計結果を表わす。ヒストグラム１８０４はクラスタデータ検索部１５００から受け取ったレコードを基に生成できる。【０１６１】
具体的には、Ｕ／Ｉ制御部１５０１が、クラスタ時系列データ２５０から取得したレコード内でＣ１と一致するクラスタ６０２を持つレコードの時刻６００とセンサ６０１のセットと、クラスタブロックデータ２５１から取得したレコード内でＣ１と一致するクラスタ７０２を持つレコードの時刻集合７００に含まれる時刻とセンサ集合７０１に含まれるセンサのセットと、保管クラスタ時系列データ２５２から取得したレコード内でＣ１と一致するクラスタ８０２を持つレコードの時刻８００とセンサ８０１のセットとを抽出する。【０１６２】
そして、Ｕ／Ｉ制御部１５０１は、センサ時系列データ３００から抽出した上記セットに該当する時刻３００とセンサ３０１を含むレコードを取得し、取得したレコードのセンサ値３０２を予め定めたビンで分割して集計することでヒストグラムを生成できる。【０１６３】
ブロック図１８０５は取得したレコードの可視化を表している。ブロック図１８０５はクラスタデータ検索部１５００から受け取ったレコードをＵ／Ｉ制御部１５０１が画面に描画すれば生成できる。【０１６４】
選択部１８０６は入力装置１２４のマウスでクリックすることで生成できる。図中のようにクリックしたクラスタに関連するデータ全ての強調は、円グラフ１８０３の生成で用いたデータやヒストグラム１８０４の生成で用いたデータの中から、選択したクラスタに該当するデータを抽出すれば実現できる。【０１６５】
以上のように、クラスタ時系列管理装置１２０では、クラスタブロックデータ２５１とクラスタ時系列データ２５０及びセンサ時系列データ２００Ａから、検索対象の指定期間と指定センサを含むレコードを取得して、代表値（クラスタ番号）に応じたグラフで出力することが可能となる。【０１６６】
クラスタブロックデータ２５１のデータ検索は高速に行うことが可能であり、かつ、クラスタ７０２に応じた値をグラフ化することで、クラスタブロックデータ２５１の検索結果を視覚化することが可能となる。【０１６７】
＜まとめ＞
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。【０１６８】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。【０１６９】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【図１】
2017002190.tif 000003
【図２】
2017002190.tif 000004
【図３】
2017002190.tif 000005
【図４】
2017002190.tif 000006
【図５】
2017002190.tif 000007
【図６】
2017002190.tif 000008
【図７】
2017002190.tif 000009
【図８】
2017002190.tif 000010
【図９】
2017002190.tif 000011
【図１０】
2017002190.tif 000012
【図１１】
2017002190.tif 000013
【図１２】
2017002190.tif 000014
【図１３】
2017002190.tif 000015
【図１４】
2017002190.tif 000016
【図１５】
2017002190.tif 000017
【図１６】
2017002190.tif 000018
【図１７】
2017002190.tif 000019
【図１８】
2017002190.tif 000020
【図１９】
2017002190.tif 000021
【国際調査報告】
2017002190.tif 000022
2017002190.tif 000023