これは面白い問題です。これは時系列であり、この時系列から特定のイベントのトリガーを特定する必要があります。したがって、これはバイナリ分類問題です。指定されたウィンドウからの情報に基づいて、スパイクは発生しますか?はい、もしくは、いいえ。
最初のステップは、データベースをセットアップすることです。あなたが持つことになるのは一連のインスタンス(重複する可能性がありますが、バイアスを避けるために、それらを個別に描画するのが最善です)であり、その後、各インスタンスについて、スパイクがあったかどうかがないかを人間がラベル付けする必要がありますスパイク。
次に、時系列分析に使用する時間枠を特定する必要があります。これを完了し、30分が良いスタートだと判断しました。
これで、30分のウィンドウに6つの波形があり、そこからデータを抽出して分類に関する情報を取得できます。生データのサンプルを機能として使用できますが、これは機能が多すぎて結果が悪くなります。したがって、いくつかの特徴抽出、次元削減、手法が必要です。
これらの波形からデータを抽出するには、100万通りの方法があります。最初に、スパイクが発生することを意味するこれらの他の波形が持っているべきである証拠となる兆候は何であるかを人間として考えてください。たとえば、地震データで、隣接する町からの波形に動揺が見られる場合、まもなくあなたの町に動揺が見られるはずです。
一般に、私は波形からすべての基本的な統計を抽出するのが好きです。平均、標準偏差、変動指数などを取得します。役立つと思われるものをすべて取得します。これらの統計がラベルとどのように相関しているかを確認してください。相関が高いほど、それらはより良くなる可能性があります。次に、時系列から時間と頻度の情報を抽出するためのいくつかの非常に優れた手法があります。見て封筒モード分解と経験的モード分解。一部の時系列データで経験的モード分解をうまく使用して、予想よりもはるかに良い結果が得られました。
今、あなたはあなたの縮小された機能スペースを持っているにもかかわらず、あなたはより良くできる!PCAやLDAなどのいくつかの次元削減手法を適用して、データをより適切に表現できる低次元空間を取得できます。これは役立つかもしれませんが、保証はありません。
これで、30分のウィンドウ全体で6つの波形を表すフランケンシュタイン調合であるインスタンスを含む小さなデータセットができました。これで、分類子を選択する準備が整いました。幸いなことに、これは最も一般的なバイナリ分類アルゴリズムが必要です。から選択する多くがあります。選ぶ方法は?
インスタンスはいくつありますか?
#iがN 、S 、T 、A 、N C E S > 100 * #Fe a t u r e s
次に、ニューラルネットワーク、1D畳み込みニューラルネットワーク、積み重ねられた自動エンコードなどのディープラーニング手法を使用する準備がすべて整います。
それより少ない!!!!
あなたは浅い方法に固執する必要があります。カーネルサポートベクターマシン、ランダムフォレスト、k最近傍などを確認してください。
よくある誤解:機能を適切に選択していれば、浅い方法のCANおよびWILLはディープラーニングテクニックよりもパフォーマンスが優れています。特徴抽出は、機械学習アーキテクチャの最も重要な側面です。
異常検知を利用したい!
これも機能し、これを行うにはいくつかの良いテクニックがあります。ただし、異常検出の性質は、名目ケースの分布を学習することです。したがって、急上昇を引き起こさなかったデータセット内のすべてのインスタンスをアルゴリズムにフィードします。次に、これから、アルゴリズムは、新規インスタンスがこの名目上の分布と大幅に異なる場合を識別でき、異常としてフラグを立てます。これは、コンテキストでスパイクが発生することを意味します。
チェックアウト:
最小ボリュームセットの学習
http://www.stat.rice.edu/~cscott/pubs/minvol06jmlr.pdf
最近傍グラフに基づくスコア関数による異常検出
https://arxiv.org/abs/0910.5461
異常検出のP値推定の新しい統計
http://ieeexplore.ieee.org/document/6319713/
一般化された尤度比検定などのより基本的な異常検出手法を使用することもできます。しかし、これは一種の古い学校です。