多次元時系列から30分前のイベントを予測するモデルをトレーニングする方法


9

私の分野の専門家は、イベント(黄色のバイナリスパイク)が発生する 30分前に、その可能性を予測できます。ここでの頻度は1秒です。このビューは数時間分のデータを表します「悪意のある」パターンがあるはずの箇所を黒く囲んでいます。次元間に相互作用が存在するため、次元を個別に調査することはできません(またはそれらを検討できますか?)

ここに画像の説明を入力してください

私はScikit Learn 使用して監視された MLモデルを構築しようとしています。これは、通常のリズムを学習し、症状がスパイクにつながる可能性がある場合を検出します。私はどちらの方向を取るか迷っています。私は異常検出を試しましたが、それはその場検出でのみ機能し、以前は機能しませんでした。

それらのイベントの前に「悪意のある」パターンを検出するにはどうすればよいですか(ターゲット変数としてそれらを取得します)?

どのアルゴリズムまたはデータ処理パイプラインが役立つかについてのアドバイスを歓迎します。ありがとうございました:)


これらは脳波ですか?
JahKnows 2017

回答:


9

これは面白い問題です。これは時系列であり、この時系列から特定のイベントのトリガーを特定する必要があります。したがって、これはバイナリ分類問題です。指定されたウィンドウからの情報に基づいて、スパイクは発生しますか?はい、もしくは、いいえ。

最初のステップは、データベースをセットアップすることです。あなたが持つことになるのは一連のインスタンス(重複する可能性がありますが、バイアスを避けるために、それらを個別に描画するのが最善です)であり、その後、各インスタンスについて、スパイクがあったかどうかがないかを人間がラベル付けする必要がありますスパイク。

次に、時系列分析に使用する時間枠を特定する必要があります。これを完了し、30分が良いスタートだと判断しました。

これで、30分のウィンドウに6つの波形があり、そこからデータを抽出して分類に関する情報を取得できます。生データのサンプルを機能として使用できますが、これは機能が多すぎて結果が悪くなります。したがって、いくつかの特徴抽出次元削減、手法が必要です。

これらの波形からデータを抽出するには、100万通りの方法があります。最初に、スパイクが発生することを意味するこれらの他の波形が持っているべきである証拠となる兆候は何であるかを人間として考えてください。たとえば、地震データで、隣接する町からの波形に動揺が見られる場合、まもなくあなたの町に動揺が見られるはずです。

一般に、私は波形からすべての基本的な統計抽出するのが好きです。平均、標準偏差、変動指数などを取得します。役立つと思われるものをすべて取得します。これらの統計がラベルとどのように相関しているかを確認してください。相関が高いほど、それらはより良くなる可能性があります。次に、時系列から時間と頻度の情報を抽出するためのいくつかの非常に優れた手法があります。見て封筒モード分解経験的モード分解。一部の時系列データで経験的モード分解をうまく使用して、予想よりもはるかに良い結果が得られました。

今、あなたはあなたの縮小された機能スペースを持っているにもかかわらず、あなたはより良くできる!PCALDAなどのいくつかの次元削減手法を適用して、データをより適切に表現できる低次元空間を取得できます。これは役立つかもしれませんが、保証はありません。

これで、30分のウィンドウ全体で6つの波形を表すフランケンシュタイン調合であるインスタンスを含む小さなデータセットができました。これで、分類子を選択する準備が整いました。幸いなことに、これは最も一般的なバイナリ分類アルゴリズムが必要です。から選択する多くがあります。選ぶ方法は?


インスタンスはいくつありますか?

staces>100featあなたres

次に、ニューラルネットワーク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/

一般化された尤度比検定などのより基本的な異常検出手法を使用することもできます。しかし、これは一種の古い学校です。


すばらしいウォークスルー、あなたのレベルの詳細に感謝します。ここに示されている時系列はすでに元の機能の選択であり、たとえばローリング平均を使用して人間の目で「視覚化」できます。「生の」データフィードは、約50の機能と100万ほどのインスタンスで構成されています。それが私をディープラーニング技術に導いたと思います!私は特徴抽出に飛び込んでいます、そして私の旅の結果をここに間違いなく投稿します:)
ウィリアムD

うん、それは私たちが投稿しておくのは素晴らしいことだろう。50の機能と100万のインスタンスがある場合。最初にニューラルネットワークに移行します。非常に多くのパッケージが既に存在するため(例:PythonのKeras)、コーディングが最も簡単です。また、PCAとLDAを試して、機能スペースをより代表的なものに変換します。
JahKnows、2017

0

ボックス化したパターンを「キャッチ」するトレーニングデータに変数を作成し、「悪意が見つかりました」または「悪意が見つかりません」というターゲット変数を持つように、特徴抽出または特徴エンジニアリングを行う必要があります。

本当に簡単な例を挙げましょう。雨が降るかどうかを予測します。次の30分間は、雨が突然曇り、気圧が下がった場合に30分ごとにチェックする、かなり良い雨の予測因子を思いつく可能性があります。

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