.NET 用 Azure Cognitive Services Anomaly Detector クライアント ライブラリ - バージョン 3.0.0-preview.7

Anomaly Detectorは、一連の API を備えた AI サービスであり、バッチ検証またはリアルタイム推論など、機械学習 (ML) の知識がほとんどなく、時系列データの異常を監視および検出できます。

ソースコード | パッケージ (NuGet) | API リファレンス ドキュメント | 製品ドキュメント

作業の開始

前提条件

パッケージをインストールする

NuGet を使用して .NET 用 Azure Anomaly Detector クライアント ライブラリをインストールします。

dotnet add package Azure.AI.AnomalyDetector --prerelease

SDK のバージョンとサービスのサポートされる API バージョンの関係を次の表に示します。

SDK バージョン サポートされている API バージョンのサービス
3.0.0-preview.6 1.1
3.0.0-preview.4、3.0.0-preview.5 1.1-preview-1
3.0.0-beta.3 1.1-preview
3.0.0-preview.1、3.0.0-preview.2 1.0

クライアントを認証する

Anomaly Detector サービス リソースのエンドポイントは、Azure Portal または Azure CLI を使用して見つけることができます。

# Get the endpoint for the Anomaly Detector service resource
az cognitiveservices account show --name "resource-name" --resource-group "resource-group-name" --query "properties.endpoint"

API キーを取得する

API キーは、Azure Portal の Anomaly Detector サービス リソースから取得できます。 または、次の Azure CLI スニペットを使用して、リソースの API キーを取得することもできます。

az cognitiveservices account keys list --resource-group <your-resource-group-name> --name <your-resource-name>

AzureKeyCredential を使用して AnomalyDetectorClient を作成する

API キーの値を取得したら、 を作成します AzureKeyCredential。 エンドポイントとキーの資格情報を使用して、 を AnomalyDetectorClient作成できます。

string endpoint = "<endpoint>";
string apiKey = "<apiKey>";
var credential = new AzureKeyCredential(apiKey);
var client = new AnomalyDetectorClient(new Uri(endpoint), credential);

主要な概念

Anomaly Detectorを使用すると、一変量異常検出を使用して 1 つの変数の異常を検出するか、多変量異常検出を使用して複数の変数の異常を検出できます。

特徴量 説明
一変量異常検出 収益やコストなど、1 つの変数の異常を検出します。モデルは、データ パターンに基づいて自動的に選択されています。
多変量異常検出 相関関係を持つ複数の変数の異常を検出します。これは通常、機器やその他の複雑なシステムから収集されます。 使用される基になるモデルは、グラフ アテンション ネットワークです。

一変量異常検出

一変量異常検出 API では、機械学習の知識がなくても、時系列データを監視し、その中の異常を検出できます。 アルゴリズムでは、産業、シナリオ、データ量に関係なく、データに最適なモデルが自動的に特定され、適用されます。 この API では、時系列データを使用し、異常検出の境界、予想される値、異常となるデータ ポイントが判断されます。

Anomaly Detector の使用にあたり、機械学習の経験は必要ありません。REST API によってサービスをアプリケーションやプロセスに簡単に統合できます。

一変量異常検出を使用すると、時系列データ全体、またはリアルタイムで発生する異常を自動的に検出できます。

機能 説明
ストリーミング検出 前に確認されたデータ ポイントを利用し、最新のデータ ポイントが異常であるかどうかを判断することでストリーミング データ内の異常を検出します。 この操作では、送信したデータ ポイントを利用してモデルが生成され、ターゲットのポイントが異常であるかどうかが判断されます。 生成する新しいデータ ポイントで API を呼び出すことで、作成時にデータを監視できます。
バッチ検出 時系列データを使用し、データ全体に存在する可能性がある異常を検出します。 この操作により、時系列データ全体を使用してモデルが生成されます。各ポイントが同じモデルで分析されます。
変更ポイントの検出 時系列データを使用し、データに存在する傾向の変化点を検出します。 この操作により、時系列データ全体を使用してモデルが生成されます。各ポイントが同じモデルで分析されます。

多変量異常検出

多変量異常検出 API を使用すると、機械学習の知識やラベル付けされたデータがなくても、一連のメトリックから異常を検出するための高度な AI を開発者がさらに容易に統合することができます。 最大 300 の異なる信号間の依存関係や相互相関が自動的に主要な要因として考慮されるようになりました。 この新しい機能を使用すると、ソフトウェア アプリケーション、サーバー、工業用機械、宇宙船、さらにユーザーのビジネスなどの複雑なシステムを障害から予防的に保護することができます。

