11

私は大量の時系列を扱っています。これらの時系列は、基本的に 10 分ごとに取得されるネットワーク測定値であり、定期的なもの (帯域幅など) とそうでないもの (ルーティング トラフィックの量など) があります。

オンラインの「外れ値検出」を行うための簡単なアルゴリズムが欲しいです。基本的に、各時系列の履歴データ全体をメモリ (またはディスク) に保持し、ライブ シナリオで異常値を検出したいと考えています (新しいサンプルがキャプチャされるたびに)。これらの結果を達成するための最良の方法は何ですか?

現在、ノイズを除去するために移動平均を使用していますが、次はどうすればよいでしょうか? 標準偏差、狂気などの単純なものは、データセット全体に対してうまく機能しません (時系列が定常的であるとは想定できません)。より「正確」なもの、理想的には次のようなブラックボックスが必要です。

double outlier_detection(double* vector, double value);

ここで、 vector は、履歴データを含む double の配列であり、戻り値は、新しいサンプル "value" の異常スコアです。

4

2 に答える 2

9

これは大きくて複雑なテーマであり、その答えは、(a) これにどれだけの労力を投資したいか、(b) 外れ値検出をどれだけ効果的にしたいかによって異なります。考えられるアプローチの 1 つは、適応フィルタリングです。これは通常、ノイズ キャンセリング ヘッドフォンなどのアプリケーションに使用されます。入力信号に常に適応するフィルタがあり、そのフィルタ係数を信号源の仮想的な短期モデルに効果的に一致させることで、平均二乗誤差出力。これにより、外れ値が発生した場合を除いて、低レベルの出力信号 (残留誤差)が得られます。これにより、スパイクが発生し、検出が容易になります (しきい値)。適応フィルタリングLMS フィルターについて読むなど、この種のテクニックに真剣に取り組んでいる場合。

于 2010-08-02T18:13:45.327 に答える
1

以下のスキームをお勧めします。これは 1 日ほどで実装できるはずです。

トレーニング

  • メモリに保持できる限り多くのサンプルを収集します
  • 各属性の標準偏差を使用して、明らかな外れ値を削除します
  • 相関行列と各属性の平均を計算して保存します
  • すべてのサンプルのマハラノビス距離を計算して保存します

「外れ値」の計算:

その「外れ値」を知りたい単一のサンプルの場合:

それが外れ値スコアになります。100% は極端な外れ値です。


PS。マハラノビス距離の計算では、共分散行列ではなく相関行列を使用します。サンプルの測定値の単位と数が異なる場合、これはより堅牢です。

于 2016-11-24T11:09:47.757 に答える