(57)【要約】【課題】異常性判定の精度を向上させる。【解決手段】本発明の一態様としての決定木変更方法は、ｎ次元の属性値と１次元のクラスとを持つデータの集合である多次元時系列データから生成された１以上の属性からクラスを予測する決定木に各前記データを入力し、前記決定木の葉ごとに、前記葉に分類されるデータ群を用いてクラスの度数分布を表す度数分布情報を生成し、前記度数分布情報に基づき１つ以上のクラスを選択し、選択した前記クラスによって、前記決定木の対応する葉のクラスを更新する。【選択図】図１
2007164346.tif 000002
【特許請求の範囲】
【請求項１】
ｎ次元の属性値と１次元のクラスとを持つデータの集合である多次元時系列データから生成された１以上の属性からクラスを予測する決定木に各前記データを入力し、
前記決定木の葉ごとに、前記葉に分類されるデータ群を用いてクラスの度数分布を表す度数分布情報を生成し、
前記度数分布情報に基づき１つ以上のクラスを選択し、
選択した前記クラスによって、前記度数分布情報に対応する前記決定木の葉のクラスを更新する、
決定木変更方法。
【請求項２】
前記度数分布情報において度数が閾値を満たすクラスを選択することを特徴とする請求項１に記載の決定木変更方法。
【請求項３】
前記度数分布情報において度数の多いものから順番にクラスを選択し、
全てのクラスの度数の和に対する選択したクラスの度数の和の割合が閾値を満たしたら選択を終了する、
ことを特徴とする請求項１に記載の決定木変更方法。
【請求項４】
前記度数分布情報において度数の多いものから順番にクラスを選択し、
選択したクラスの度数の和と、全てのクラスの度数の和と、信頼度とに基づき、前記葉に分類される母集団の分布を推定し、
推定された前記母集団の分布において、選択されたクラスの分布が閾値を満たしたら選択を終了する、
ことを特徴とする請求項１に記載の決定木変更方法。
【請求項５】
ｎ次元の属性値を持つデータの集合である第１の多次元時系列データをクラスタリングし、
各クラスタにそれぞれクラスを割り当て、
前記クラスタ毎に、ある１つの属性の値を他の属性を用いて予測するモデルを作成し、
前記第１の多次元時系列データにおける個々のデータに、それぞれが属するクラスタのクラスを割り当て、
クラスが割り当てられた第１の多次元時系列データを用いて、前記他の属性からクラスを予測する決定木を生成し、
生成された前記決定木を請求項１ないし４のいずれかの方法によって変更し、
次に、
ｎ次元の属性値を持つデータの集合である第２の多次元時系列データにおいてテスト対象となるデータを、変更後の前記決定木に入力して、クラスを予測し、
予測したクラスに対応するモデルを選択し、選択したモデルに前記テスト対象となるデータにおける前記他の属性の値を入力し、
前記テスト対象となるデータにおける前記ある１つの属性の値と、前記モデルの出力とから、前記テスト対象となるデータの異常性を判定する、
異常性判定方法。
【請求項６】
ｎ次元の属性値を持つデータの集合である第１の多次元時系列データをクラスタリングし、
各クラスタにそれぞれクラスを割り当て、
前記クラスタ毎に、ある１つの属性の値を他の属性を用いて予測するモデルを作成し、
前記第１の多次元時系列データにおける個々のデータに、それぞれが属するクラスタのクラスを割り当て、
前記データに割り当てられたクラスと、該データから所定の時刻範囲に含まれるデータに割り当てられたクラスとに基づいて、該データに割り当てるクラスを再決定し、再決定後のクラスによって該データのクラスを更新し、
更新後のクラスが割り当てられた第１の多次元時系列データを用いて、前記他の属性からクラスを予測する決定木を生成し、
ｎ次元の属性値を持つデータの集合である第２の多次元時系列データにおいてテスト対象となるデータを、生成された前記決定木に入力して、クラスを予測し、
予測したクラスに対応するモデルを選択し、選択したモデルに前記テスト対象となるデータにおける前記他の属性の値を入力し、
前記テスト対象となるデータにおける前記ある１つの属性の値と、前記モデルの出力とから、前記テスト対象となるデータの異常性を判定する、
異常性判定方法。
【請求項７】
生成された前記決定木を請求項１ないし４のいずれかの方法を用いて変更し、変更後の決定木を用いて前記クラスを予測することを特徴とする請求項６に記載の異常性判定方法。
【請求項８】
ｎ次元の属性値を持つデータの集合である第１の多次元時系列データをクラスタリングし、
前記クラスタ毎に、ある１つの属性の値を他の属性を用いて予測するモデルを作成し、
個々の前記モデルにおいて前記他の属性の変動許容範囲を決定し、
ｎ次元の属性値を持つデータの集合である第２の多次元時系列データにおいてテスト対象となるデータにおける前記他の属性が前記変動許容範囲に含まれるモデルを選択し、
選択したモデルに、前記テスト対象となるデータにおける前記他の属性の値を入力し、
前記テスト対象となるデータにおける前記ある１つの属性の値と、前記モデルの出力とから、前記テスト対象となるデータの異常性を判定する、
異常性判定方法。
【請求項９】
ｎ次元の属性値を持つデータの集合である第１の多次元時系列データをクラスタリングし、
各クラスタにそれぞれクラスを割り当て、
前記クラスタ毎に、ある１つの属性の値を他の属性を用いて予測するモデルを作成し、
前記第１の多次元時系列データにおける個々のデータに、それぞれが属するクラスタのクラスを割り当て、
クラスが割り当てられた第１の多次元時系列データを用いて、前記他の属性からクラスを予測する決定木を生成し、
生成された前記決定木を請求項１ないし４のいずれかの方法によって変更し、
次に、
ｎ次元の属性値を持つデータの集合である第２の多次元時系列データにおいてテスト対象となるデータを、変更後の前記決定木に入力して、クラスを予測し、
一方、個々の前記モデルにおいて前記他の属性の変動許容範囲を決定し、
前記テスト対象となるデータにおける前記他の属性が前記変動許容範囲に含まれるモデルを選択し、
選択したモデルと、予測された前記クラスに対応するモデルとで共通するモデルを選出し、
選出したモデルに、前記テスト対象となるデータにおける前記他の属性の値を入力し、
前記テスト対象となるデータにおける前記ある１つの属性の値と、前記モデルの出力とから、前記テスト対象となるデータの異常性を判定する、
異常性判定方法。
【請求項１０】
ｎ次元の属性値を持つデータの集合である第１の多次元時系列データをクラスタリングし、
各クラスタにそれぞれクラスを割り当て、
前記クラスタ毎に、ある１つの属性の値を他の属性を用いて予測するモデルを作成し、
前記第１の多次元時系列データにおける個々のデータに、それぞれが属するクラスタのクラスを割り当て、
前記データに割り当てられたクラスと、該データから所定の時刻範囲に含まれるデータに割り当てられたクラスとに基づいて、該データに割り当てるクラスを再決定し、再決定後のクラスによって該データのクラスを更新し、
更新後のクラスが割り当てられた第１の多次元時系列データを用いて、前記他の属性からクラスを予測する決定木を生成し、
ｎ次元の属性値を持つデータの集合である第２の多次元時系列データにおいてテスト対象となるデータを、生成された前記決定木に入力して、クラスを予測し、
一方、個々の前記モデルにおいて前記他の属性の変動許容範囲を決定し、
前記テスト対象となるデータにおける前記他の属性が前記変動許容範囲に含まれるモデルを選択し、
選択したモデルと、予測された前記クラスに対応するモデルとで共通するモデルを選出し、
選出したモデルに、前記テスト対象となるデータにおける前記他の属性の値を入力し、
前記テスト対象となるデータにおける前記ある１つの属性の値と、前記モデルの出力とから、前記テスト対象となるデータの異常性を判定する、
異常性判定方法。
【請求項１１】
生成された前記決定木を請求項１ないし４のいずれかの方法を用いて変更し、変更後の決定木を用いて前記クラスを予測することを特徴とする請求項１０に記載の異常性判定方法。
【請求項１２】
前記テスト対象となるデータの異常性を判定するために選択または選出されたモデルが複数存在する場合、少なくともいずれかのモデルが正常の判定を下した場合は、前記テスト対象となるデータは正常であると判断し、一方、全てのモデルが異常の判定を下した場合は前記テスト対象となるデータは異常であると判断することを特徴とする請求項５ないし１１のいずれかに記載の異常性判定方法。
【請求項１３】
ある時刻における前記テスト対象となるデータの異常性を判定するために選択または選出されたモデルと、前記ある時刻よりｍ時刻前までの各時刻について選択または選出されたモデルと、の論理和をとったモデルを、前記ある時刻における前記テスト対象となるデータの異常性を判定するために用いることを特徴とする、請求項５ないし１２のいずれかに記載の異常性判定方法。
【請求項１４】
ある時刻における前記テスト対象となるデータの異常性を判定するために選択または選出されたモデルと、前記ある時刻よりｍ時刻前までの各時刻について選択または選出されたモデルのうち正常の判定を下したモデルと、の論理和をとったモデルを、前記ある時刻における前記テスト対象となるデータの異常性を判定するために用いることを特徴とする、請求項５ないし１２のいずれかに記載の異常性判定方法。
【請求項１５】
請求項１ないし４のいずれか一項に記載の各段階をコンピュータに実行させるためのプログラム。
【請求項１６】
請求項５ないし１４のいずれか一項に記載の各段階をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、決定木変更方法、異常性判定方法およびプログラムに関し、例えば多次元時系列データの異常性を判定する技術に関するものである。
【背景技術】
【０００２】
近年のプラントシステムの一部では，システムを構成する個々の装置に取り付けられたセンサの適正範囲を監視することでプラントの異常を発見するシステムが備えられている。これは，センサ値の取るべき適正な範囲をあらかじめ設定し，適正範囲を外れた際に異常警告を出すものである．センサ数の増大によって適正範囲設定の自動化が望まれている。
【０００３】
一般的な適正範囲は、例えば上限と下限とで与えられるが、これでは精度が今ひとつである。あるセンサ（以降、ターゲットセンサと呼ぶ）の適正範囲の設定は、関連して動く１つ以上の他のセンサ（以降、説明センサと呼ぶ）を利用することで精度良く決定できる。
【０００４】
より詳細には、まずターゲットセンサの値を説明センサの値を用いて予測するモデルを複数構築しておく。あるデータが異常であるか否かの判定を行う際には、複数のモデルの中から判定に用いるモデルを選択し、選択したモデルに判定すべきデータを入力する。選択したモデルから得られる予測値と実際のターゲットセンサの値とを比較することでデータに異常があるか否かの判定（異常性判定）を行う。予測値と実際の値とが大きく異なる場合は、その実際の値は異常値を示している可能性が高いといえる。
【０００５】
しかし、このような手法により異常性判定を行うにしても、予測時に用いるモデルの選択が適切でないと、正常なデータを異常と判定してしまう可能性がある。
【特許文献１】特開２００４−２９９２２公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、異常性判定の精度を向上可能にした、決定木変更方法、異常性判定方法およびプログラムを提供する。
【課題を解決するための手段】
【０００７】
本発明の一態様としての決定木変更方法は、ｎ次元の属性値と１次元のクラスとを持つデータの集合である多次元時系列データから生成された１以上の属性からクラスを予測する決定木に各前記データを入力し、前記決定木の葉ごとに、前記葉に分類されるデータ群を用いてクラスの度数分布を表す度数分布情報を生成し、前記度数分布情報に基づき１つ以上のクラスを選択し、選択した前記クラスによって、前記度数分布情報に対応する前記決定木の葉のクラスを更新する。
【０００８】
本発明の一態様としての異常性判定方法は、ｎ次元の属性値を持つデータの集合である第１の多次元時系列データをクラスタリングし、各クラスタにそれぞれクラスを割り当て、前記クラスタ毎に、ある１つの属性の値を他の属性を用いて予測するモデルを作成し、前記第１の多次元時系列データにおける個々のデータに、それぞれが属するクラスタのクラスを割り当て、クラスが割り当てられた第１の多次元時系列データを用いて、前記他の属性からクラスを予測する決定木を生成し、生成された前記決定木を上記決定木変更方法によって変更し、次に、ｎ次元の属性値を持つデータの集合である第２の多次元時系列データにおいてテスト対象となるデータを、変更後の前記決定木に入力して、クラスを予測し、予測したクラスに対応するモデルを選択し、選択したモデルに前記テスト対象となるデータにおける前記他の属性の値を入力し、前記テスト対象となるデータにおける前記ある１つの属性の値と、前記モデルの出力とから、前記テスト対象となるデータの異常性を判定する。
【０００９】
本発明の一態様としての異常性判定方法は、ｎ次元の属性値を持つデータの集合である第１の多次元時系列データをクラスタリングし、各クラスタにそれぞれクラスを割り当て、前記クラスタ毎に、ある１つの属性の値を他の属性を用いて予測するモデルを作成し、前記第１の多次元時系列データにおける個々のデータに、それぞれが属するクラスタのクラスを割り当て、前記データに割り当てられたクラスと、該データから所定の時刻範囲に含まれるデータに割り当てられたクラスとに基づいて、該データに割り当てるクラスを再決定し、再決定後のクラスによって該データのクラスを更新し、更新後のクラスが割り当てられた第１の多次元時系列データを用いて、前記他の属性からクラスを予測する決定木を生成し、ｎ次元の属性値を持つデータの集合である第２の多次元時系列データにおいてテスト対象となるデータを、生成された前記決定木に入力して、クラスを予測し、予測したクラスに対応するモデルを選択し、選択したモデルに前記テスト対象となるデータにおける前記他の属性の値を入力し、前記テスト対象となるデータにおける前記ある１つの属性の値と、前記モデルの出力とから、前記テスト対象となるデータの異常性を判定する。
【００１０】
本発明の一態様としての異常性判定方法は、ｎ次元の属性値を持つデータの集合である第１の多次元時系列データをクラスタリングし、前記クラスタ毎に、ある１つの属性の値を他の属性を用いて予測するモデルを作成し、個々の前記モデルにおいて前記他の属性の変動許容範囲を決定し、ｎ次元の属性値を持つデータの集合である第２の多次元時系列データにおいてテスト対象となるデータにおける前記他の属性が前記変動許容範囲に含まれるモデルを選択し、選択したモデルに、前記テスト対象となるデータにおける前記他の属性の値を入力し、前記テスト対象となるデータにおける前記ある１つの属性の値と、前記モデルの出力とから、前記テスト対象となるデータの異常性を判定する。
【００１１】
本発明の一態様としての異常性判定方法は、ｎ次元の属性値を持つデータの集合である第１の多次元時系列データをクラスタリングし、各クラスタにそれぞれクラスを割り当て、前記クラスタ毎に、ある１つの属性の値を他の属性を用いて予測するモデルを作成し、前記第１の多次元時系列データにおける個々のデータに、それぞれが属するクラスタのクラスを割り当て、クラスが割り当てられた第１の多次元時系列データを用いて、前記他の属性からクラスを予測する決定木を生成し、生成された前記決定木を上記決定木変更方法によって変更し、次に、ｎ次元の属性値を持つデータの集合である第２の多次元時系列データにおいてテスト対象となるデータを、変更後の前記決定木に入力して、クラスを予測し、一方、個々の前記モデルにおいて前記他の属性の変動許容範囲を決定し、前記テスト対象となるデータにおける前記他の属性が前記変動許容範囲に含まれるモデルを選択し、選択したモデルと、予測された前記クラスに対応するモデルとで共通するモデルを選出し、選出したモデルに、前記テスト対象となるデータにおける前記他の属性の値を入力し、前記テスト対象となるデータにおける前記ある１つの属性の値と、前記モデルの出力とから、前記テスト対象となるデータの異常性を判定する。
【００１２】
本発明の一態様としての異常性判定方法は、ｎ次元の属性値を持つデータの集合である第１の多次元時系列データをクラスタリングし、各クラスタにそれぞれクラスを割り当て、前記クラスタ毎に、ある１つの属性の値を他の属性を用いて予測するモデルを作成し、前記第１の多次元時系列データにおける個々のデータに、それぞれが属するクラスタのクラスを割り当て、前記データに割り当てられたクラスと、該データから所定の時刻範囲に含まれるデータに割り当てられたクラスとに基づいて、該データに割り当てるクラスを再決定し、再決定後のクラスによって該データのクラスを更新し、更新後のクラスが割り当てられた第１の多次元時系列データを用いて、前記他の属性からクラスを予測する決定木を生成し、ｎ次元の属性値を持つデータの集合である第２の多次元時系列データにおいてテスト対象となるデータを、生成された前記決定木に入力して、クラスを予測し、一方、個々の前記モデルにおいて前記他の属性の変動許容範囲を決定し、前記テスト対象となるデータにおける前記他の属性が前記変動許容範囲に含まれるモデルを選択し、選択したモデルと、予測された前記クラスに対応するモデルとで共通するモデルを選出し、選出したモデルに、前記テスト対象となるデータにおける前記他の属性の値を入力し、前記テスト対象となるデータにおける前記ある１つの属性の値と、前記モデルの出力とから、前記テスト対象となるデータの異常性を判定する。
【００１３】
本発明の一態様としてのプログラムは、上記決定木変更方法に記載の各段階をコンピュータに実行させることを特徴とする。
【００１４】
本発明の一態様としてのプログラムは、上記異常性判定方法に記載の各段階をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、複数のモデルを用いて異常性判定を行う際に利用するモデルを柔軟に決めることができ、異常性判定の精度を向上させることができる。
【発明を実施するための最良の形態】
【００１６】
本件出願人の先願として、本件出願時において未公開の特願２００５−１７６７００号がある。以下、本発明者が本発明をなすに至った経緯についてこの先願を用いつつ説明する。
【００１７】
図２は、発電所のセンサ群において、ターゲットセンサをポンプ圧力、説明センサを発電出力とし、説明センサの値からターゲットセンサの値を予測するモデルを生成した例である。図中、「一般的な管理値」は背景技術の欄で述べた上限値および下限値に相当するものである。このような予測モデルは、過去に収集されたセンサの時系列データ（訓練データ）を用いることで作成でき、具体的な作成方法の一例が先願に記載されている。
【００１８】
ここで異常発見に際し、説明センサの値が決まるとターゲットセンサの値が一意に決まるモデルが作成できることが望ましい。しかし、一般にはプラントは複数の運転モードを持つ場合があるため、一意に決まるとは言えない。図２には２つの運転状態（稼働状態と非稼働状態）のそれぞれに対応したモデルが示される。１つの発電所においてポンプが複数台存在し、同じ発電出力でもこれらのポンプが稼働している場合としていない場合とがある。稼動している場合は発電出力の上昇に伴ってモデルＢ，Ｃという圧力値の推移をたどり、稼動していない場合はモデルＡという一定の小さな値をとる。したがって、現在の運転モードが推定できなければ、どのモデルを用いて異常発見を行えばよいか不明である。運転モードを示すセンサ値が存在すればその値を用いてモデルを決定すればよいが、このようなセンサ値が常に与えられているとは限らない。
【００１９】
先願の手法では、複数のモデルを作成するのと同時に、モデルの選択を行う分類器を生成することで問題の解決を図っている。同手法では、モデル生成時に訓練データをクラスタリングしており、訓練データにおける各時刻のデータはいずれかのモデルに対応するクラスタに属する。この情報を各時刻のデータにクラスとして割り当てる。図３はクラスが割り当てられた訓練データの例である。続いて、ターゲットセンサ（この例ではＸ１）を除いたセンサを用いて、クラスを予測する決定木を生成する。図４に生成された決定木の例を示す。図５に示されたテスト対象となる多次元時系列データ（以降、テストデータと呼ぶ）のＸ１系列（ポンプ圧力）の異常値を発見する際には、まず、図４の決定木を用いて各時刻のデータに適用するモデルを選択し、次いで、選択されたモデルを用いて異常性の有無を判定する。
【００２０】
この方法では、モデル選択決定木の精度が悪いときに問題が生じる。図６はモデル選択決定木により、訓練データにおける各時刻のデータのクラスを予測した結果の例である。葉に付加された［ｎａ、ｎｂ、ｎｃ］は、それぞれの葉に分類されたデータ群が実際に持っていたクラスの分布である。ｎａはクラスＡの個数、ｎｂはクラスＢの個数、ｎｃはクラスＣの個数を表す。例えば、葉Ｌ１には１００２時刻分のデータが当てはまり、そのうちクラスＡをとるものが１０００時刻分あり、クラスＣをとるものが２時刻分あったことを示している。仮に、図５のテストデータにおいて時刻Ｐのデータが図６のＬ１の葉に分類されたとすると、そのデータが元々クラスＡに属すべきものならば正しいモデルＡで異常性判定が行われることになる。しかし、元々クラスＣに属していたとするとモデルＡで判定するのは誤りである。すなわち、正常であったはずのデータが異常と判定される可能性がある。
【００２１】
このように、先願の手法では、複数のモデルを用いて異常性判定を行った場合、モデルの選択が正しく行われず正常なデータを異常と判定してしまう可能性があった。
【００２２】
本発明者はこのような問題点を解決すべく多くの努力を重ねた結果本発明をなすに至った。以下に本発明の実施形態を述べるが、その特徴の１つは、複数のモデルを用いて異常発見を行う際に、ある１つのモデルを使う妥当性が高ければ、そのモデルを用いて異常性判定を行い、そうでなければ２以上のモデルを用いて異常性判定を行うというものである。これにより、背景技術で述べた一般的な管理値を使った異常発見手法より精度が高く、また、先願を使った方法よりも誤判定の少ない異常値判定方法を提供することができる。以下、第１〜第３の実施形態では、異常性判定に用いるべきモデルを選択する決定木の生成方法（より詳細には、先願の手法により生成された決定木の変更方法）について説明し、第４以降の実施形態においては、異常性判定の詳細について説明する。
【００２３】
（第１の実施形態）
図１は、第１の実施形態に係わる決定木の変更方法を説明するフローチャートである。
【００２４】
まず、訓練データ（第１の多次元時系列データ）（図３参照）から生成された決定木に当該訓練データを適用し、後述するクラス分布表（図７参照）を生成する（Ｓ１１）。
【００２５】
次いで、ユーザから閾値が入力される（Ｓ１２）。
【００２６】
次いで、クラス分布表の各葉について以下の処理を行う。
【００２７】
まず、クラス分布表から葉のラベルを消去する（Ｓ１３）。次いで、各葉について、クラス分布表に含まれる、クラスの度数分布表から、値が閾値より大きいクラスの全てを葉のラベルとしてクラス分布表に追加し、追加された葉のラベルによって決定木の対応する葉のラベルを更新する（Ｓ１４）。
【００２８】
以下に詳細例を示す。
【００２９】
図６の決定木の葉には図３の訓練データを属性Ｘ２からＸｎまで用いて分類した結果が付されている。この分類結果から図７に示すクラス分布表を作成する。クラス分布表は、葉の名前と、葉に割り当てられたクラスを示す葉のラベル、および、各葉（Ｌ１〜Ｌ３）に分類されたデータのクラス分布を表す度数分布表とを含む。１つの葉に分類されたデータのクラス分布は度数分布情報に対応する。
【００３０】
ここで、各葉について度数分布表を参照しながら葉のラベルの更新を行う。まず、ユーザが閾値を設定する。ここでは０に設定されたものとする。次いでクラス分布表における葉のラベルをいったん全て消去する。すなわち、葉Ｌ１におけるラベルＡ、葉Ｌ２におけるラベルＢ、葉Ｌ３におけるラベルＣを消去する。次いで、１つの葉に着目し、クラスを１つ選択し、選択したクラスの度数が閾値より大きい場合はそのクラスを葉のラベルに追加することを繰り返す。これを全ての葉について行う。
【００３１】
葉Ｌ１においてはクラスＡ，Ｃの度数が０より大きいので新たな葉のラベルはＡ，Ｃとなる。同様に葉Ｌ２に関しては新たなラベルはＡ，Ｂ，葉Ｌ３に関してはＣとなる。更新後におけるクラス分布表の各葉のラベルによって図６における決定木の葉に付されたラベルを更新する。
【００３２】
なお、閾値は、全体の度数に対する割合としてもよい。仮にユーザが閾値を決定するための値として１％を設定したとする。この場合、葉Ｌ１では、閾値は（１０００＋２）×０．０１＝１．００２となり新しい葉のラベルはＡ、Ｃとなる。葉Ｌ２では閾値は（１０＋５００）×０．０１＝５．１となり新しい葉のラベルはＡ，Ｂとなる。葉Ｌ３では閾値は５×０．０１＝０．００５  となり新しい葉のラベルはＣとなる。
【００３３】
図８は、第１の実施形態に係わるデータ処理装置の構成を示す図である。
【００３４】
記憶装置１１は、ＣＰＵ１２が実行するプログラムと、訓練データと、訓練データから作成された決定木とを格納している。
【００３５】
ＣＰＵ１２は、記憶装置１１内のプログラムをメモリ１３にロードして実行する。以下、ＣＰＵ１２の処理の詳細を示す。
【００３６】
ＣＰＵ１２により決定木が記憶装置１１からメモリ１３に読み出される。
【００３７】
さらに、ＣＰＵ１２により、訓練データが順次メモリ１３に読み出され、訓練データに含まれる各時刻のデータをメモリ１３上の決定木に適用する。訓練データに含まれる各時刻のデータは、決定木におけるいずれかの葉に分類される。個々の葉ごとに、その葉に分類されたデータのクラスの度数をカウントする。
【００３８】
以上の結果に基づきクラス分布表を作成する。
【００３９】
作成したクラス分布表と、あらかじめユーザから与えられメモリ１３または記憶装置１１に格納された閾値とを用いて、個々の葉についてラベルの付け直しを行い、新しい決定木を生成する。
【００４０】
ＣＰＵ１２は新たな決定木を表示装置１４に出力する。
【００４１】
以上のように、本実施形態によれば、決定木の葉に複数のラベルを付加することにより適切でないモデルを選択する確率を低減できる。本実施形態で生成した決定木を用いた異常値判定は第４の実施形態以降において詳細に述べる。
【００４２】
（第２の実施形態）
図９は、第２の実施形態に係わる決定木の変更方法を説明するフローチャートである。
【００４３】
まず、第１の実施形態と同様に、訓練データを決定木に適用し、クラス分布表を生成する（Ｓ２１）。
【００４４】
次いでユーザから閾値が入力される（Ｓ２２）。クラス分布表の各葉において以下の処理を行う。
【００４５】
まず、葉のラベルを消去する（Ｓ２３）。次いで、度数分布表における値の大きいクラスから順にＳ２４の処理を行う。
【００４６】
Ｓ２４では現在のクラスを葉のラベルとして追加し、葉のラベルとして追加されたクラスの度数を合計し、閾値を超えていれば処理を終了する。閾値を超えていなければ、次に値の大きいクラスを選択し処理を継続する。
【００４７】
以下に、前述の図６および図７を用いて、詳細例を説明する。
【００４８】
まず、図７のクラス分布表を生成し、次いで、ユーザにより閾値として９９％が設定されたとする。次いで度数分布表における葉のラベルを消去する。次いで、クラスを度数の大きい順に取り出し葉のラベルとして追加する。葉のラベルとして追加されたクラスの度数のクラス全体の度数に対する割合が閾値を超えるまでこの処理を続ける。
【００４９】
葉Ｌ１においてはクラスＡが追加された時点で上記割合が閾値を超えるため（９９．８％）、葉のラベルはＡのみとなる。
【００５０】
葉Ｌ２に関してはクラスＢが追加されただけでは上記割合が閾値を超えないため（９８．０％）、さらにクラスＡが追加され、この時点で閾値を超えるため（１００％）、新たなラベルはＡ、Ｂとなる。
【００５１】
葉Ｌ３に関してはクラスＣのみしか存在しないためクラスＣを追加した時点で上記割合が１００％となるため葉のラベルはＣとなる。
【００５２】
更新後のクラス分布表における各葉のラベルによって図６における決定木の葉に付されたラベルを更新する。
【００５３】
以下、第１の実施形態で用いた図８に基づき、第２の実施形態に係わるデータ処理装置について説明する。
【００５４】
記憶装置１１は、ＣＰＵ１２が実行するプログラムと、訓練データと、訓練データから作成された決定木とを格納している。
【００５５】
ＣＰＵ１２は、記憶装置１１内のプログラムをメモリ１３にロードして実行する。以下、ＣＰＵ１２の処理の詳細を示す。
【００５６】
ＣＰＵ１２により決定木が記憶装置１１からメモリ１３に読み出される。
【００５７】
さらに、ＣＰＵ１２により、訓練データが順次メモリ１３に読み出され、訓練データに含まれる各時刻のデータをメモリ１３上の決定木に適用する。訓練データに含まれる各時刻のデータは、決定木におけるいずれかの葉に分類される。個々の葉ごとに、その葉に分類されたデータのクラスの度数をカウントする。
【００５８】
以上の結果に基づきクラス分布表を作成する。
【００５９】
作成したクラス分布表と、あらかじめユーザから与えられメモリ１３または記憶装置１１に格納された閾値とを用いて、個々の葉についてラベルの付け直しを行い、新しい決定木を生成する。
【００６０】
ＣＰＵ１２は新たな決定木を表示装置１４に出力する。
【００６１】
以上のように、本実施形態によれば、決定木の葉に複数のラベルを付加することにより適切でないモデルを選択する確率を低減できる。本実施形態で生成した決定木を用いた異常値判定は第４の実施形態以降において詳細に述べる。
【００６２】
（第３の実施形態）
図１０は、第３の実施形態に係わる決定木の変更方法を説明するフローチャートである。
【００６３】
まず、訓練データを決定木に適用し、クラス分布表を生成する（Ｓ３１）。
【００６４】
次いでユーザから信頼度ＣＦと閾値とが入力される（Ｓ３２）。
【００６５】
クラス分布表の各葉において以下の処理を行う。
【００６６】
まず、葉のラベルを消去する（Ｓ３３）。次いで、度数分布表の値の大きいクラスから順にＳ３４の処理を行う。
【００６７】
Ｓ３４では度数分布表における葉のラベルとして現在のクラスを追加する。ラベルとして追加されたクラスの度数を合計し、葉におけるクラス全体の度数Ｎから合計値を引く。この値を差ｅとする。ＣＦ、Ｎ、ｅから、母集団中に含まれる、葉のラベルのクラスのデータの割合ｐを推定する。これは、図１１に記述された式をｐについて解くことで計算できる。ｐが閾値を超えていれば処理を終了し、閾値を超えていなければ、次のクラスを選択して処理を継続する。すべてのクラスの選択後もｐが閾値を超えない場合はラベルに全てのクラスを与えて処理を終了する。
【００６８】
以下に前述した図６および図７を用いて詳細例を説明する。
【００６９】
まず、図７のクラス分布表を生成し、次いで、ユーザが信頼度ＣＦと閾値とを設定する。ここでは、信頼度ＣＦが０．２５、閾値が０．９９に設定されたとする。次いで度数分布表における葉のラベルを消去する。次いで、クラスを度数の大きい順に取り出し葉のラベルとして追加する。葉のラベルとして追加されたクラスの度数を合計し、葉におけるクラス全体の度数から合計値を引き、差ｅを求める。
【００７０】
葉Ｌ１では、クラス全体の度数はＮ＝１００２である。まず、度数が最も大きいクラスＡが選択され、この度数が１０００なので差ｅは２である。ＣＦ＝０．２５、ｅ＝２、Ｎ＝１００２を用いて、図１１の式より割合ｐを計算するとｐ＝０．９９６２となる。この値は閾値（０．９９）より大きいため、この時点で処理は終了し、この結果、葉のラベルはＡとなる。
【００７１】
葉Ｌ２では、Ｎ＝５１０である。まず、度数が最も大きいクラスＢが選択され、この度数は５００なので差ｅは１０となる。ＣＦ＝０．２５、ｅ＝１０、Ｎ＝５１０を用いて、図１１の式よりｐを計算するとｐ＝０．９７４１となる。この値は閾値（０．９９）を超えないため、処理が継続される。つぎにクラスＡが選択される。このときｅ＝０となる。ｐを計算するとｐ＝０．９９８６となり、この値は閾値を超えるため、この時点で処理は終了し、この結果、葉のラベルはＡ、Ｂとなる。
【００７２】
葉Ｌ３では、まず、クラスＣが選択される。Ｎ＝５であり、ｅ＝０である。ｐを計算すると０．７６７９なので処理が継続される。次にクラスＡが選択される。ｅ＝０である。ｐ＝０．７６７９となり処理が継続される。次にクラスＢが選択される。全てのクラスが選択されたため、この時点で処理は終了し、この結果、葉のラベルはＡ、Ｂ、Ｃとなる。
【００７３】
更新後のクラス分布表における各葉のラベルによって、図６における決定木の葉に付されたラベルを更新する。
【００７４】
以下、第１の実施形態で用いた図８に基づき、第３の実施形態に係わるデータ処理装置について説明する。
【００７５】
記憶装置１１は、ＣＰＵ１２が実行するプログラムと、訓練データと、訓練データから作成された決定木とを格納している。
【００７６】
ＣＰＵ１２は、記憶装置１１内のプログラムをメモリ１３にロードして実行する。以下、ＣＰＵ１２の処理の詳細を示す。
【００７７】
ＣＰＵ１２により決定木が記憶装置１１からメモリ１３に読み出される。
【００７８】
さらに、ＣＰＵ１２により、訓練データが順次メモリ１３に読み出され、訓練データに含まれる各時刻のデータをメモリ１３上の決定木に適用する。訓練データに含まれる各時刻のデータは、決定木におけるいずれかの葉に分類される。個々の葉ごとに、その葉に分類されたデータのクラスの度数をカウントする。
【００７９】
以上の結果に基づきクラス分布表を作成する。
【００８０】
作成したクラス分布表と、あらかじめユーザから与えられたメモリ１３または記憶装置１１に格納された信頼度ＣＦおよび閾値とを用いて、個々の葉についてラベルの付け直しを行い、新しい決定木を生成する。
【００８１】
ＣＰＵ１２は新たな決定木を表示装置１４に出力する。
【００８２】
以上のように、本実施形態によれば、決定木の葉に複数のラベルを付加することにより適切でないモデルを選択する確率を低減できる。本実施形態で生成した決定木を用いた異常値判定は第４の実施形態以降において詳細に述べる。
【００８３】
（第４の実施形態）
第４の実施形態は、テストデータ（第２の多次元時系列データ）の異常検出に関わるものである。図１２に示すｎ次元の属性を持つ訓練データを用いて、図１３に示すｎ次元の属性を持つテストデータからターゲットセンサの異常を発見したいものとする。ターゲットセンサはＸ１であるとする。
【００８４】
図１４は本実施形態に係わるテストデータの異常性判定方法を説明するフローチャートである。
【００８５】
まず、先願の手法を用いて訓練データをクラスタリングし、クラスタ毎に、説明センサの値からターゲットセンサの値を推測するモデルとモデルに対する訓練データの標準偏差σとを先願の方法または既知の手法により生成する（Ｓ４１）。そして、各クラスタにクラスを割り当てる（Ｓ４２）。
【００８６】
次に、訓練データにおける各時刻のデータに、それぞれが属するクラスタのクラスを割り当てる（Ｓ４３）。各時刻のデータにクラスを割り当てた後の訓練データの例を図１５に示す。
【００８７】
次に、訓練データのうちターゲットセンサＸ１を除いた属性を用いてクラスを予測する決定木を生成する（Ｓ４４）。
【００８８】
つづいて、この決定木を第１〜第３の実施形態のいずれかの方法を用いて変更し（Ｓ４５）、Ｓ４６に進む。
【００８９】
Ｓ４６では、図１３のテストデータにおいてＰ時刻のＸ１センサの異常性を判定する場合、Ｐ時刻における属性Ｘ２〜Ｘｎの値を、変更後の決定木に適用してクラス名、すなわち異常性判定に利用するモデル（単数または複数）を決定する。次いで、決定された個々のモデルに時刻Ｐにおける属性Ｘ２〜Ｘｎの値を入力して、モデルによるＸ１の予測値を求める。時刻ＰにおけるＸ１の値がモデルの標準偏差から求まる正常範囲（例えば±３σ、ここでσは標準偏差）であれば正常とみなし、そうでなければ異常とみなす。より詳細には、いずれか１つのモデルでも正常と判定されれば正常、全てのモデルで異常と判定されたならば異常とみなす。
【００９０】
以下に詳細例を示す。
【００９１】
図１６は、図１２に示す訓練データの属性Ｘ１の異常性を判定するために生成した、Ｘ２からＸ１を予測するモデルの例を示す。
【００９２】
Ｘ２が説明センサであり、Ａ，Ｂ，Ｃの３つのモデルが生成されている。モデルＡはＸ１＝１０、σ＝１である。モデルＢはＸ１＝Ｘ２×３＋１、σ＝１である。モデルＣはＸ１＝３０、σ＝２である。
【００９３】
モデルＡ、Ｂ、Ｃを生成する元となった訓練データ（図１２）にクラスを割り振る。ここでは、図１５のようにクラスが割り振られたとする。
【００９４】
この訓練データを用いて、Ｘ１を除く属性からクラスを予測する決定木を生成する。ここでは、図１７に示す、属性Ｘ３，Ｘ４からクラス（モデル）を予測する決定木が生成されたとする。
【００９５】
この決定木を第１〜第３の実施形態の方法により変更する。ここでは第１の実施形態の方法を用いるものとするが、第２または第３の実施形態の方法を用いてもよい。変更後の決定木の例を図１８に示す。
【００９６】
ここで、図１３のテストデータにおいて時刻Ｐの異常性判定を行う。
【００９７】
まず、図１８の決定木を用いて、利用すべきモデルを決定する。時刻ＰにおけるＸ３は２０、Ｘ４は１であり、したがって図１８の決定木から、利用すべきモデルは葉Ｌ２に割り振られたモデルＡ、Ｂと決定される。
【００９８】
次に、それぞれのモデルＡ、Ｂにより異常性判定を行う。
【００９９】
モデルＡでは、図１６に示す通り、Ｘ１＝１０、σ＝１である。正常範囲を±３σとすると、正常範囲は７〜１３となる。時刻ＰにおけるＸ１は１７なので、モデルＡからは、時刻Ｐにおけるターゲットセンサの値は異常と判定される。
【０１００】
続いてモデルＢで判定する。時刻ＰにおけるＸ２は５なので、モデルＢによる予測値は５×３＋１＝１６となる。σ＝１なので正常範囲を±３σとすると、正常範囲は１３〜１９となる。時刻ＰにおけるＸ１は１７なので、モデルＢからは、時刻Ｐにおけるターゲットセンサの値は正常と判定される。
【０１０１】
２つのモデルのうちの一方のモデルで正常と判定されたので、時刻ＰにおけるＸ１は最終的に正常と判定される。
【０１０２】
図１９は、第４の実施形態に係わるデータ処理装置の構成を示す図である。
【０１０３】
記憶装置２１は、ＣＰＵ２２が実行するプログラムと、訓練データとを格納している。
【０１０４】
ＣＰＵ２２は、記憶装置２１内のプログラムをメモリ２３にロードして実行する。以下、ＣＰＵ２２の処理の詳細を示す。
【０１０５】
訓練データが記憶装置２１からメモリ２３に読み出され、ＣＰＵ２２によって１つ以上のクラスタに分割される。
【０１０６】
個々のクラスタごとに、ある一つの属性の値を、他の属性の値から予測するモデルがＣＰＵ２２によって生成される。
【０１０７】
訓練データにおける個々の時刻のデータが属するクラスタを示すクラスがＣＰＵ２２によって訓練データに割り当てられる。
【０１０８】
クラスが割り当てられた訓練データを用いて、上記他の属性から、利用すべきクラス（モデル）を推測する決定木がＣＰＵ２２によって生成される。
【０１０９】
この決定木における葉のラベルが、ＣＰＵ２２により、第１〜第３の実施形態のいずれかの方法によって変更される。
【０１１０】
インターフェース２５経由で、テストデータの１時刻分がメモリ２３上にロードされる。
【０１１１】
ＣＰＵ２２により、このテストデータが決定木に適用され、異常性判定に用いるモデルが１つ以上選択される。
【０１１２】
選択されたモデルを用いて、１時刻分のテストデータにおける上記他の属性の値から、上記ある一つの属性を予測する。そして、予測値と、テストデータにおける上記ある１つの属性の値との乖離から異常性判定が行われる。
【０１１３】
ＣＰＵ２２は、すべてのモデルで異常が検出された場合は、上記１時刻分のテストデータは異常であると判定し、１つでも正常と判定したモデルが存在した場合は、正常と判定する。
【０１１４】
ＣＰＵ２２は、判定の結果を表示装置２４に表示する。
【０１１５】
以上のように、本実施形態により、テストデータの異常発見において、モデルを１つしか利用しないことで誤って異常と判定してしまう可能性を低くすることができる。
【０１１６】
（第５の実施形態）
図２０は本実施形態に係わるテストデータの異常性判定方法を説明するフローチャートである。
【０１１７】
このフローチャートは、第４の実施形態で用いた図１４におけるＳ４３とＳ４４との間に、クラス割り当て変更処理Ｓ４３−１が入り、Ｓ４５の決定木の変更処理を除いたものである。ただし、Ｓ４５を除かずに処理を行うことも可能である。Ｓ４３−１では、ある時刻について訓練データの前後ｎステップ（所定の時刻範囲）のクラスの個数を集計する。集計値が最も大きいクラスをその時刻のクラスとする。以下に詳細例を示す。
【０１１８】
図２１の左側は、図２０に示すＳ４３の直後における訓練データである。ここで、各時刻について前後ｎステップのクラスの個数を集計する。ｎ＝１として、クラスの個数を集計した表を図２１の中央に示す。例えば、時刻３では、１つ前の時刻２のクラスはＡ、自身のクラスはＢ、１つ先の時刻４のクラスはＡであるため、（Ａ、Ｂ、Ｃ）＝（２、１、０）となる。クラスの個数を集計する際、現在時刻に近いデータの重みを高くしても良い。
【０１１９】
図２１の右側は、中央に示した集計表から決定した最終的なクラスである。例えば時刻３では、（Ａ、Ｂ、Ｃ）＝（２、１、０）から、クラスＡの個数が最も多いため、時刻３のクラスはＡとされる。本実施形態では、変更後のクラスを利用して、異常性判定に用いるモデルの選択を行う決定木を生成する。
【０１２０】
本実施形態では以上のようにして、訓練データに付されたクラスの書き換えを行うがこれについてさらに説明すると以下の通りである。
【０１２１】
プラント等のセンサデータが図２に示したような挙動を示すのは、プラントが複数の運転モードを持つ場合があるためであるが、運転モードが頻繁に切り替わることは少なく、同じモードが続くことが多い。図２１における時刻３のデータは、Ｓ４３の処理ではＢというクラスが割り当てられているが、これは時系列的連続性を考えるとＡである可能性が高い。従ってここでは時刻３のクラスをＢからＡに書き換える。
【０１２２】
以下、第４の実施形態で用いた図１９に基づき、第５の実施形態に係わるデータ処理装置について説明する。
【０１２３】
記憶装置２１は、ＣＰＵ２２が実行するプログラムと、訓練データとを格納している。
【０１２４】
ＣＰＵ２２は、記憶装置２１内のプログラムをメモリ２３にロードして実行する。以下、ＣＰＵ２２の処理の詳細を示す。
【０１２５】
訓練データが記憶装置２１からメモリ２３に読み出され、ＣＰＵ２２によって１つ以上のクラスタに分割される。
【０１２６】
個々のクラスタごとに、ある一つの属性の値を、他の属性の値から予測するモデルがＣＰＵ２２によって生成される。
【０１２７】
訓練データにおける個々の時刻のデータが属するクラスタを示すクラスがＣＰＵ２２によって訓練データに割り当てられる。
【０１２８】
このクラスが、前後の時刻におけるクラスの内容に応じてＣＰＵによって書き換えられる。
【０１２９】
書き換え後の訓練データを用いて、上記他の属性から、利用すべきクラス（モデル）を推測する決定木がＣＰＵ２２によって生成される。
【０１３０】
インターフェース２５経由で、テストデータの１時刻分がメモリ２３上にロードされる。
【０１３１】
ＣＰＵ２２により、このテストデータが決定木に適用され、異常性判定に用いるモデルが１つ以上選択される。
【０１３２】
選択されたモデルを用いて、１時刻分のテストデータにおける上記他の属性の値から、上記ある一つの属性を予測する。そして、予測値と、テストデータにおける上記ある１つの属性の値との乖離から異常性判定が行われる。
【０１３３】
ＣＰＵ２２は、すべてのモデルで異常が検出された場合は、上記１時刻分のテストデータは異常であると判定し、１つでも正常と判定したモデルが存在した場合は、正常と判定する。
【０１３４】
ＣＰＵ２２は、判定の結果を表示装置２４に表示する。
【０１３５】
以上のように、本実施形態により、テストデータの異常発見において、訓練データに付されたクラスの時系列性を考慮することで、異常発見に利用するモデルを選択する決定木の精度を向上させることができる。また、この効果に加え、モデルを一つしか利用しないことで誤って異常と判定してしまう可能性を低くすることができる。
【０１３６】
（第６の実施形態）
図２２は本実施形態に係わるテストデータの異常性判定方法を説明するフローチャートである。
【０１３７】
まず、先願の手法を用いて訓練データ（図１２参照）をクラスタリングしクラスタ毎にモデルを生成する（Ｓ５１）。
【０１３８】
つづいて、モデル毎にモデルを構成する説明変数（説明センサ）が変動を許容される範囲を計算する（Ｓ５２）。
【０１３９】
つづいて、テストデータのＰ時刻におけるＸ１の異常性判定を行うとする。まず、モデルを１つ選び、選んだモデルの説明センサ（Ｘ２とする）が変動を許容される範囲に、時刻ＰのＸ２が入っているかを調べる。入っているならばそのモデルで異常性判定を行う。この処理を全てのモデルについて行う。
【０１４０】
以下に詳細例を示す。
【０１４１】
図２２のＳ５１において、図２３に示すようなモデルが生成されたとする。
【０１４２】
次に、Ｓ５２において、説明変数（Ｘ２）の変動許容範囲を求める。ここでは、モデルに対応するクラスタの説明変数の変動範囲を利用する。よって、モデルＡに関しては３以上１６以下、モデルＢに関しては１以上１０以下、モデルＣに関しては１１以上２２以下が変動許容範囲となる。
【０１４３】
次に、Ｓ５３において、テストデータにおける時刻Ｐの異常性判定を行う。この時、時刻ＰにおけるＸ２が３ならば、３を変動許容範囲に持つモデルＡ、Ｂが異常性判定に用いるモデルとして選択される。Ｘ２が１３ならば、モデルＡ、Ｃが選択される。
【０１４４】
なお、全てのモデルの変動許容範囲にＸ２が入らなかった場合は、Ｘ２と距離が近い変動範囲を持つモデルを、ユーザにより指定された個数、利用する方法が考えられる。また、モデル毎の変動許容範囲は、クラスタに含まれる点の平均と分散とから決定してもよい。
【０１４５】
以下、第４の実施形態で用いた図１９に基づき、第６の実施形態に係わるデータ処理装置について説明する。
【０１４６】
記憶装置２１は、ＣＰＵ２２が実行するプログラムと、訓練データとを格納している。
【０１４７】
ＣＰＵ２２は、記憶装置２１内のプログラムをメモリ２３にロードして実行する。以下、ＣＰＵ２２の処理の詳細を示す。
【０１４８】
訓練データが記憶装置２１からメモリ２３に読み出され、ＣＰＵ２２によって１つ以上のクラスタに分割される。
【０１４９】
個々のクラスタごとに、ある一つの属性の値を、他の属性の値から予測するモデルがＣＰＵ２２によって生成される。
【０１５０】
ＣＰＵ２２によって、モデルごとに、そのモデルを構成する属性の変動許容範囲が計算される。
【０１５１】
インターフェース２５経由で、テストデータの１時刻分がメモリ２３上にロードされる。
【０１５２】
ＣＰＵ２２により、個々のモデルの変動許容範囲に、このテストデータにおける他の属性の値が含まれるか否かが判定される。入る場合、そのモデルは異常性判定に用いられるものとして選択される。
【０１５３】
ＣＰＵ２２は、すべてのモデルで異常と判定されたときは、１時刻分のテストデータは異常と判定し、正常と判定したモデルが１つでも存在した場合は正常と判定する。
【０１５４】
ＣＰＵ２２は、判定の結果を表示装置２４に表示する。
【０１５５】
以上のように、本実施形態により、テストデータの異常発見において、テストデータにおける属性値の変動許容範囲を考慮することで、異常発見に利用するモデルを選択する精度を向上させることができる。
【０１５６】
（第７の実施形態）
第７の実施形態では、第４または第５の実施形態の方法と、第６の実施形態の方法とを用いてそれぞれから異常性判定を行うためのモデルを選び、両方の方法から選ばれたモデルから、最終的なモデルを選択して異常性判定を行う。例えば、両方の方法から選ばれたモデルのアンド（ＡＮＤ）をとったものを最終的なモデルとする。ＡＮＤが空集合なら例えば第６の実施形態で選択したモデルを利用する。
【０１５７】
仮に、第４または第５の実施形態で求まったモデルがＡ、Ｂ、Ｃで、第６の実施形態で求まったモデルがＡ、Ｃであったとすると、両方のＡＮＤをとったモデルＡ、Ｃを最終的なモデルとして採用する。これは、例えば、図２３のモデルにより異常性判定を行いたいデータのＸ２が１３であったとすると、１３を変動許容範囲に持たないモデルＢを使うのは適切でない可能性があるためである。
【０１５８】
また、第４または第５の実施形態で求まったモデルがＡで、第６の実施形態で求まったモデルがＡ、Ｃであったとすると、両方のＡＮＤをとったモデルＡを最終的なモデルとして採用する。これは、第４または第５の実施形態のモデル選択でクラス（運転モード）がＡであるという確信が高いため、モデルＣを外すのが妥当だと考えられるからである。
【０１５９】
以下、第４の実施形態で用いた図１９に基づき、第７の実施形態に係わるデータ処理装置について説明する。
【０１６０】
記憶装置２１は、ＣＰＵ２２が実行するプログラムと、訓練データとを格納している。
【０１６１】
ＣＰＵ２２は、記憶装置２１内のプログラムをメモリ２３にロードして実行する。以下、ＣＰＵ２２の処理の詳細を示す。
【０１６２】
訓練データが記憶装置２１からメモリ２３に読み出され、ＣＰＵ２２によって１つ以上のクラスタに分割される。
【０１６３】
個々のクラスタごとに、ある一つの属性の値を、他の属性の値から予測するモデルがＣＰＵ２２によって生成される。
【０１６４】
ＣＰＵ２２によって、モデルごとに、そのモデルを構成する属性の変動許容範囲が計算される。
【０１６５】
インターフェース２５経由で、テストデータの１時刻分がメモリ２３上にロードされる。
【０１６６】
ＣＰＵ２２により、個々のモデルの変動許容範囲に、このテストデータにおける他の属性の値が含まれるか否かが計算される。入る場合、そのモデルを選択する。
【０１６７】
選択されたモデルと、第４または第５の実施形態を用いて選択されたモデルとのANDをとったモデルを、新たに異常性判定に用いるモデルとする。
【０１６８】
ＣＰＵ２２は、すべてのモデルで異常と判定されたときは、１時刻分のテストデータは異常と判定し、正常と判定したモデルが１つでも存在した場合は正常と判定する。
【０１６９】
ＣＰＵ２２は、判定の結果を表示装置２４に表示する。
【０１７０】
以上のように、本実施形態により、テストデータの異常発見において、訓練データに付されたクラスの時系列性や、テストデータにおける属性値の変動許容範囲を考慮することで、異常発見に利用するモデルを選択する分類規則（決定木）の精度、および、異常発見に利用するモデルの選択精度を向上させることができる。さらに、テストデータの異常発見において、モデルを１つしか利用しないことで誤って異常と判定してしまう可能性を低くすることができる。
【０１７１】
（第８の実施形態）
第８の実施形態は、第４〜第７の実施形態のいずれかを用いて異常検出を行う場合に、利用するモデルの修正を図るものである。テストデータの過去ｍ時刻前までに利用されたモデルと、現在の時刻について決定されたモデルとから、利用するモデルを決定する。ここでは２つの手法を示す。
【０１７２】
［第１の手法］ある時刻（現時刻）で異常発見に利用するモデルは、過去ｍ時刻内の各時刻において第４〜第７の実施形態のいずれかにより決定されたモデルと、現在の時刻において第４〜第７の実施形態のいずれかにより決定されたモデルとを合わせたもの（論理和：ＯＲ）とする。以下、図２４を用いて詳細例を説明する。ただし、ｍ＝２とする。
【０１７３】
時刻２では第４〜第７の実施形態のいずれかにより決定されたモデルがＡ、Ｃ、時刻３でも第４〜第７の実施形態のいずれかにより決定されたモデルがＡ、Ｃである。時刻４では第４〜第７の実施形態のいずれかにより決定されたモデルがＢである。よって、時刻４では、時刻２のモデルＡ、Ｃ、時刻３のモデルＡ、Ｃ、時刻４のモデルＢのＯＲをとったモデルＡ、Ｂ、Ｃが、実際に利用するモデルとなる。
【０１７４】
また、時刻３では第４〜第７の実施形態のいずれかにより決定されたモデルがＡ，Ｃ、時刻４では第４〜第７の実施形態のいずれかにより決定されたモデルがＢ、時刻５では第４〜第７の実施形態のいずれかにより決定されたモデルがＢである。よって、時刻５では、時刻３のモデルＡ、Ｃ、時刻４のモデルＢ、時刻５のモデルＢのＯＲをとったモデルＡ、Ｂ、Ｃが実際に利用するモデルとなる。
【０１７５】
また、時刻４、５、６では、第４〜第７の実施形態のいずれかにより決定されたモデルはいずれもＢである。よって、時刻６では、モデルＢが、実際に利用するモデルとなる。
【０１７６】
［第２の手法］ある時刻（現時刻）で異常発見に利用するモデルは、過去ｍ時刻内で異常性判定を行い正常と判定されたモデルと、現時刻において第４〜第７の実施形態のいずれかにより決定されたモデルとを合わせたもの（ＯＲ）とする。以下、図２５を用いて詳細例を説明する。ただし、ｍ＝２とし、図中、“○”がついているモデルは異常性判定に使われかつ正常と判定したモデルである。
【０１７７】
時刻２、３ではモデルＣを用いたときに正常と判定されている。一方、時刻４において第４〜第７の実施形態のいずれかにより決定されたモデルはＢである。よって、時刻４では、モデルＢ，Ｃが実際に利用するモデルとなる。
【０１７８】
また、時刻３ではモデルＣ、時刻４ではモデルＢを用いたときに正常と判定されている。一方、時刻５において第４〜第７の実施形態のいずれかにより決定されたモデルはＢである。よって，時刻５では、モデルＢ、Ｃが実際に利用するモデルとなる。
【０１７９】
また、時刻４ではモデルＢ、時刻５でもモデルＢを用いたときに正常と判定されている。一方、時刻６において第４〜第７の実施形態のいずれかにより決定されたモデルはＢである。よって，時刻６では、モデルＢが実際に利用するモデルとなる。
【０１８０】
以下、第４の実施形態で用いた図１９に基づき、第８の実施形態に係わるデータ処理装置について説明する。
【０１８１】
記憶装置２１は、ＣＰＵ２２が実行するプログラムと、訓練データとを格納している。
【０１８２】
ＣＰＵ２２は、記憶装置２１内のプログラムをメモリ２３にロードして実行する。以下、ＣＰＵ２２の処理の詳細を示す。
【０１８３】
訓練データが記憶装置２１からメモリ２３に読み出され、ＣＰＵ２２によって１つ以上のクラスタに分割される。
【０１８４】
個々のクラスタごとに、ある一つの属性の値を、他の属性の値から予測するモデルがＣＰＵ２２によって生成される。
【０１８５】
ＣＰＵ２２によって、モデルごとに、そのモデルを構成する属性の変動許容範囲が計算される。
【０１８６】
インターフェース２５経由で、テストデータの１時刻分がメモリ２３上にロードされる。
【０１８７】
ＣＰＵ２２により、第４〜第７の実施形態のいずれかを用いて、異常性判定に用いるモデルを決定する。
【０１８８】
テストデータにおける過去の時刻で第４〜第７の実施形態のいずれかにより選択されたモデルの情報をメモリ２３上に保存しておき、その情報と、上記異常性判定に用いるモデルとから、最終的に用いるモデル（単数または複数）を決定する。
【０１８９】
ＣＰＵ２２は、すべてのモデルで異常と判定されたときは、１時刻分のテストデータは異常と判定し、正常と判定したモデルが１つでも存在した場合は正常と判定する。
【０１９０】
ＣＰＵ２２は、判定の結果を表示装置２４に表示する。
【０１９１】
以上のように、本実施形態により、テストデータの異常発見において、異常発見に利用するモデルの選択精度を向上させることができる。
【図面の簡単な説明】
【０１９２】
【図１】第１の実施形態に係わる決定木の変更方法を説明するフローチャート。
【図２】プラントにおけるセンサ間の関係および一般的な管理値の設定を説明する図。
【図３】訓練データの例を示す図。
【図４】モデルを選択するための決定木の例を示す図。
【図５】テストデータの例を示す図。
【図６】決定木に訓練データの分類結果を加えた状態を示す図。
【図７】クラス分布表の例を示す図。
【図８】データ処理装置の構成例を示す図。
【図９】第２の実施形態に係わる決定木の変更方法を説明するフローチャート。
【図１０】第３の実施形態に係わる決定木の変更方法を説明するフローチャート。
【図１１】母集団の分布を計算するための方程式の例を示す図。
【図１２】訓練データの例を示す図。
【図１３】テストデータの例を示す図。
【図１４】第４の実施形態に係わるテストデータの異常性判定方法を説明するフローチャート。
【図１５】クラスが付加された訓練データの例を示す図。
【図１６】モデルとモデルを表す数式とを示す図。
【図１７】決定木に訓練データの分類結果を加えた状態を示す図。
【図１８】変更後の決定木の例を示す図。
【図１９】他のデータ処理装置の構成例を示す図。
【図２０】第５の実施形態に係わるテストデータの異常性判定方法を説明するフローチャート。
【図２１】訓練データに付されたクラスの変更処理を説明する図。
【図２２】第６の実施形態に係わるテストデータの異常性判定方法を説明するフローチャート。
【図２３】変動許容範囲を説明する図。
【図２４】第１の手法を説明する図。
【図２５】第２の手法を説明する図。
【符号の説明】
【０１９３】
１１、２１：記憶装置
１２、２２：ＣＰＵ
１３、２３：メモリ
１４、２４：表示装置
２５：インターフェース
【図１】
2007164346.tif 000003
【図２】
2007164346.tif 000004
【図３】
2007164346.tif 000005
【図４】
2007164346.tif 000006
【図５】
2007164346.tif 000007
【図６】
2007164346.tif 000008
【図７】
2007164346.tif 000009
【図８】
2007164346.tif 000010
【図９】
2007164346.tif 000011
【図１０】
2007164346.tif 000012
【図１１】
2007164346.tif 000013
【図１２】
2007164346.tif 000014
【図１３】
2007164346.tif 000015
【図１４】
2007164346.tif 000016
【図１５】
2007164346.tif 000017
【図１６】
2007164346.tif 000018
【図１７】
2007164346.tif 000019
【図１８】
2007164346.tif 000020
【図１９】
2007164346.tif 000021
【図２０】
2007164346.tif 000022
【図２１】
2007164346.tif 000023
【図２２】
2007164346.tif 000024
【図２３】
2007164346.tif 000025
【図２４】
2007164346.tif 000026
【図２５】
2007164346.tif 000027