Pythonによる時系列異常検出


9

いくつかの時系列データセットに異常検出を実装する必要があります。私はこれまでにこれをやったことがなく、いくつかのアドバイスを期待していました。私はpythonに非常に慣れているので、ソリューションを実装することを好みます(私のコードのほとんどは、私の作業の他の部分ではpythonです)。

データの説明:過去2年間(つまり24-36期間のみ)に収集され始めたばかりの月次時系列データです。基本的に、複数のクライアントについて月ごとに監視されるいくつかのメトリックがあります。

time_period    client    metric    score
01-2013        client1   metric1   100
02-2013        client1   metric1   119
01-2013        client2   metric1   50
02-2013        client2   metric2   500
...

これが私が考えていることです:データをデータフレーム(パンダ)に取り込み、各クライアント/メトリックのペアのローリング6か月の平均を計算します。現在の期間の値が6か月平均に基づくしきい値を超える場合は、フラグを立てます。問題はかなり単純なようです。しっかりとしたアプローチを取っていることを確認したいだけです。

このアイデアを少し具体化するためのアドバイスをいただければ幸いです。質問が少し抽象的であることを知っています。それをお詫びします。


私は、Pythonの道を知らないが、この質問は、一般的な方法についてのアイデアがいっぱいです:stats.stackexchange.com/questions/26688/...
rapaio

pypi.org/project/anomaly-detectionこれは、pythonでの異常検出用のライブラリに組み込まれており、twitterの異常検出に似ています。ツイッター異常検知コードはR言語なので。あなたの問題は文脈の異常です。Auto.arimaモデルも
saravanan saminathan

回答:


1

ここでは、管理図などを使用した、統計的工程管理と同様のアプローチが役立つと思います。


これを読みます。この方法は、データ量が少ない(つまり24か月)時系列に適していますか?
Eric Miller

それのほとんどを読み終えました。この方法では、時系列の3番目の標準偏差を計算し、これらの限界値を線でグラフ化する必要があります。値がこれらの制限を超えた場合は、フラグを立てます。これは私が考えていた方法です。
Eric Miller

1

異常検出には、Pandasの標準偏差関数を使用した標準偏差から、ベイジアン法や、クラスタリング、SVM、ガウスプロセス、ニューラルネットワークなどの多くの機械学習法まで、さまざまなオプションがあります。

このチュートリアルをご覧くださいhttps : //www.datascience.com/blog/python-anomaly-detection

ベイジアンの観点から、私はFacebook Prophetをお勧めします。時系列の専門家でなくても、非常に高度な結果が得られます。これには、月、日などを操作するためのオプションがあり、「不確実性の間隔」が異常を助けます。

最後に、異常検出にニューラルネット(LSTM)を使用することについて、このUberブログをお勧めします。非常に多くの商品に関する洞察があります。https://eng.uber.com/neural-networks/


0

データセットが正常に分布していると想定しても構わない場合は、この分布の分位数を推定して、95%、80%などの分位数の範囲外かどうかを確認できます。私はPythonライブラリに慣れていませんが、そのための関数がすでに構築されていると確信しています。


ほとんどのクライアントに上昇傾向があります。データをランダムに呼び出すことができるかどうかはわかりません。
Eric Miller

2
この場合は、いいえ。私とあなたの下の方法がこの状況でうまく機能すると私は信じています。以前と同様のことを行いました。ローリングX期間の移動平均を取り、移動平均から現在のメトリック値を差し引きます。これらの残差の標準偏差の境界を見つける(または、このシナリオで偶然知っている場合は主観的な入力を使用します)。これらの境界の上下にあるものはすべて異常と見なすことができます。この方法は、クライアントがスコアの増加を突然見た場合にうまく機能します。
Kevin Pei
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.