(58)【調査した分野】(Int.Cl.,DB名)
前記必要量特定部は、指定された分析精度が得られるデータ量を分析手法毎に特定し、分析手法毎に特定されたデータ量のうち、最も多いデータ量を前記必要量として特定する
請求項2に記載のデータ格納装置。
前記必要量特定部は、更新期間が経過した場合と、分析手法が追加された場合と、分析手法が削除された場合と、指定された分析精度が変更された場合とに、前記必要量を特定し直す
請求項3に記載のデータ格納装置。
前記格納部は、前記更新期間中に前記必要量が増加した場合には、前記更新期間の開始時点から前記必要量が特定し直された時点までの過去期間については、増加した前記必要量で特定された前記抽出間隔により抽出された件数になるようにストレージに格納されたデータを補間して得られたデータを格納する
請求項4に記載のデータ格納装置。
前記格納部は、前記受信部によって受信されたデータを一時記憶部に格納し、前記一時記憶部に基準量のデータが蓄積されると、前記一時記憶部から前記抽出間隔でデータを抽出して、ストレージに格納する
請求項1から7までのいずれか1項に記載のデータ格納装置。
【発明を実施するための形態】
【0016】
実施の形態1.
***構成の説明***
図1から
図5を参照して、実施の形態1に係るデータ格納装置10の構成を説明する。
図1に示すように、データ格納装置10は、コンピュータである。
データ格納装置10は、プロセッサ11と、記憶装置12と、入力インタフェース13と、出力インタフェース14とのハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【0017】
プロセッサ11は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ11は、具体的には、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
【0018】
記憶装置12は、RAM(Random Access Memory)、HDD(Hard Disk Drive)である。また、記憶装置12は、SD(Secure Digital)メモリカード、CF(CompactFlash)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVDといった可搬記憶媒体であってもよい。
【0019】
入力インタフェース13は、1つ以上のセンサ31が接続され、センサ31からデータを受信するための装置である。入力インタフェース13は、具体例としては、USB(Universal Serial Bus)、IEEE1394の接続端子、又は、NIC(Network Interface Card)である。
【0020】
出力インタフェース14は、ストレージ32が接続され、データをストレージ32に送信するための装置である。出力インタフェース14は、具体例としては、USB、IEEE1394の接続端子、又は、NICである。
【0021】
データ格納装置10は、機能構成要素として、必要量特定部21と、受信部22と、形式判定部23と、センサ判定部24と、格納部25とを備える。必要量特定部21と、受信部22と、形式判定部23と、センサ判定部24と、格納部25との各部の機能はソフトウェアにより実現される。
記憶装置12には、データ格納装置10の各部の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ11により読み込まれ、実行される。これにより、データ格納装置10の各部の機能が実現される。
【0022】
プロセッサ11によって実現される各部の機能の処理の結果を示す情報とデータと信号値と変数値は、記憶装置12、又は、プロセッサ11内のレジスタ又はキャッシュメモリに記憶される。以下の説明では、プロセッサ11によって実現される各部の機能の処理の結果を示す情報とデータと信号値と変数値は、記憶装置12に記憶されるものとして説明する。
【0023】
プロセッサ11によって実現される各機能を実現するプログラムは、記憶装置12に記憶されているとした。しかし、このプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVDといった可搬記憶媒体に記憶されてもよい。
【0024】
図1では、プロセッサ11は、1つだけ示されていた。しかし、プロセッサ11は、複数であってもよく、複数のプロセッサ11が、各機能を実現するプログラムを連携して実行してもよい。
【0025】
記憶装置12は、収集条件記憶部121と、分析精度記憶部122と、センサ記憶部123と、一時記憶部124とを実現する。
【0026】
収集条件記憶部121は、データを収集する条件が記憶される。
図2に示すように、収集条件記憶部121は、データ収集間隔と、正常列数とが記憶される。データ収集間隔は、センサ31からデータを受信する間隔である。正常列数は、センサ31から受信したデータの正常な項目数である。正常列数は、センサ31毎に定められていてもよい。
【0027】
分析精度記憶部122は、センサ31から収集されたデータを用いた分析の精度が記憶される。
図3に示すように、分析精度記憶部122は、分析方法毎に、分析精度と、許容範囲と、データ量と、総計収束時間と、試行回数と、精度遷移と、データ量遷移と、入力データとが記憶される。分析精度は、対応する分析方法で求められる精度である。許容範囲は、分析精度が示す精度の前後何パーセントであれば許容されるかを示す。データ量は、分析精度が示す精度の分析をするのに必要なデータ量である。総計収束時間は、データ量を計算するのにかかった時間である。試行回数は、データ量を計算する際に分析処理が実行された回数である。精度遷移は、分析処理で得られた精度の遷移である。データ量遷移は、分析処理で使用したデータ量の遷移である。入力データは、分析処理で使用した学習用データ33の識別子である。
【0028】
センサ記憶部123は、センサ31についての情報が記憶される。
図4に示すように、センサ記憶部123は、データ格納装置10に接続されたセンサ31毎に、センサグループ、優先順位、センサID、施設名称、機器名称、型番が記憶される。センサグループは、1つ以上のセンサ31の集合に付された名称である。優先順位は、センサグループ内における優先順位である。センサIDは、センサ31の識別子である。施設名称は、センサ31が設置された施設の名称である。機器名称は、センサ31の種別を表す名称であり、具体例としては、温度センサ、湿度センサ、圧力センサである。型番は、センサ31の型番である。
【0029】
一時記憶部124は、データ格納装置10で処理中のデータが一時的に記憶される。
【0030】
センサ31は、検出値を検出して、検出値を含むデータを、収集条件記憶部121に記憶された間隔でデータ格納装置10に送信する。検出値は、具体例としては、温度、湿度、圧力である。
【0031】
ストレージ32は、センサ31で検出されたデータのうち、データ格納装置10によって抽出された少なくとも一部のデータが格納される。
図5に示すように、ストレージ32は、更新期間毎にデータが分けられて格納される。更新期間毎に分けられたデータの集合を学習用データ33と呼ぶ。実施の形態1では、更新期間は、月初から月末までの1か月であるとする。そのため、例えば、2015年12月の学習用データ33、2016年1月の学習用データ33、2016年2月の学習用データ33というように、ストレージ32は月毎の学習用データ33が格納される。
【0032】
***動作の説明***
図6から
図10を参照して、実施の形態1に係るデータ格納装置10の動作を説明する。
実施の形態1に係るデータ格納装置10の動作は、実施の形態1に係るデータ格納方法に相当する。また、実施の形態1に係るデータ格納装置10の動作は、実施の形態1に係るデータ格納プログラムの処理に相当する。
【0033】
図6を参照して、実施の形態1に係るデータ格納装置10の全体的な動作を説明する。
ステップS1の必要量特定処理では、必要量特定部21は、分析に必要なデータ量である必要量を特定する。分析に必要なデータ量とは、指定された分析精度が得られるデータ量という意味である。
具体的には、必要量特定部21は、分析精度記憶部122に記憶された各分析方法を対象方法とし、ストレージに格納されたデータを入力として対象方法で分析する。これにより、必要量特定部21は、対象方法について分析精度記憶部122に記憶された分析精度が得られるデータ量を特定する。そして、必要量特定部21は、分析方法毎に特定されたデータ量のうち、最も多いデータ量を必要量として特定する。
【0034】
ステップS2のデータ受信処理では、受信部22は、収集条件記憶部121に記憶されたデータ収集間隔で、センサ31からデータを受信する。
【0035】
ステップS3の形式判定処理では、形式判定部23は、ステップS2で受信されたデータの形式が正しいか否かを判定する。
具体的には、形式判定部23は、データを項目毎に分解して、データに含まれる項目数を特定する。そして、形式判定部23は、特定された項目数と、収集条件記憶部121に記憶された正常列数とが一致するか否かを判定する。形式判定部23は、一致した場合にはデータの形式が正しいと判定し、一致しない場合にはデータの形式が正しくないと判定する。つまり、形式判定部23は、通信中にデータの一部が欠落したような場合には、データの形式が正しくないと判定する。
形式判定部23は、データの形式が正しい場合には処理をステップS4に進め、そうでない場合には、処理をステップS6に進める。
【0036】
ステップS4のセンサ判定処理では、センサ判定部24は、ステップS2で受信されたデータが指定されたセンサ31から送信されたデータか否かを判定する。
具体的には、センサ判定部24は、ステップS2で受信されたデータに含まれるセンサIDが、センサ記憶部123に記憶されており、かつ、ステップS2で受信されたデータに含まれるセンサIDについての優先順位が1であるか否かを判定する。センサ判定部24は、センサIDが記憶されており、優先順位が1である場合には、データが指定されたセンサ31から送信されたと判定し、そうでない場合、データが指定されたセンサ31以外から送信されたと判定する。
センサ判定部24は、データが指定されたセンサ31から送信された場合には、処理をステップS5に進め、そうでない場合には、処理をステップS6に進める。
【0037】
ステップS5の一時記憶処理では、格納部25は、ステップS2で受信されたデータを一時記憶部124に格納する。一方、ステップS6のデータ破棄処理では、格納部25は、ステップS1で受信されたデータを破棄する。
【0038】
ステップS7の容量判定処理では、格納部25は、一時記憶部124に記憶されたデータ量が基準量以上であるか否かを判定する。基準量は、事前に設定されたデータ量であり、任意のデータ量である。
格納部25は、データ量が基準量以上である場合には処理をステップS8に進め、そうでない場合には処理をステップS2に戻す。
【0039】
ステップS8のデータ格納処理では、格納部25は、ステップS1で特定された必要量と、ステップS2で基準期間に受信されたデータのデータ量である受信量とから、更新期間に必要量のデータが抽出されるデータの抽出間隔を特定する。
そして、格納部25は、一時記憶部124から1件ずつ受信時刻の順にデータを読み出し、抽出間隔でデータを抽出して、ストレージ32に格納する。この際、格納部25は、更新期間毎にデータを分けてストレージ32に格納する。具体例としては、格納部25は、更新期間毎に別のテーブル又はファイルにデータを格納する、あるいは、更新期間毎に別の識別子を付けてデータを格納する。なお、格納部25は、読み出されたデータのうち、抽出されなかったデータについては、破棄する。
【0040】
ステップS9の必要量判定処理では、必要量特定部21は、必要量の再特定が必要か否かを判定する。
具体的には、必要量特定部21は、(1)更新期間を経過した場合、(2)分析精度記憶部122にレコードが追加され、分析手法が追加された場合、(3)分析精度記憶部122からレコードが削除され、分析手法が削除された場合、(4)指定された分析精度が変更された場合のいずれかに該当するか否かを判定する。そして、必要量特定部21は、(1)から(4)のいずれかに該当する場合には、必要量の再特定が必要であると判定し、そうでない場合には、必要量の再特定が必要ないと判定する。
つまり、
図7に示すように、(0)
図6に示す処理の開始時に必要量が特定された後は、(1)により更新期間毎に必要量が再特定されるとともに、(2)から(4)により、更新期間中に必要量が再特定される場合がある。
必要量特定部21は、必要量の再特定が必要な場合には処理をステップS1に戻し、そうでない場合には処理をステップS2に戻す。
【0041】
図8を参照して、ステップS1の必要量特定処理を説明する。
必要量特定処理について、
図7に示す(0)から(4)の5つの場合についてそれぞれ説明する。
【0042】
(0)
図6に示す処理の開始時
前提として、
図6に示す処理の開示時には、ストレージ32に学習用データ33が1つ格納されているとする。この学習用データ33は、具体例としては、直近の更新期間にセンサ31から送信された全てのデータである。あるいは、この学習用データ33は、直近の更新期間にセンサ31から送信された全てのデータのうち、ステップS3で形式が正しいと判定され、かつ、ステップS4で指定されたセンサ31から送信されたと判定されるデータでもよい。あるいは、この学習用データ33は、別途生成されたテストデータであってもよい。
【0043】
ステップS11では、必要量特定部21は、ストレージ32に格納された学習用データ33を読み出す。そして、必要量特定部21は、読み出された学習用データ33から対象量のデータを抽出する。対象量の初期値は、事前に設定されているものとする。
【0044】
ステップS12では、必要量特定部21は、分析精度記憶部122に記憶された1つの分析手法を対象方法として、抽出されたデータを用いて対象方法により分析する。
【0045】
ステップS13では、必要量特定部21は、分析した結果の分析精度である結果精度と、対象方法について分析精度記憶部122に記憶された分析精度とを比較する。
分析精度記憶部122に記憶された分析精度を基準として許容範囲内に結果精度が入っていれば、必要量特定部21は、現在の対象量を対象方法に対するデータ量として分析精度記憶部122に書き込み、処理をステップS14に進める。
一方、許容範囲内に結果精度が入っていなければ、必要量特定部21は、対象量を変更して、処理をステップS11に戻す。この際、必要量特定部21は、分析精度記憶部122に記憶された分析精度よりも結果精度が低い場合には対象量を増やし、分析精度記憶部122に記憶された分析精度よりも結果精度が高い場合には対象量を減らす。
【0046】
ステップS14では、必要量特定部21は、分析精度記憶部122に未処理の分析方法が記憶されているか否かを判定する。
必要量特定部21は、未処理の分析方法が記憶されている場合には、処理をステップS12に戻し、未処理の分析方法が記憶されていない場合には、処理をステップS15に進める。
【0047】
ステップS15では、必要量特定部21は、ステップS13で各分析方法について分析精度記憶部122に書き込まれたデータ量のうち、最も多いデータ量を必要量として特定する。
【0048】
図3を参照して具体例を説明する。
対象量の初期値を15MB(メガバイト)とする(
図3のデータ量遷移欄参照)。ステップS11で、必要量特定部21は、学習用データ33から15MBのデータを抽出する。ステップS12で、必要量特定部21は、分析手法“ニューラルネットワーク”を対象方法として、15MBのデータを入力として分析する。その結果、結果精度が20%であったとする(
図3の精度遷移欄参照)。すると、分析手法“ニューラルネットワーク”の分析精度80%を基準として許容範囲±5%内に入っていない。そのため、必要量特定部21は、対象量を倍の30MBに増やして処理をステップS11に戻す(
図3のデータ量遷移欄参照)。
【0049】
次に、必要量特定部21は、ステップS11で学習用データ33から30MBのデータを抽出する。ステップS12で、必要量特定部21は、分析手法“ニューラルネットワーク”を対象方法として、30MBのデータを入力として分析する。その結果、結果精度が40%であったとする(
図3の精度遷移欄参照)。すると、分析精度80%を基準として許容範囲±5%内に入っていない。そのため、必要量特定部21は、対象量を倍の60MBに増やして処理をステップS11に戻す(
図3のデータ量遷移欄参照)。
【0050】
同様の処理を実行すると、対象量が60MBの場合には結果精度が60%となり、分析精度80%を基準として許容範囲±5%内に入っていないので、対象量が120MBに増やされる。対象量が120MBの場合に、結果精度が90%となる。この場合、分析精度80%を基準として許容範囲±5%内に入っていないが、初めて結果精度が分析精度80%よりも高くなる。そこで、必要量特定部21は、対象量を100MBに減らして処理をステップS11に戻す(
図3のデータ量遷移欄参照)。ここで、対象量が60MBから120MBに増やされた際、結果精度が60%から90%に変化した。そこで、対象量である100MBは、対象量の変化と結果精度の変化とが正比例するものとして計算された、結果精度が80%になる場合のデータ量である。具体的には、100MB=60MB+((120MB−60MB)/(90%−60%)×(80%−60%))である。
対象量が100MBの場合には結果精度が80%となり、分析精度80%を基準として許容範囲±5%内に入っている。そのため、ステップS13で、必要量特定部21は、対象量である100MBを分析手法“ニューラルネットワーク”についてのデータ量として分析精度記憶部122に書き込む。
【0051】
次に、ステップS14で分析精度記憶部122に未処理の分析方法が記憶されているため、処理がステップS12に戻される。そして、ステップS12で必要量特定部21は、分析手法“ベイジアンネットワーク”を対象方法として、対象量である100MBのデータを入力として分析する。その結果、結果精度が75%であったとする(
図3の精度遷移欄参照)。すると、分析手法“ベイジアンネットワーク”の分析精度70%を基準として許容範囲±5%内に入っている。そのため、ステップS13で、必要量特定部21は、対象量である100MBを分析手法“ベイジアンネットワーク”についてのデータ量として分析精度記憶部122に書き込む。
【0052】
同様に、分析手法“ランダムフォレスト”について処理が実行され、データ量として200MBが書き込まれる。
【0053】
そして、ステップS15で必要量特定部21は、各分析手法について分析精度記憶部122に書き込まれたデータ量のうち、最も多いデータ量である200MBを必要量として特定する。
【0054】
(1)更新期間を経過した場合
(1)更新期間を経過した場合は、最新の学習用データ33が使用される点が、(0)
図6に示す処理の開始時と異なる。つまり、ステップS11で必要量特定部21は、ストレージ32に格納された学習用データ33のうち、最新の学習用データ33を読み出す。以降の処理は、(0)
図6に示す処理の開始時と同じである。
【0055】
(2)分析精度記憶部122にレコードが追加された場合
追加されたレコードの分析方法だけを処理対象として、ステップS11からステップS14が実行される点が、(1)更新期間を経過した場合と異なる。つまり、ステップS12で対象方法とされるのは、追加されたレコードの分析方法だけである。そして、ステップS15では、分析精度記憶部122に記憶された全ての分析方法を対象として、最も多いデータ量が必要量として特定される。
【0056】
(3)分析精度記憶部122からレコードが削除された場合
ステップS11からステップS14を実行せず、ステップS15で残っているレコードの分析方法を対象として、最も多いデータ量が必要量として特定される。
【0057】
(4)指定された分析精度が変更された場合
分析精度が変更されたレコードの分析方法だけを処理対象として、ステップS11からステップS14が実行される点が、(1)更新期間を経過した場合と異なる。つまり、ステップS12で対象方法とされるのは、分析精度が変更されたレコードの分析方法だけである。そして、ステップS15では、分析精度記憶部122に記憶された全ての分析方法を対象として、最も多いデータ量が必要量として特定される。
【0058】
なお、ステップS11で必要量特定部21は、学習用データ33に含まれるデータ量が対象量よりも少ない場合には、1つ古い学習用データ33も用いる。
【0059】
ステップS13で用いる結果精度について補足する。
結果精度を計算するために、必要量特定部21は、正解データを事前に用意しておき、分析した結果と正解データとを比較することにより結果精度を計算する。
具体例としては、(0)
図6に示す処理の開始時に用いる学習用データ33の一部を正解データ34とする。例えば、(0)
図6に示す処理の開始時に用いる学習用データ33が1月間にセンサ31から送信された全てのデータである場合に、学習用データ33のうちの1日分のデータを正解データ34とする。
ステップS12で必要量特定部21は、分析を行い1日分の分析値を計算する。そして、ステップS13で必要量特定部21は、同じ時刻についての分析値と正解データ34の値とを比較して、一致率を計算する。必要量特定部21は計算された一致率を結果精度とする。
例えば、
図9に示すように、正解データ34として、a1〜a15の値が与えられ、分析値としてb1〜b15の値が得られたとする。このとき、必要量特定部21は、a1とb1、a2とb2というように、同じ時刻の値どうしを比較する。そして、必要量特定部21は、分析値の値が、比較される正解データ34の値を基準として基準範囲内に入っていれば、分析値の値と正解データ34の値とが一致するとして、一致率を計算する。例えば、a2−(0.1×a2)≦b2≦a2+(0.1×a2)であれば、分析値b2は、正解データ34の値と一致すると判定される。
分析によって、学習用データ33の値が補間されるような場合には、正解データ34と比較される対象から、学習用データ33に含まれていた値を除外してもよい。
図9において、分析値のうち、黒塗りで示された点は学習用データ33に含まれていた値を示すとする。この場合、残りの白抜きで示された点であるb2,b4,b6,...についてのみ、同じ時刻の正解データ34の値と比較して、一致率が計算される。
【0060】
図10を参照して、ステップS8のデータ格納処理を説明する。
ステップS81では、格納部25は、後述するステップS82の処理で抽出間隔を特定した後に、ステップS1で必要量が特定されたか否かを判定する。
格納部25は、必要量が特定された場合には処理をステップS82に進め、必要量が特定されていない場合には処理をステップS83に進める。
【0061】
ステップS82では、格納部25は、更新期間に必要量のデータが均等に抽出されるようにするためのデータの抽出間隔を特定する。データが均等に抽出されるようにするのは、ある時期又はある時間帯等に偏ったデータでは、分析精度が低くなってしまう場合と、ある用途にしか利用できない場合とがあるためである。
具体的には、格納部25は、ステップS1で特定された必要量を、更新期間を基準期間で除した値で除して、基準期間当たりの必要量を計算する。また、格納部25は、基準期間当たりに受信部22によって受信される平均的なデータ量を計算する。ここでは、格納部25は、指定されたセンサ31の数と、データの収集間隔から特定される基準期間当たりに1つのセンサ31から収集されるデータ数と、1件のデータの平均データ量とを乗じて、平均的なデータ量を計算する。
そして、格納部25は、1つのセンサ31から収集されるデータ数を、平均的なデータ量を必要量で除した値で除して、基準期間当たりに1つのセンサ31から抽出するデータ数を計算する。格納部25は、基準期間当たりに1つのセンサ31から収集されるデータ数を、計算されたデータ数で除して抽出間隔を計算する。
【0062】
具体例としては、基準期間を1分とする。また、1分当たりの必要量が10MBであるとする。また、指定されたセンサ31の数が1000であり、1分当たりに1つのセンサ31から収集されるデータ数が61件であり、1つのデータの平均データ量が512B(バイト)であるとする。すると、1分当たりに受信部22が受信する平均的なデータ量は29.7MBとなり、基準期間当たりに1つのセンサ31から抽出するデータ数は、61件/(29.7MB/10MB)=20.54件になる。そして、抽出間隔は、61件/20.54件=2.97件となる。
つまり、各センサ31から収集されたデータについて、2.97≒3件に1件ずつデータを抽出すれば、更新期間に必要量のデータがストレージ32に格納されることになる。
【0063】
ステップS83では、格納部25は、一時記憶部124から収集された順に1件のデータを読み出す。
【0064】
ステップS84では、格納部25は、カウンタの値が抽出間隔と等しいか否かを判定する。なお、抽出間隔は、正の整数であるとする。
格納部25は、カウンタの値が抽出間隔と等しければ処理をステップS85に進め、カウンタの値が抽出間隔と等しくなければ処理をステップS86に進める。なお、カウンタの値の初期値は0とする。
【0065】
ステップS85では、格納部25は、カウンタの値を0にした上で、読み出されたデータを保持しておく。一方、ステップS86では、格納部25は、カウンタの値に1を加算した上で、読み出されたデータを破棄する。
そして、ステップS87では、格納部25は、一時記憶部124に未処理のデータがあるか否か判定する。格納部25は、未処理のデータがあれば、処理をステップS83に戻し、なければ、処理をステップS88に進める。
【0066】
ステップS88では、格納部25は、保持されたデータを、収集元のセンサ31毎に分けて、圧縮した上でストレージ32に格納する。また、格納部25は、一時記憶部124のデータを削除する。
【0067】
***実施の形態1の効果***
以上のように、実施の形態1に係るデータ格納装置10は、データの分析に必要な必要量からデータの抽出間隔を特定して、特定された抽出間隔でデータを抽出してストレージ32に格納する。これにより、分析の精度を維持しつつ、ストレージ32に格納されるデータ量を減らすことができる。
【0068】
また、実施の形態1に係るデータ格納装置10は、データの形式を確認し、形式が正しいデータのみをストレージ32に格納する。そのため、通信エラー等によりデータの一部が欠落し、分析に利用できないデータをストレージ32に格納することを防止できる。これにより、ストレージ32に不要なデータが格納されることを防止できる。
【0069】
また、実施の形態1に係るデータ格納装置10は、指定されたセンサ31から収集されたデータのみをストレージ32に格納する。そのため、バックアップ用として同様のセンサ31を複数稼働させている場合に、重複してデータをストレージ32に格納することを防止できる。
【0071】
<変形例1>
更新期間の途中で必要量が増加し、抽出間隔が再特定される場合がある。この場合、単純に実施の形態1で説明した処理を続けると、その更新期間においてストレージ32に格納されるデータ量は、再特定された必要量にはならない。
図11を参照して具体的に説明する。更新期間の中間点で必要量が50MBから100MBに増えたとする。この場合、更新期間の前半は、更新期間の終了時点で50MB分のデータがストレージ32に格納されるペースでデータが抽出される。したがって、更新期間の前半には25MB分のデータがストレージ32に格納される。更新期間の後半は、前半の倍のペースでデータが抽出される。したがって、更新期間の後半には50MB分のデータがストレージ32に格納される。その結果、更新期間の終了時点で75MB分のデータがストレージ32に格納されることになる。
【0072】
これでは、その更新期間については、データの分析に必要なデータ量がストレージ32に蓄積されないことになってしまう。そこで、変形例1として、格納部25は、更新期間の途中で必要量が増加した場合、更新期間の開始時点から必要量が特定し直された時点までの過去期間については、増加した必要量で特定された抽出間隔により抽出された件数になるようにストレージ32に格納されたデータを補間して等間隔に挿入する。これにより、過去期間分についてストレージ32に格納されたデータ量を増加させる。
具体的には、格納部25は、ストレージ32に格納された過去期間のデータを収集元のセンサ31毎に時系列に並べ、スプライン補間といった処理により、データ間の値を特定する。そして、格納部25は、不足する分だけデータを取り出して、別データとしてストレージ32に格納する。
図12を参照して具体的に説明する。
図12では、黒塗りの点がストレージ32に格納されたデータを示し、白抜きの点が補間された点を示す。更新期間の中間点で必要量が50MBから100MBに増えたとする。この場合、更新期間の前半においてストレージ32に格納されたデータ量を倍にする必要がある。そこで、格納部25は、更新期間の前半においてストレージ32に格納されたデータを、収集元のセンサ31毎に時系列に並べ、補間することにより、データ間の値を特定する。ここでは、iを1以上の整数とすると、補間点i+0.5の値は、隣り合う2つの値i,i+1の平均値としている。そして、特定された値を示すデータをストレージ32に格納する。これにより、更新期間の前半分のデータ量が25MBから50MBになる。そのため、更新期間の後半に、前半の倍のペースでデータが抽出され50MB分のデータが抽出されれば、更新期間の終了時点で100MB分のデータがストレージ32に格納されることになる。
【0073】
なお、更新期間の途中で必要量が再特定された場合、更新期間の残りの期間で必要量のデータがストレージ32に格納されるように抽出間隔を特定することも考えられる。つまり、上述したように、更新期間の中間点で必要量が50MBから100MBに増えた場合であれば、更新期間の前半で25MBのデータしか格納されていないので、後半で75MBのデータが格納されるように抽出間隔を特定することも考えられる。
しかし、こうしてしまうと、ストレージ32には、後半のデータが多くなってしまい、データに偏りが生じてしまう。そのため、分析精度が高くならない可能性がある。
【0074】
ここでは、更新期間の途中で必要量が増加した場合を説明した。更新期間の途中で必要量が減少する場合もある。この場合、単純に実施の形態1で説明した処理を続けると、ストレージ32に格納されるデータ量が多くなってしまう。しかし、データ量が少し多くなるだけで分析に必要なデータ量は確保される。そのため、単純に実施の形態1で説明した処理を続けてもよい。また、ストレージ32に格納されたその更新期間のデータを一定間隔で間引いて、ストレージ32に格納されたデータ量を減らしてもよい。
【0075】
<変形例2>
実施の形態1では、形式が正しいデータをストレージ32に格納していた。しかし、通信状態等によっては、多くのデータの形式に誤りがある場合もある。その結果、必要量のデータをストレージ32に格納できなくなってしまう場合もある。
そこで、変形例2として、形式判定部23は、基準率以上のデータの形式に誤りがある場合には、同じセンサ31から前後に収集されたデータを用いて補間を行い、データ形式を整える。具体例としては、形式判定部23は、データの温度の項目が欠けていた場合、そのデータの前に収集されたデータの温度と、そのデータの後に収集されたデータの温度とから、欠けていた温度の項目の値を計算して、データ形式を整える。そして、格納部25は、データ形式が整ったデータをストレージ32に格納する対象として一時記憶部124に格納する。
【0076】
<変形例3>
実施の形態1では、優先順位が1のセンサ31から収集されたデータをストレージ32に格納していた。しかし、優先順位が1のセンサ31が故障する場合もある。
そこで、変形例3として、受信部22は、あるセンサ31から送信されたデータを一定期間受信しない場合、そのセンサ31は故障したものとみなす。そして、そのセンサ31の優先順位を対象外にし、そのセンサ31と同じセンサグループに属する他のセンサ31の優先順位を繰り上げる。具体例としては、故障したとみなされたセンサ31の優先順位が3であれば、優先順位が4以下であった他のセンサ31の優先順位を1つずつ上げる。
これにより、優先順位が1のセンサ31が故障した場合であっても、同じセンサグループに属する他のセンサ31のデータがストレージ32に格納されるようになる。
【0077】
<変形例4>
実施の形態1では、
図8のステップS13で、許容範囲内に結果精度が入っていない場合に、分析精度よりも結果精度が低い場合には対象量を増やし、分析精度よりも結果精度が高い場合には対象量を減らした。これは、入力とするデータが多いほど、分析精度が高くなるということを前提としていたためである。しかし、入力とするデータが多いほど、分析精度が高くならない場合もあり得る。
そこで、変形例4として、過去の対象量の変化と結果精度の変化とに応じて、対象量を増減させる。
【0078】
図13を参照して具体的に説明する。
ステップS131では、必要量特定部21は、分析精度よりも結果精度が低いか否かを判定する。必要量特定部21は、分析精度よりも結果精度が低い場合には処理をステップS132に進め、そうでない場合には処理をステップS135に進める。
【0079】
ステップS132では、必要量特定部21は、直近に実行されたステップS11では、その前に実行されたステップS11よりも対象量を増やしたか否かを判定する。必要量特定部21は、増やした場合には処理をステップS133に進め、そうでない場合には処理をステップS134に進める。
ステップS133では、必要量特定部21は、直近に実行されたステップS12での結果精度が、その前に実行されたステップS12での結果精度よりも高いか否かを判定する。必要量特定部21は、高い場合には対象量を増加させ、そうでない場合には対象量を減少させる。
ステップS134では、必要量特定部21は、直近に実行されたステップS12での結果精度が、その前に実行されたステップS12での結果精度よりも高いか否かを判定する。必要量特定部21は、高い場合には対象量を減少させ、そうでない場合には対象量を増加させる。
【0080】
ステップS135では、必要量特定部21は、直近に実行されたステップS11では、その前に実行されたステップS11よりも対象量を増やしたか否かを判定する。必要量特定部21は、増やした場合には処理をステップS136に進め、そうでない場合には処理をステップS137に進める。
ステップS136では、必要量特定部21は、直近に実行されたステップS12での結果精度が、その前に実行されたステップS12での結果精度よりも高いか否かを判定する。必要量特定部21は、高い場合には対象量を減少させ、そうでない場合には対象量を増加させる。
ステップS137では、必要量特定部21は、直近に実行されたステップS12での結果精度が、その前に実行されたステップS12での結果精度よりも高いか否かを判定する。必要量特定部21は、高い場合には対象量を増加させ、そうでない場合には対象量を減少させる。
【0081】
<変形例5>
実施の形態1では、データ格納装置10の各部の機能がソフトウェアで実現された。しかし、変形例5として、データ格納装置10の各部の機能はハードウェアで実現されてもよい。この変形例5について、実施の形態1と異なる点を説明する。
【0082】
図14を参照して、変形例5に係るデータ格納装置10の構成を説明する。
各部の機能がハードウェアで実現される場合、データ格納装置10は、プロセッサ11と記憶装置12とに代えて、処理回路15を備える。処理回路15は、データ格納装置10の各部の機能及び記憶装置12の機能を実現する専用の電子回路である。
【0083】
処理回路15は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)が想定される。
各部の機能を1つの処理回路15で実現してもよいし、各部の機能を複数の処理回路15に分散させて実現してもよい。
【0084】
<変形例6>
変形例6として、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。つまり、データ格納装置10の各部のうち、一部の機能がハードウェアで実現され、他の機能がソフトウェアで実現されてもよい。
【0085】
プロセッサ11と記憶装置12と処理回路15とを、総称して「プロセッシングサーキットリー」という。つまり、各部の機能は、プロセッシングサーキットリーにより実現される。