23 多変量状態推定技術 - 逐次確率比検定

多変量状態推定技術 - 逐次確率比検定(MSET-SPRT)アルゴリズムは、重要なプロセスを監視し、微妙な異常を検出します。

23.1 多変量状態推定技術 - 逐次確率比検定について

多変量状態推定技術 - 逐次確率比検定(MSET-SPRT)は、異常検出および統計的検定のアルゴリズムです。

MSETは、監視対象シグナルの通常の操作シーケンスからの履歴データに基づいて、予期されるシステム動作を調整する、非線形の、ノンパラメトリックな、異常検出の機械学習手法です。これは、学習したシステム動作を、推定した正常動作を表す永続モデルに組み込みます。このモデルをデプロイすることで、OML4SQLスコアリング関数を使用してライブ・シグナル・ベクターの後続のストリームを評価できます。システムの全体的な正常性について仮説を立てるために、これらの関数では、推定したシグナル値と実際のシグナル値(残差)との差が計算され、SPRT計算を使用して、シグナルのいずれかが低減したかどうかが判断されます。

優れたモデルを作成するために、MSETには、システムの正常動作をすべて適切に取得している、十分な履歴データが必要となります。データが不十分な場合は、履歴データで十分に表されていなかった動作モードになると、不適切アラートが生成されます。MSETでは、監視対象となるデータの特性が時間の経過とともに変化しないことが前提となっています。MSETは、デプロイ後は、変化しないモデルであり、データ・ストリームを監視するにつれて変化することはありません。

MSETとSPRTはどちらも、連続的な時系列のセンサー・データを対象としています。生データ・ストリームを事前処理またはサンプリングする必要がある場合は、そのデータをMSET-SPRTモデルに渡す前に、それを行う必要があります。

ALGO_MSET_SPRTアルゴリズムは、分類の機械学習機能として指定されます。これは、各データ行に正常または異常のラベルが付けられているモデルを生成します。異常が予測された場合は、予測詳細に、その異常と重みを示すセンサーが一覧表示されます。

DBMS_DATA_MINING.CREATE_MODEL関数を使用してMSET-SPRTモデルを作成する場合は、case_id引数を使用して、そのアルゴリズムに必要な時系列データについて、一意の行識別子を指定します。その後、その構造でトレーニング・データをソートすることや、サンプリングおよび分散推定の期間を作成することができます。case_idを指定しないと、例外が発生します。

MSET-SPRTでは、数値データのみがサポートされています。作成データに他の列型がある場合は、例外が発生します。

センサーの数が非常に多い場合、MSET-SPRTでは、ランダム投影を活用してアルゴリズムのスケーラビリティと堅牢性を向上させます。ランダム投影は、組の距離を維持したままディメンション性を低下させる手法です。センサー・データをランダムに投影することで、問題は、距離が維持されている、より低いディメンション領域で解決されます。MSETの仮説検定手法は、それらの投影されたデータに適用されます。その際には、各ランダム投影をシステム状態のモンテカルロ・シミュレーションとして表示できます。異常の全体的確率は、試行数としては投影数を、成功数としてはアラートが発生した投影の数を使用する、2項分布に従います。

ノート:

ランダム投影を使用するMSET-SPRTモデルでは、予測詳細は生成されません。ランダム投影を採用した場合は、予測出力の特性が変わります。その予測ではシステムのグローバルな正常性が取得されるため、原因となる個々の属性を突き止めることはできません。そのため、PREDICTION_DETAILSでは空のリストが返されます。

関連項目:

使用可能なモデル設定のリストと解説は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

ノート:

モデル設定と同じ意味でハイパーパラメータという用語も使用されます。

23.2 MSET-SPRTのスコアリング

MSET-SPRTモデルの使用によるデータのスコアリングは分類アルゴリズムを使用したスコアリングに似ていますが、SPRTの方法は、複数のMSET予測にわたり段階的な変化を追跡するため、順序付けされたデータに依存しています。

これは、行間で状態情報を保持しないという、Oracle Database SQL予測関数の一般的な使用方法とは異なります。

サポートされている関数は、PREDICTIONPREDICTION_COSTPREDICTION_DETAILSPREDICTION_PROBABILITYおよびPREDICTION_SETです。Oracle Database 20cでは、これらの関数は、MSET-SPRTモデルのスコアリングのための構文が新しくなっています。この構文には、履歴データをソートし対象範囲指定するORDER BY句が含まれています。