多変量異常検出を使用すると、時系列データ全体、またはリアルタイムで発生する異常を自動的に検出できます。 多変量異常検出を使用するには、3 つのプロセスがあります。

  • トレーニング: モデルのトレーニング API を使用してモデルを作成およびトレーニングした後、Get Model Status API を使用して状態とモデルメタデータを取得します。
  • 推論:
    • 非同期推論 API を使用して非同期推論プロセスをトリガーし、Get Inference results API を使用してデータのバッチで検出結果を取得します。
    • 同期推論 API を使用して、毎回 1 つのタイムスタンプで検出をトリガーすることもできます。
  • その他の操作: モデル管理の多変量異常検出モデルでは、List Model API と Delete Model API がサポートされています。

スレッド セーフ

すべてのクライアント インスタンス メソッドがスレッド セーフであり、相互に独立していることを保証します (ガイドライン)。 これにより、クライアント インスタンスの再利用に関する推奨事項は、スレッド間でも常に安全になります。

その他の概念

クライアント オプション | 応答 | へのアクセス実行時間の長い操作 | エラーの | 処理診断 | あざける | クライアントの有効期間

次のセクションでは、次のような最も一般的なAnomaly Detector サービス タスクをカバーするいくつかのコード スニペットを示します。

バッチ検出

//detect
Console.WriteLine("Detecting anomalies in the entire time series.");

try
{
    UnivariateEntireDetectionResult result = client.DetectUnivariateEntireSeries(request);

    bool hasAnomaly = false;
    for (int i = 0; i < request.Series.Count; ++i)
    {
        if (result.IsAnomaly[i])
        {
            Console.WriteLine($"An anomaly was detected at index: {i}.");
            hasAnomaly = true;
        }
    }
    if (!hasAnomaly)
    {
        Console.WriteLine("No anomalies detected in the series.");
    }
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"Entire detection failed: {ex.Message}");
    throw;
}
catch (Exception ex)
{
    Console.WriteLine($"Detection error. {ex.Message}");
    throw;
}

ストリーミング検出

//detect
Console.WriteLine("Detecting the anomaly status of the latest point in the series.");

try
{
    UnivariateLastDetectionResult result = client.DetectUnivariateLastPoint(request);

    if (result.IsAnomaly)
    {
        Console.WriteLine("The latest point was detected as an anomaly.");
    }
    else
    {
        Console.WriteLine("The latest point was not detected as an anomaly.");
    }
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"Last detection failed: {ex.Message}");
    throw;
}
catch (Exception ex)
{
    Console.WriteLine($"Detection error. {ex.Message}");
    throw;
}

変更ポイントを検出する

//detect
Console.WriteLine("Detecting the change point in the series.");

UnivariateChangePointDetectionResult result = client.DetectUnivariateChangePoint(request);

if (result.IsChangePoint.Contains(true))
{
    Console.WriteLine("A change point was detected at index:");
    for (int i = 0; i < request.Series.Count; ++i)
    {
        if (result.IsChangePoint[i])
        {
            Console.Write(i);
            Console.Write(" ");
        }
    }
    Console.WriteLine();
}
else
{
    Console.WriteLine("No change point detected in the series.");
}

多変量異常検出のサンプル

Anomaly Detector ライブラリを使用して多変量異常検出を実行する方法については、このサンプルを参照してください。

トラブルシューティング

コンソール ログの設定

ログを表示する最も簡単な方法は、コンソール ログを有効にすることです。 コンソールにメッセージを出力する Azure SDK ログ リスナーを作成するには、AzureEventSourceListener.CreateConsoleLogger メソッドを使用します。

// Setup a listener to monitor logged events.
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();

その他のログメカニズムの詳細については、「 診断サンプル」を参照してください。

次のステップ

これらのコード サンプルは、Azure Anomaly Detector ライブラリでの一般的なシナリオ操作を示しています。 その他のサンプルは、 samples ディレクトリにあります。

その他のドキュメント

Azure Anomaly Detectorに関するより広範なドキュメントについては、docs.microsoft.com に関するAnomaly Detectorドキュメントを参照してください

共同作成

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、「 cla.microsoft.com」を参照してください。

pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。