

# AWS Glue Data Quality での異常検出
<a name="data-quality-anomaly-detection"></a>

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/IWHzrupqlGM/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/IWHzrupqlGM)




 エンジニアは数百ものデータパイプラインを同時に管理します。各パイプラインはさまざまなソースからデータを抽出し、データレイクまたはその他のデータリポジトリに読み込むことができます。意思決定に役立つ高品質のデータが配信されるように、データ品質ルールを確立します。これらのルールは、現在のビジネス状態を反映した一定の基準に基づいてデータを評価します。ただし、ビジネス環境が変わると、データプロパティがシフトするため、これらの基準が古くなり、データ品質が低下します。

 例えば、ある小売会社のデータエンジニアが、日次売上が 100 万 USD のしきい値を超えなければならない、という日次売上の検証ルールを設定したとします。その数か月後、日次売上高は 200 万 USD を超えたため、元のしきい値は適切な数値ではなくなりました。データエンジニアは、通知がなく、ルールを手動で分析および更新するために必要な労力が不足していたため、最新のしきい値を反映するルールへ更新ができませんでした。同月後半、ビジネスユーザーたちは売上が 25% 減少していることに気付きました。数時間の調査の結果、データエンジニアは、一部のストアからデータを抽出する ETL パイプラインが、エラーを生成せずに故障していたことを発見しました。ところが古いしきい値で確立したルールは正常に動作し続け、この問題を検出しませんでした。

 あるいは、これらの異常を検出できるプロアクティブアラートがあれば、ユーザーがこの問題を検出できた可能性があります。さらに、ビジネスの季節性を追跡すると、データ品質に関する重大な問題が浮き彫りになったでしょう。例えば、小売売上は週末や祝祭日が最も高く、平日だと比較的低いと考えられます。このパターンからの逸脱は、データ品質の問題やビジネス状況の変化を示している可能性があります。データ品質ルールは、季節性をキャプチャして偏差を検出するために過去のパターンから学習できる高度なアルゴリズムが必要なため、季節性パターンを検出することはできません。

 最後に、ルール作成プロセスの技術的な性質とルール作成にかかる時間が要因となり、ユーザーがルールの作成と維持を行うのは困難です。そのため、ユーザーはルールを定義する前に、まずデータインサイトを調べることを好みます。顧客は異常を簡単に特定できる能力が必要であり、それがあればデータ品質の問題をプロアクティブに検出して、自信を持ってビジネス上の意思決定を行うことができます。

## 仕組み
<a name="data-quality-anomaly-detection-how-it-works"></a>

**注記**  
 異常検出は AWS Glue ETL でのみサポートされています。これは、Data Catalog ベースのデータ品質ではサポートされていません。