それらの予測関数は、次の情報を返します。

  • PREDICTIONは、レコードに異常のフラグが付いているかどうかを示します。これには、1クラスSVMモデルと同様の自動生成されたラベルが使用されます(正常の場合は1、異常の場合は0)。
  • PREDICTION_COSTは、自動コスト分析またはユーザー指定コストの役割を果たします。通常、ユーザー指定コストでは、不適切なポジティブに、不適切なネガティブより高いコストが割り当てられます。
  • PREDICTION_DETAILSは、予測をサポートするシグナルを重みとともに示します。
  • PREDICTION_PROBABILITYは、統合ロジックに基づいて確実性の測度を示します。
  • PREDICTION_SETは、各観測について、予測のセット(0, 1)、および対応する予測確率を返します。

注意:

ORDER BY句で指定された1つ以上の列内の値が一意でない場合やデータ・サンプル値の実際の出現順序と等しくない場合は、SPRT予測の有効性や問合せ実行間での一貫性は保証されません。

他の分類モデルと異なり、MSET-SPRTモデルでは、一般に、レコードの異常ラベルに明確な確率測度は関連付けられていません。ただし、統合ロジックによって、確率のかわりに不確実性の測度を生成できます。たとえば、観測5回の期間に2つの異常があるとアラートが生成される場合は、観測5回の期間内に2つの異常が検出されると、確実性として0.5がレポートされます。確実性は、3つより多く異常が検出された場合は向上し、異常が検出されない場合は減少します。

PREDICTION_DETAILS関数は、様々な形式の出力に対応しており、警告をトリガーした個々のシグナルに関して、必要な情報を示すことができます。ランダム投影が実行される場合は、PREDICTIONPREDICTION_PROBABILITYの全体のみが計算され、PREDICTION_DETAILSはレポートされません。

MSETモデルをデプロイする前に、不適切アラートとミス率または統合ロジックなどのSPRTパラメータを調整するために、履歴データをスコアリングする必要があります。SPRTパラメータは、デプロイメントを容易にするために、モデル・オブジェクト内に埋め込まれます。データベースでのスコアリングは履歴データのパラメータ調整および法医学的分析に必要ですが、センサー・データのストリームの監視は、データベースの外部で、IoTサービス内またはエッジ・デバイス自体で、より簡単に実行されます。

モデル作成に使用する列と同じ列が入力スコアリング・データ・セットに存在する場合は、パーティション化されたモデルとしてMSET-SPRTモデルを作成およびスコアリングできます。これらの列が存在しない場合、問合せではエラーが発生します。

例23-1 MSET-SPRTモデルのスコアリング

-- Display the prediction details.
SELECT time_id, 
       PREDICTION(mset_sh_model using *) OVER (ORDER BY time_id) pred,
       PREDICTION_DETAILS(mset_sh_model using *) OVER (ORDER BY time_id) anomalyDetails 
  FROM mset_test_sh_data
    WHERE time_id >  '15-DEC-01' AND time_id <= '25-DEC-01'          
    ORDER BY time_id; 

このSELECT文では、10行が返され、その最初の5行のみが表示されています。


TIME_ID   PRED  ANOMALYDETAILS
--------- ----  ---------------------------------------------------------------------- 
16-DEC-01    1  <Details algorithm="MSET-SPRT" class="1">
                <Attribute name="QUANTITY" actualValue="558" weight="1" rank="1"/>
                <Attribute name="AMOUNT" actualValue="117095.21" weight="1" rank="2"/>
                </Details>
17-DEC-01    1  <Details algorithm="MSET-SPRT" class="1">
                <Attribute name="AMOUNT" actualValue="281264.3" weight="1" rank="1"/>
                <Attribute name="QUANTITY" actualValue="1507" weight=".8" rank="2"/>
                </Details> 
18-DEC-01    1  <Details algorithm="MSET-SPRT" class="1">
                <Attribute name="AMOUNT" actualValue="114550.12" weight="1" rank="1"/>
                <Attribute name="QUANTITY" actualValue="2447" weight=".6" rank="2"/>
                </Details>
19-DEC-01    0  <Details algorithm="MSET-SPRT" class="0">
                <Attribute name="QUANTITY" actualValue="367" weight=".6" rank="1"/>
                </Details>
20-DEC-01    0  <Details algorithm="MSET-SPRT" class="0">
                <Attribute name="QUANTITY" actualValue="1060" weight=".6" rank="1"/>
                </Details> 
...