ニューラルネットワークを使用した異常の検出


12

毎日生成される大規模な多次元データセットがあります。

過去と比較して、あらゆる種類の「異常」を検出するための優れたアプローチは何でしょうか?これは、ニューラルネットワークで対処できる適切な問題ですか?

どんな提案も大歓迎です。

追加情報:例はないため、メソッドは異常自体を検出する必要があります

回答:


12

質問の定式化から、異常(つまりラベル)の「例」はまったくないと仮定します。その仮定では、実行可能なアプローチはオートエンコーダーを使用することです。入力としてデータを受け取り、その同じデータを出力するように訓練されたニューラルネットワーク。これは、トレーニングにより、ネットが潜在変数の形で入力データ分布の表現を学習できるようになったということです。

呼ばれるオートエンコーダのタイプがあるノイズ除去オートエンコーダで訓練され、破損したバージョンの入力として、また、元のデータの破損していない出力として元のデータが。これにより、入力からノイズ(データ破損)を除去できるネットワークが実現します。

毎日のデータでノイズ除去オートエンコーダーをトレーニングできます。次に、新しい日次データで使用します。これにより、元の日次データと、まったく同じデータの破損していないバージョンが得られます。次に、両方を比較して、重要な違いを検出できます。

ここで重要なのは、選択する有意差の定義です。ユークリッド距離を計算し、それが特定の任意のしきい値を超えると異常があると想定できます。もう1つの重要な要素は、導入する破損の種類です。それらは、合理的な異常に可能な限り近いものでなければなりません。

別のオプションは、Generative Adversarial Networksを使用することです。トレーニングの副産物は、正常な毎日のデータと異常なデータを区別する識別ネットワークです。


4

データの性質(カテゴリ/連続)に大きく依存していると思います。最初に簡単な方法から始めます。それらは私の頭に浮かぶ:

  • 分位値または統計的検定を使用して各変数の分布を比較し、それらが有意に異なるかどうかを確認できます。
  • また、各ラベル/カテゴリの出現をカウントし、それらを比較することもできます
  • また、あらゆる種類の距離測定を使用しようとします。たとえば、マハラノビス距離を計算し、大きな変化を探すことができます
  • または、本当にシンプルなもの-新しいデータと古いデータの絶対的な差、しきい値を設定すると、しきい値を超えるすべてが報告されます
  • 相関行列、主成分、クラスタリングなど、いくつかの多次元手法を導入して、変更を探すこともできます

これらのどれも適切でない場合、異常検出に特化した統計/ MLモデルのブランチ全体があります。SVM、t-SNE、分離フォレスト、ピアグループ分析ブレークポイント分析、時系列(傾向以外の外れ値を探す場所)。

これらの方法には、一種のホワイトボックスであるという利点があるため、誰かが異常値である理由を知ることができます。これがあなたの望むものではない場合、他の人たちもANNのアプローチを提案しました。


0

同様の問題を解決しようとしています。データセットにテキストと数値の特徴が混在していますか?そうだとすれば、異常を検出する複雑さが増します(どの要因でわからないのか)。データセットが均一で、たとえば数値のみを含む場合、ラベル付きデータセットが必要なRNNを潜在的に使用できますが、パターンのような時系列を検出できます(前の日の値との比較に言及しているため)


0

Autoencodersを使用してこれを行う簡単な方法(「破損データ」でトレーニングする必要のある「denoising autoencoders」を使用しない)は、オートエンコーダーをトレーニングしてから、正しくデコードされなかった入力(行のRMSEオートエンコーダーの再構築に苦労したこと)。ある定義では、データは異常を表します(確かにこれは、トラフィックの急増などの場合に当てはまります)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.