![\[スクリーンショットは、Data Quality の異常検出プロセスを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-quality-anomaly-detection-process.png)


 AWS Glue Data Quality は、ルールベースのデータ品質と異常検出機能を組み合わせて、高品質のデータを提供します。開始するには、まずルールとアナライザーを設定し、異常検出を有効にする必要があります。

### ルール
<a name="data-quality-anomaly-rules"></a>

 **ルール** - ルールは、データに対する期待値を、データ品質定義言語 (DQDL) と呼ばれるオープン言語で表します。次にルールの例を示します。このルールは、「passenger\$1count」列に空の値または NULL 値がない場合に成功します。

```
Rules = [
    IsComplete "passenger_count"
]
```

### アナライザー
<a name="data-quality-anomaly-analyzers"></a>

 重要な列については理解しているが、特定のルールを書くためのデータについてよくわからない場合は、アナライザーを使用してそれらの列をモニタリングできます。アナライザーは、明示的なルールを定義せずにデータ統計を収集する方法です。アナライザーの設定例を以下に示します。

```
Analyzers = [
AllStatistics "fare_amount",
DistinctValuesCount "pulocationid",
RowCount
]
```

 この例では、3 つのアナライザーが設定されています: 

1.  最初のアナライザー `AllStatistics "fare\$1amount"` は、`fare\$1amount` フィールドで使用可能なすべての統計をキャプチャします。

1.  2 番目のアナライザー `DistinctValuesCount "pulocationid"` は、`pulocationid` 列の個別の値の数をキャプチャします。

1.  3 番目のアナライザー `RowCount` は、データセット内のレコードの総数をキャプチャします。

 アナライザーは、複雑なルールを指定せずに関連するデータ統計を収集するシンプルな方法として役立ちます。これらの統計をモニタリングすることで、データ品質に関するインサイトを得て、さらなる調査や特定のルールの作成が必要になる可能性のある潜在的な問題や異常を特定できます。

### データ統計
<a name="data-quality-anomaly-data-statistics"></a>

 AWS Glue Data Quality のアナライザーとルールはどちらも、データ統計 (データプロファイルとも呼ばれる) を収集します。これらの統計は、データの特性と品質に関するインサイトを提供します。収集された統計は AWS Glue サービス内に経時的に保存されるため、データプロファイルの変更を追跡および分析できます。

 適切な API を呼び出すことで、これらの統計を簡単に取得してさらなる分析ができるほか、Amazon S3 に書き込むことで長期間保管できます。この機能を使用すると、データ処理ワークフローにデータプロファイリングを統合し、収集された統計をデータ品質モニタリング、異常検出など、さまざまな目的のために活用できます。

 データプロファイルを Amazon S3 に保存することで、Amazon のオブジェクトストレージサービスのスケーラビリティ、耐久性およびコスト効率を活用できます。さらに、他の AWS サービスやサードパーティーのツールを使用してデータプロファイルを分析および視覚化できるため、データ品質に関するより深いインサイトを得て、データ管理とガバナンスについて情報に基づいた意思決定を行うことができます。

 次は、経時的に保存されるデータ統計の例です。

![\[このスクリーンショットは、経時的なデータ品質統計の折れ線グラフを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-quality-data-statistics-over-time.png)


**注記**  
 AWS Glue Data Quality は、同じ列に **[ルール]** と **[アナライザー]** の両方がある場合でも、統計を 1 回だけ収集するため、統計の生成プロセスが効率的になります。

### 異常検出
<a name="data-quality-anomaly-observation-detection"></a>

 AWS Glue Data Quality では、異常を検出するために最低 3 つのデータポイントが必要です。機械学習アルゴリズムを使用して過去の傾向から学習し、将来の値を予測します。実際の値が予測範囲内にない場合、AWS Glue Data Quality は異常観測を作成します。実際の値と傾向が視覚的に表示されます。以下のグラフには 4 つの値が表示されます。

![\[このスクリーンショットは、データ品質異常検出イベントの経時的な折れ線グラフを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-quality-anomaly-detection-trend.png)


1.  経時的に表された実際の統計とその傾向。

1.  実際の傾向から学習することによって導出された傾向。傾向の方向性を理解するのに役立ちます。

1.  統計の上限可能値。

1.  統計の下限可能値。

1.  これらの問題を将来検出できる推奨データ品質ルール。

 異常に関して注意すべき重要な点がいくつかあります: 
+  異常が生成されても、データ品質スコアは影響されません。
+  異常が検出されると、その後の実行では正常と見なされます。機械学習アルゴリズムは、明示的に除外されない限り、この異常値を入力と見なします。

### 再トレーニング
<a name="data-quality-anomaly-detection-retraining"></a>

 適切な異常を検出するには、異常検出モデルの再トレーニングが不可欠です。異常が検出されると、AWS Glue Data Quality はこの異常をモデルに通常の値として含めます。異常検出を正確に機能させるには、異常を承認または拒否してフィードバックを提供することが重要です。AWSGlue Data Quality では、モデルにフィードバックを提供するためのメカニズムが、AWS Glue Studio と API の両方で提供されています。詳細については、[AWS Glue ETL パイプラインでの異常検出](data-quality-configuring-anomaly-detection-etl-jobs.md)の設定に関するドキュメントを参照してください。

## 異常検出アルゴリズムの詳細
<a name="data-quality-anomaly-detection-algorithm"></a>
+  異常検出アルゴリズムは、経時的なデータ統計を調べます。このアルゴリズムは、使用可能なすべてのデータポイントを考慮し、明示的に除外された統計を無視します。
+  これらのデータ統計は AWS Glue サービスに保存され、暗号化するための AWS KMS キーを指定できます。AWS Glue Data Quality 統計を暗号化するための AWS KMS キーの提供方法については、「セキュリティガイド」を参照してください。
+  時間コンポーネントは異常検出アルゴリズムにとって不可欠です。AWS Glue Data Quality は、過去の値に基づいて上限と下限を決定します。この値を決定するうえで、時間コンポーネントが考慮されます。同じ値でも、1 分間隔、1 時間間隔、または 1 日間隔では制限が異なります。

### 季節性の取得
<a name="data-quality-anomaly-capturing-seasonality"></a>

 AWS Glue Data Quality の異常検出アルゴリズムは、季節的なパターンをキャプチャできます。例えば、平日のパターンは週末のパターンとは異なることを理解できます。これは以下の例で確認できます。ここでは、AWS Glue Data Quality がデータ値の季節的な傾向を検出しています。この機能を有効にするために何か特定のことを行う必要はありません。時間の経過とともに、AWS Glue Data Quality は季節的な傾向を学習し、これらのパターンが破られたときに異常を検出します。

![\[このスクリーンショットで示されるデータ品質タブには、季節的な傾向をキャプチャする際の異常を示すデータが含まれています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/data-quality-capturing-seasonality.png)


### コスト
<a name="data-quality-anomaly-detection-cost"></a>

 異常の検出にかかる時間に基づいて料金が課金されます。統計ごとに 1 DPU の料金が発生し、異常の検出にかかる時間に対して課金されます。詳細な例については、「[AWS Glue の料金](https://aws.amazon.com/glue/pricing/)」を参照してください。

### 主な考慮事項
<a name="data-quality-anomaly-detection-considerations"></a>

 統計の保存に対して料金は発生しません。ただし、アカウントごとに保存できる統計は 100,000 に制限されています。これらの統計は最大 2 年間保存されます。