Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AIでサクッと異常を発見 - OCI Anomaly Detection -

oracle4engineer
January 25, 2024
370

AIでサクッと異常を発見 - OCI Anomaly Detection -

2024/01/26に行われたAI Brown Bag Seminar 「AIでサクッと異常を発見 - OCI Anomaly Detection -」の資料です。

oracle4engineer

January 25, 2024
Tweet

More Decks by oracle4engineer

Transcript

  1. AIでサクッと異常を発見 - OCI Anomaly Detection - Oracle AI Brown Bag

    Seminar #5 Sho Obata Cloud Architect Oracle Digital, Oracle Corporation Japan January 26, 2024
  2. Oracle AI Stack Copyright © 2024, Oracle and/or its affiliates

    … Machine learning services Data AI services AI infrastructure OCI Data Science ML in Oracle Database MySQL Heatwave AutoML Compute bare metal instances and VMs Cluster networking Block, object, file storage, HPC filesystems Digital Assistant Speech Language Vision Document Understanding Anomaly Detection Data Labeling OCI Generative AI + Business applications, Oracle SaaS portfolio 4
  3. Oracle AI Stack Copyright © 2024, Oracle and/or its affiliates

    … Machine learning services Data AI services AI infrastructure OCI Data Science ML in Oracle Database MySQL Heatwave AutoML Compute bare metal instances and VMs Cluster networking Block, object, file storage, HPC filesystems Digital Assistant Speech Language Vision Document Understanding Data Labeling OCI Generative AI + Business applications, Oracle SaaS portfolio 5 Anomaly Detection 異常検出
  4. OCI AI Service Anomaly Detection 概要 Copyright © 2024, Oracle

    and/or its affiliates 7 時系列データからの予測モデル構築とデプロイが可能な、フル・マネージドの異常検出MLサービス カスタマ・ベネフィット • 統計、機械学習の専門家を必要としない、WebUIベースのかんたん ワークフロー (OCICLI, SDKも提供) • 基盤となるハードウェアが自動選択され、大規模なデータセットの学習時 間を自動最適化 • デプロイ環境までが含まれたフル・マネージド・サービス • Oracle Labs開発・特許取得済のアルゴリズムMSET2 ✓ 早期の異常検出 ✓ データの自動前処理機能(Intelligent Data Preprocessing) ユース・ケース • 生産機械のセンサーデータから異常な挙動や故障を検出 • 住宅やオフィスの電力使用量の把握 • 建物の温度、圧力データから建物の継続的な安全性の把握 etc…
  5. Anomaly Detection Service OCI AI Service Anomaly Detection ワークフロー Copyright

    © 2024, Oracle and/or its affiliates 8 学習 データ・アセット 予測モデル デプロイ {REST} 検出 学習データ 検出用データ Anomaly Cloud Console REST Client (OCICLI, SDK, etc.) {JSON} プロジェクト ①プロジェクトの作成 ②データ・アセットの登録 ③学習の実行 ④異常の検出 本サービス内の全ての設定を行う 論理的なエンティティであるプロ ジェクトを最初に作成。 データソースから学習データをデー タ・アセットとしてプロジェクト内に 設定。 学習データによりモデルを訓練し、 予測モデルの構築とデプロイを実 行。 構築した予測モデルに検出用 データを入力し、異常値を検出。 WebUIベースのウィザードによるシンプルなワークフロー データストア
  6. 検出できる異常パターン Copyright © 2024, Oracle and/or its affiliates 9 単発異常

    (Point anomaly) 平均からあまりにもかけ離れたデータ Ex) クレジットカードの平均請求額が50万にも関わらず、500万の請求書が届いた 場合、異常の可能性あり。 連続異常 (Collective anomaly) 個々に見ると異常ではないが、集合的に見ると異常であるようなデータ Ex) いつも50万の請求額が、ある月に60万になった場合、異常と判断できないが、 これが数か月連続した場合、異常の可能性あり。 コンテキスト異常 (Contextual anomaly) コンテキストに依存した異常データ Ex) カード請求額は、時期に応じて変動する可能性がある。(ギフト時期、旅行シー ズンなど)。このような支出の急増は、支出全体で捉えると異常に見えるが、時期的 な脈絡(コンテキスト)においては異常ではない可能性あり。 単発異常 コンテキスト異常 参考: https://ibm.github.io/japan-technology/Code-Learning-Paths/get-started-anomaly-detection-api/what-is-anomaly-detection/
  7. 単変量異常検出 Copyright © 2024, Oracle and/or its affiliates 10 One

    Class SVM 時系列データ 学習 予測モデル 概要 単一の時系列データ(単変量)を学習し異常を特定する 単変量アルゴリズム (One Class SVM) シグナル毎に1つのモデルを構築するクラシック機械学習アルゴリズム 識別できる異常パターン • 単発異常 ポイント異常, スパイク • 連続異常 • コンテキスト異常 識別できるユースケース • 季節パターン • 均一トレンド • 線形トレンド
  8. 多変量異常検出 Copyright © 2024, Oracle and/or its affiliates 11 時系列データ

    学習 予測モデル MSET2 概要 相関のある複数の変量(多変量)を学習し異常を特定する 使用される多変量アルゴリズム (MSET2) 多変量データセットを自動的に分析し、相関性を考慮して多変量 機械学習を行う Oracle Labs開発・特許取得済のアルゴリズム 識別できる異常パターン • 単発異常 相関性の高い多変量データセットのポイント異常、スパイク • 連続異常 • コンテキスト異常 識別できるユースケース • 製造、IoT、輸送、エネルギー業界などの信号データ
  9. MSET2によるAnomaly Detection Copyright © 2024, Oracle and/or its affiliates MSET2

    多変量異常検出は、複数のシグナルを持つ時系列データセットから異常値を発見するための技術 Oracle Labsで開発されたもので、IDP, MSET, SPRTを組み合わせたもの IDP (Intelligent Data Preprocessing) IDPは入力データの質を高める、一連のデータ前処理技術 MSET&SPRT (Multivariate State Estimation Technique and Sequential Probability Ratio Test) MSETとSPRTは連続して機能する技術 MSETは、時系列データセット内の複数の信号間の関係を 学習する SPRTは、推定値を使用し異常の早期検出を行う。 12
  10. インテリジェント・データ前処理手法 Intelligent Data Processing (IDP) Copyright © 2024, Oracle and/or

    its affiliates 分析再サンプリング・プロセス Analytical Resampling Process (ARP) 時系列データの同期されていない複数シグナルをそろえるために使用 クロックアウト同期の問題を解消 Missing values 欠損値の補完 Missing Value Imputation (MVI) データセットに欠落しているセンサーデータの導出/入力に使用 MVIはMSET推定を使って、欠落箇所をインテリジェントに補填 UnQuantization (UnQ) 低解像度の入力シグナルの品質を高解像度化するために使用 センサーが低解像度のシグナルを送信するIoTアプリケーションでよく利用される 13
  11. (参考) 推奨するデータ前処理 Copyright © 2024, Oracle and/or its affiliates 四分位範囲

    (IQR) 時系列データの外れ値の識別と削除に使用する統計分散の尺度 IQRは25, 75パーセンタイルの差異 外れ値検出 Zスコア法、移動平均、機械学習系の手法 etc... 高相関シグナルの処理 ピアソン相関係数を計算し、相関が高い変数を特定して冗長なシグナルを削除する 14 データ準備: https://docs.oracle.com/ja-jp/iaas/Content/anomaly/using/data-require.htm#data_require__data- prep
  12. MSET2を使った異常検出の流れ Copyright © 2024, Oracle and/or its affiliates 4. Sequential

    Probability Ratio Test (SPRT) 逐次確率比検定 Diffで比較された残差が異常かどうかを逐次的に判断する SPRTでは、ノイズの多いシグナルの微小な異常でも誤検出 を減らし、高感度で検出することが可能 15 1. Data Pre-Processing (DPP) データ前処理 • Intelligent Data Processing (IDP) ARP, MVI, UnQ etc... DPP MSET Model Diff SPRT 𝑠1 … 𝑠𝑛 実シグナル値 事前処理済みシグナル値 推定シグナル値 残差 Ƹ 𝑠1 … Ƹ 𝑠𝑛 アラート 𝑟 2. MSET Model MSETを使いシグナル値を推定 3. Diff (Difference) MSETによって生成された推定シグナル値をそのタイムスタンプ の実シグナル値と比較
  13. Anomaly Detection Service OCI AI Service Anomaly Detection ワークフロー Copyright

    © 2024, Oracle and/or its affiliates 17 学習 データ・アセット 予測モデル デプロイ {REST} 検出 学習データ 検出用データ Anomaly Cloud Console REST Client (OCICLI, SDK, etc.) {JSON} プロジェクト ①プロジェクトの作成 ②データ・アセットの登録 ③学習の実行 ④異常の検出 本サービス内の全ての設定を行う 論理的なエンティティであるプロ ジェクトを最初に作成。 データソースから学習データをデー タ・アセットとしてプロジェクト内に 設定。 学習データによりモデルを訓練し、 予測モデルの構築とデプロイを実 行。 構築した予測モデルに検出用 データを入力し、異常値を検出。 WebUIベースのウィザードによるシンプルなワークフロー データストア
  14. InfluxDB • 時系列データ専用のOSSデータベース • SQLライクなデータ操作言語でJSON 形式での出力が可能 • データアセットとしては表単位 • プライベートエンドポイント対応

    • OCI Vault必須 Object Storage • データアセットとしてはファイル単位 • JSON/CSVファイル • Anomaly Detection Serviceから Service Gateway経由でアクセス 可能 Autonomous Transaction Processing (ATP) • データアセットとしては表単位 • プライベートエンドポイント対応 • OCI Vault必須 対応データストア Copyright © 2024, Oracle and/or its affiliates 18 KVS RDB ②データ・アセットの登録
  15. データプロファイル要件 Copyright © 2024, Oracle and/or its affiliates 19 timestamp

    temperature_1 temperature_2 temperature_n 2019-01-01T00:00:04Z 0.4328 -0.0723 -2.8523 2019-01-01T00:01:01Z 0.0671 0.2425 2.7606 2019-01-01T00:02:06Z 0.106 0.0615 -0.2861 2019-01-01T00:03:01Z 0.5897 0.098 1.3817 2019-01-01T00:04:04Z -0.017 0.3838 -1.9249 2019-01-01T00:05:07Z 0.2797 0.291 2.3289 2019-01-01T01:00:03Z 3.4585 2.9448 3.2903 学習データ要件 • timestamp列は一列目、昇順、時間重複なし (timestamp列がない場合は時間順にソートされている と見なされる) • 属性値は数値のみ • 属性名の重複不可、属性数は最大300まで • 最低レコード数 属性数x8か80の大きい方の値 • データの記録頻度(例:60回/分、120回/分)の要件 なし(異なる頻度の混在可) • 値が欠落しているレコードはnullとして表す データの例 詳細なデータ要件についてはマニュアルをご参照ください。 トレーニングおよび検出データの要件 https://docs.oracle.com/ja-jp/iaas/Content/anomaly/using/data-require.htm ②データ・アセットの登録
  16. モデルのトレーニング Copyright © 2024, Oracle and/or its affiliates 20 モデルの作成

    作成したデータ・アセットを使い異常検出モデルを作成する。 パラメータ ターゲット誤警報確率 (FAP: False Alarm Probability) 誤警報が発生する確率を表し、モデルのパフォーマンスを示す 値は0~0.05を指定 トレーニング分割率 モデルをトレーニングするために使用されるデータの割合 値は0.5~0.8を指定 アルゴリズム 単変量アルゴリズム , 多変量アルゴリズム が選択可能 ウィンドウサイズ 一定時間 (ウィンドウ) のデータで異常を検知する 値は1~100を指定 ③学習の実行
  17. 同期検出 検出処理 Copyright © 2024, Oracle and/or its affiliates 21

    非同期検出 API, CLI Cloud Console dataset Object Storage dataset inline API, CLI戻り値 Cloud Console グラフ Jobs機能により、大規模検出用データの並列バッチ処理実行基 盤をデプロイ可能 Object Storage dataset dataset inline API, CLI Cloud Console Auto Scale Object Storage results 並列バッチ処理 検出データポイント 同期検出 非同期検出 30,000以下 〇 〇 30,000より多い × 〇 ※データポイントとは シグナル数×行数で計算される行列の要素数 ④異常検出
  18. 異常の検出結果 Copyright © 2024, Oracle and/or its affiliates 22 Cloud

    Console { "data": { "detection_results”: [ { “anomalies”: [ { “actual_value": 0.5119914287451935, "anomaly_score": 0.16781235681393664, "estimated_value": 0.7759674974614518, "signal_name": "temperature_3" }, { "actual_value": 8.636504808483837, "anomaly_score": 0.7333333333333334, "estimated_value": 2.791205262270065, "signal_name": "pressure_2" } ], "score": 0.14216949834044884, "timestamp": "2019-01- 07T22:12:02.000+00:00" }, 中略 "status": "200 OK" } 各属性の時系列データ 異常が検出された時間帯 (赤色の帯線) 異常スコア (異常の重大度) REST API Call 黒色:実際の値 緑色:推測値 ※Consoleでの推論結果表示は30000データポイントまでのデータのみ対応 ④異常検出
  19. 異常検出のデザインパターン Copyright © 2024, Oracle and/or its affiliates 23 学習

    検出 Object Storage / ATP / InfluxDB ※SCHはATP/InfluxDBは未サポート Data Integration Streaming Service Connector Hub Data Science VMs/OKE Data Flow Functions Anomaly Detection OAC VMs/OKE Functions Notifications Collect Preprocessing & Analyze Act
  20. 前提 Copyright © 2024, Oracle and/or its affiliates 25 環境

    • Python: 3.9 • SDK for Python: 2.119.1 使用するOCI Service • Anomaly Detection • Virtual Machine • Functions • Object Storage • Service Connector Hub • Streaming • Notifications 今回のDemoで使用するコード
  21. Demo 「建物の状態検出」 Copyright © 2024, Oracle and/or its affiliates 26

    Anomaly Detection timestamp temperature1 pressure1 2019-01-01 T00:00:04Z 0.4328 -0.0723 … 2019-01-01 T00:01:01Z 0.0671 0.2425 … … 検出結果 ・タイムスタンプ ・建物の温度 ・建物の圧力 建物の温度、圧力データから建物の継続的な状況把握と安全性を、Anomaly Detectionを使って検出する … … … データアセット データソース { "data": { "detectionResults": [ { "anomalies": [ { "actualValue": 0.5119914287451935, "anomalyScore": 0.16781235681393664, "estimatedValue": 0.7759674974614518, "signalName": "temperature_3" } ], "score": 0.14216949834044884, "timestamp": "2024-01-26T22:12:02.000+00:00" }, 中略 "status": "200 OK" } サンプルコード
  22. 異常検出モデル作成 Copyright © 2024, Oracle and/or its affiliates 27 パラメータ設定

    名前: bbs_model ターゲット誤警報確率: 0.01 トレーニング分割率: 0.7 アルゴリズム: MSET ウィンドウサイズ: Auto
  23. OCI Region アクション 異常検出 データ収集&加工 Demo 異常検出アーキテクチャ Copyright © 2024,

    Oracle and/or its affiliates 28 Streaming Service Connector Hub Functions Anomaly Detection Notifications Virtual Machine Slack { “timestamp”: “2024-01-26T00:00:00” “values”: [ 0.4738691915899007, -0.2103424394727376, ... 0.21636488871770235 ] } 非同期通信 失敗時の再実行 Sensorsの 代わり Object Storage Anomaly Detection を使って異常検出 { "detection_results": [ { "anomalies": [ { "actual_value": 100000000000000.0, "anomaly_score": 0.6, "estimated_value": 0.4231228033511233, "imputed_value": null, "signal_name": "pressure_5" } ], "row_index": null, "score": 0.23063184946707121, "timestamp": "2024-01-26T03:45:34+00:00" } ] } ×5
  24. Slackへの通知 Copyright © 2024, Oracle and/or its affiliates 29 正常時

    異常検出時 Anomaly Detectionの結果をSlackに通知させる ※今回は正常時も通知を送る
  25. OCI Region アーキテクチャ 「Sensors」 Copyright © 2024, Oracle and/or its

    affiliates 30 Sensors (Virtual Machine) • センサーからStreamingへデータを送信 • 今回はVirtual MachineからJSON形式のデータを送る Virtual Machine Sensorsの 代わり Streamingへの送信のコード { “timestamp”: “2024-01-26T00:00:00” “values”: [ 0.4738691915899007, -0.2103424394727376, ... 0.21636488871770235 ] } ×5
  26. アーキテクチャ 「データ収集&加工」 Copyright © 2024, Oracle and/or its affiliates 31

    Streaming • センサーからのデータ取得と異常検出の非同期処理を行うためのメッセージ・ バスとして使用 Service Connector Hub • StreamingからFunctionsへのデータ配信 • 60秒に1回の頻度でデータ配信を行う • 配信失敗時の再試行の役割 Object Storage • センサーデータの格納場所 データ収集&加工 Streaming Service Connector Hub Object Storage
  27. アーキテクチャ 「異常検出」 Copyright © 2024, Oracle and/or its affiliates 32

    Functions Anomaly DetectionにJSON形式でデータを渡す 異常検出の結果を受け取り、Notificationで通知 Anomaly Detection 異常検出モデルを使って検出を行い、結果をJSON形式のデータで返す 異常検出 Functions Anomaly Detection Anomaly Detectionのコード (Functions)
  28. アーキテクチャ 「アクション」 Copyright © 2024, Oracle and/or its affiliates 33

    Notifications Anomaly Detectionの結果を、Slackに通知 アクション Notifications Slack Notificationsへの送信のコード (Functions)
  29. 1. Anomaly Detectionの概要 • Anomaly Detectionで検出できる異常 • 異常検出アルゴリズム 2. Anomaly

    Detectionの使い方 • データプロファイル • モデルのトレーニング方法 • 異常検出結果の見方 3. Demo まとめ Copyright © 2024, Oracle and/or its affiliates 34