今日、大気汚染は深刻な呼吸器や心臓の状態を引き起こし、深刻な健康上の脅威をもたらす身近な環境問題です。 酸性雨、オゾン層の破壊、地球温暖化も大気汚染の悪影響です。 深刻な健康問題や、極端な場合には生命を脅かす状況を防ぐために、インテリジェントな監視と自動化が必要です。 空気の質は、空気中の汚染物質の濃度を使用して測定されます。 症状を早期に特定し、危険になる前に汚染物質のレベルを制御することが重要です。 大気の質と汚染物質の重量の異常を特定し、根本原因を迅速に診断するプロセスは、困難で費用がかかり、エラーが発生しやすいものです。
AI および機械学習 (ML) ベースのソリューションを適用してデータの異常を検出するプロセスには、データの取り込み、キュレート、適切な形式での準備、およびこれらの ML モデルの有効性の最適化と長期にわたる維持に多くの複雑さが伴います。時間。 これは、ML 機能の採用を迅速に実装およびスケーリングするための障壁の XNUMX つです。
この投稿では、統合ソリューションを使用する方法を示しています メトリックスのAmazonルックアウト および Amazon Kinesis データ ファイアホース ストリーミング データをすばやく簡単に取り込み、関心のある主要業績評価指標の異常を検出することで、これらの障壁を打ち破ります。
Lookout for Metrics は、ビジネスおよび運用データの異常 (標準からの外れ値) を自動的に検出して診断します。 これは、特殊な ML モデルを使用してデータの特性に基づいて異常を検出するフルマネージド ML サービスです。 たとえば、トレンドと季節性は、しきい値ベースの異常検出が機能しない時系列メトリックの XNUMX つの特性です。 トレンドは、メトリックの値の連続的な変化 (増加または減少) です。 一方、季節性は、システムで発生する周期的なパターンであり、通常はベースラインを超えて上昇し、その後再び減少します。 Lookout for Metrics を使用するのに ML の経験は必要ありません。
空気中の汚染物質濃度の異常を検出する、一般的な大気質監視シナリオを示します。 この投稿の終わりまでに、AWS のこれらのマネージド サービスを使用して、健康問題や地球温暖化を防止する方法を学びます。 このソリューションを他のユースケースに適用して、水質、土地の質、電力消費パターンの異常を検出するなど、環境管理を改善できます。
ソリューションの概要
このアーキテクチャは、次のXNUMXつの機能ブロックで構成されています。
- 空気中の一酸化炭素 (CO)、二酸化硫黄 (SO2)、および二酸化窒素 (NO2) の濃度レベルを感知するために戦略的な場所に配置されたワイヤレス センサー
- ストリーミング データの取り込みとストレージ
- 異常の検出と通知
このソリューションは、センサーからユーザーへの通知まで、完全に自動化されたデータ パスを提供します。 識別された異常を分析するために、Lookout for Metrics UI を使用してソリューションを操作することもできます。
次の図は、ソリューションアーキテクチャを示しています。
前提条件
ソリューションに進む前に、次の前提条件が必要です。 この投稿では、us-east-1 リージョンを使用します。
- Python スクリプトをダウンロードします (パブリッシュ.py) およびデータ ファイル GitHubレポ.
- Video Cloud Studioで
live_data.csv
好みのエディターでファイルし、日付を今日と明日の日付に置き換えます。 たとえば、今日の日付が 8 年 2022 月 XNUMX 日の場合、2022-03-25
2022-07-08
. フォーマットを同じにしてください。 これは、IoT シミュレーター スクリプトを使用して現在の日付のセンサー データをシミュレートするために必要です。 - 作る Amazon シンプル ストレージ サービス (Amazon S3) バケットと名前付きフォルダー
air-quality
. 内部にサブフォルダーを作成するair-quality
命名historical
。 手順については、 フォルダを作成する. - アップロード
live_data.csv
ルート S3 バケットのファイルとhistorical_data.json
履歴フォルダーにあります。 - 作る AWS クラウド9 このソリューションのセンサー データを作成するために Python シミュレーター プログラムを実行するために使用する開発環境。
AWS IoT Core と Kinesis Data Firehose を使用してデータを取り込み、変換する
Kinesis Data Firehose 配信ストリームを使用して、ストリーミング データを AWS IoTコア Amazon S3 に配信します。 次の手順を完了します。
- Kinesis Data Firehoseコンソールで、 配信ストリームを作成する.
- ソース、選択する ダイレクトプット.
- 開催場所、選択する アマゾンS3.
- 配信ストリーム名で、配信ストリームの名前を入力します。
- S3バケット、前提条件として作成したバケットを入力します。
- 値を入力してください S3 バケットのプレフィックス および S3 バケット エラー出力プレフィックス注意すべき重要なポイントの 3 つは、Amazon S3 送信先用に設定されたカスタム プレフィックスの設定です。 このプレフィックス パターンにより、Lookout for Metrics が期待するプレフィックス階層に従って SXNUMX バケットにデータが作成されるようになります。 (これについては、この投稿の後半で詳しく説明します。) カスタム プレフィックスの詳細については、次を参照してください。 AmazonS3オブジェクトのカスタムプレフィックス.
- バッファ間隔、 入る
60
. - 選択する IAM ロールを作成または更新する.
- 選択する 配信ストリームを作成する.
次に、AWS IoT Core を構成し、大気質シミュレーター プログラムを実行します。 - AWS IoT Core コンソールで、 AWS IoT ポリシーを作成する 管理者と呼ばれます。
- 下のナビゲーション ペインで メッセージ ルーティング、選択する キャンペーンのルール.
- 選択する ルールを作成.
- でルールを作成します。 Kinesis Data Firehose(firehose) アクション.
これにより、MQTT メッセージから Kinesis Data Firehose 配信ストリームにデータが送信されます。 - 選択する 創造する.
- 名前付きの AWS IoT モノを作成する
Test-Thing
作成したポリシーをアタッチします。 - AWS IoT Core の証明書、公開鍵、秘密鍵、デバイス証明書、およびルート CA をダウンロードします。
- ダウンロードした各ファイルを
certificates
前に作成したサブディレクトリ。 - publish.py を
iot-test-publish
フォルダにコピーします。 - AWS IoT Core コンソールのナビゲーションペインで、 設定.
- カスタム エンドポイント、エンドポイントをコピーします。
この AWS IoT Core カスタム エンドポイント URL は、AWS アカウントとリージョンに固有のものです。 - 交換する
customEndpointUrl
AWS IoT Core カスタム エンドポイント URL、certificate という名前の証明書、およびYour_S3_Bucket_Name
を S3 バケット名に置き換えます。
次に、pip と AWS IoT SDK for Python をインストールします。 - AWS Cloud9 にログインし、開発環境に作業ディレクトリを作成します。 例えば:
aq-iot-publish
. - 新しい作業ディレクトリに証明書用のサブディレクトリを作成します。 例えば:
certificates
. - コマンドラインから以下を実行して、AWS IoT SDK for Python v2 をインストールします。
- データ パイプラインをテストするには、次のコマンドを実行します。
次のスクリーンショットでペイロードを確認できます。
最後に、データはプレフィックス構造で指定された S3 バケットに配信されます。
ファイルのデータは次のとおりです。
{"TIMESTAMP":"2022-03-20 00:00","LOCATION_ID":"B-101","CO":2.6,"SO2":62,"NO2":57}
{"TIMESTAMP":"2022-03-20 00:05","LOCATION_ID":"B-101","CO":3.9,"SO2":60,"NO2":73}
タイムスタンプは、各ファイルに 5 分間隔のデータが含まれていることを示しています。
最小限のコードで、センサー データを取り込み、取り込んだデータから入力ストリームを作成し、Lookout for Metrics の要件に基づいて S3 バケットにデータを保存しました。
以降のセクションでは、Lookout for Metrics 内の構成要素と、Lookout for Metrics コンソールを使用してこれらの概念を構成することがいかに簡単かについて詳しく見ていきます。
検出器を作成する
検出器は、データセットを監視し、定義済みの頻度で異常を識別する Lookout for Metrics リソースです。 検出器は ML を使用してデータのパターンを検出し、予想されるデータの変動と正当な異常を区別します。 パフォーマンスを向上させるために、検出器は時間の経過とともにデータについてさらに学習します。
このユースケースでは、検出器はセンサーからのデータを 5 分ごとに分析します。
検出器を作成するには、Lookout for Metrics コンソールに移動して、 検出器を作成する。 検出器の名前と説明(オプション)を5分間隔で入力します。
データは、AWSが所有および管理するキーを使用して、デフォルトで暗号化されます。 デフォルトで使用されているものとは異なる暗号化キーを使用するかどうかを構成することもできます。
次に、異常検出を実行するデータにこの検出器を向けましょう。
データセットを作成する
データセットは、データを見つける場所と異常を分析するメトリックを検出器に伝えます。 データセットを作成するには、次の手順を実行します。
- Amazon Lookout for Metrics コンソールで、検出器に移動します。
- 選択する データセットを追加する.
- 名前 、名前を入力します(たとえば、
air-quality-dataset
). - 情報元、データ ソースを選択します (この投稿では、Amazon S3)。
- 検出器モード、モードを選択します (この記事では、 連続的な).
Amazon S3 では、次の XNUMX つのモードで検出器を作成できます。
-
- バックテスト –このモードは、履歴データの異常を見つけるために使用されます。 すべてのレコードをXNUMXつのファイルに統合する必要があります。
- 連続的な – このモードは、ライブ データの異常を検出するために使用されます。 大気監視センサーから大気汚染物質のデータを受け取る際に異常を検出したいため、ユースケースでこのモードを使用します。
- ライブ S3 フォルダーの S3 パスとパス パターンを入力します。
- データソース間隔、選択する 5分間隔検出器がパターンを学習できる履歴データがある場合は、この構成中にそれを提供できます。 データは、バックテストの実行に使用するのと同じ形式であることが期待されます。 履歴データを提供すると、ML モデルのトレーニング プロセスが高速化されます。 これが利用できない場合、継続的検出器は推論を行う前に十分なデータが利用可能になるまで待機します。
- この投稿では、既に履歴データがあるため、選択します。 履歴データを使用する.
- の S3 パスを入力します
historical_data.json
. - ファイル形式選択 JSON行.
この時点で、Lookout for Metrics はデータ ソースにアクセスし、データを解析できるかどうかを検証します。 解析が成功すると、「検証が成功しました」というメッセージが表示され、メジャー、ディメンション、およびタイムスタンプを構成する次のページに移動します。
メジャー、ディメンション、およびタイムスタンプを構成する
措置 異常を追跡するKPIを定義します。 検出器ごとに最大XNUMXつのメジャーを追加できます。 ソースデータからKPIを作成するために使用されるフィールドは、数値形式である必要があります。 KPIは現在、SUMまたはAVERAGEを実行して、時間間隔内のレコードを集約することで定義できます。
寸法 カテゴリまたはセグメントを定義することにより、データをスライスおよびダイシングする機能を提供します。 これにより、特定の測定値が適用可能なデータセット全体のサブセットの異常を追跡できます。
このユース ケースでは、5 分間隔で検出されたオブジェクトの AVG を計算する XNUMX つのメジャーを追加し、汚染物質の濃度を測定する XNUMX つのディメンションのみを持ちます。
データセット内のすべてのレコードにはタイムスタンプが必要です。 次の構成では、タイムスタンプ値とタイムスタンプの形式を表すフィールドを選択できます。
次のページでは、追加したすべての詳細を確認し、検出器を保存してアクティブ化できます。
次に、検出器はデータソースへのデータストリーミングの学習を開始します。 この段階で、検出器のステータスは次のように変わります。 Initializing
.
Lookout for Metrics が異常の検出を開始する前に必要な最小量のデータに注意することが重要です。 要件と制限の詳細については、次を参照してください。 メトリクスの割り当てに注意してください.
最小限の構成で、検出器を作成し、それをデータセットに向け、Lookout for Metrics で異常を検出するメトリックを定義しました。
異常を視覚化する
Lookout for Metricsは、を使用したいユーザーに豊富なUIエクスペリエンスを提供します。 AWSマネジメントコンソール 検出された異常を分析します。 また、API を介して異常を照会する機能も提供します。
大気質データのユースケースから検出された異常の例を見てみましょう。 次のスクリーンショットは、指定された日時に空気中の CO 濃度で検出された異常を示しています。重大度スコアは 93 です。また、異常に対するディメンションの寄与率も示しています。 この場合、100% の貢献度はロケーション ID B-101 ディメンションからのものです。
アラートを作成する
Lookout for Metricsを使用すると、さまざまなチャネルを使用してアラートを送信できます。 アラートをトリガーする必要がある異常重大度スコアのしきい値を構成できます。
このユースケースでは、アラートをに送信するように構成します Amazon シンプル通知サービス (Amazon SNS) チャネルで、SMS を送信します。 次のスクリーンショットは、構成の詳細を示しています。
アラートを使用して、を使用して自動化をトリガーすることもできます AWSラムダ AWS IoT Core で API 駆動型の操作を推進するための関数。
まとめ
この投稿では、Lookout for Metrics と Kinesis Data Firehose を使用して、ML を活用した異常検出アプリケーションを構築するエンドツーエンドのライフサイクルの管理に伴う、差別化されていない重労働をいかに簡単に取り除くことができるかを紹介しました。 このソリューションは、主要なビジネス指標の異常を見つける能力を加速し、ビジネスの成長と改善に集中できるようにするのに役立ちます。
にアクセスして詳細を学ぶことをお勧めします Amazon Lookout forMetrics開発者ガイド ビジネス KPI に関連するデータセットを使用して、これらのサービスによって実現されるエンド ツー エンドのソリューションを試してみてください。
著者,
ディーラジ・タクール アマゾンウェブサービスのソリューションアーキテクトです。 彼はAWSのお客様やパートナーと協力して、エンタープライズクラウドの採用、移行、戦略に関するガイダンスを提供しています。 彼はテクノロジーに情熱を注いでおり、分析とAI / MLの分野での構築と実験を楽しんでいます。