私は、電子メール、IMなどのさまざまな形式のデータから機械学習アルゴリズムを使用して異常(既知または未知)を検出する任務を負っています。
お気に入りの最も効果的な異常検出アルゴリズムは何ですか?
それらの制限とスイートスポットは何ですか?
これらの制限にどのように対処することをお勧めしますか?
すべての提案は非常に高く評価されています。
私は、電子メール、IMなどのさまざまな形式のデータから機械学習アルゴリズムを使用して異常(既知または未知)を検出する任務を負っています。
お気に入りの最も効果的な異常検出アルゴリズムは何ですか?
それらの制限とスイートスポットは何ですか?
これらの制限にどのように対処することをお勧めしますか?
すべての提案は非常に高く評価されています。
ベイジアンフィルターのような統計フィルターや、一部のスパムフィルターで採用されているいくつかの卑劣なバージョンは簡単に実装できます。さらに、それに関するオンラインドキュメントがたくさんあります。
大きな欠点は、未知のものを実際に検出できないことです。既知のデータの大規模なサンプルを使用してトレーニングし、新しい着信データを分類できるようにします。ただし、従来のスパムフィルターを逆さまにすることができます。不正なデータではなく正当なデータを認識するようにトレーニングして、認識されないものが異常になるようにします。
データのタイプと解決しようとしている問題に応じて、さまざまなタイプの異常検出アルゴリズムがあります。
時系列信号の異常:時系列信号は、時間の経過とともに折れ線グラフとして描画できるものです(たとえば、CPU使用率、温度、電子メール数の1分あたりの割合、Webページの訪問者の割合など)。アルゴリズムの例としては、Holt-Winters、ARIMAモデル、マルコフモデルなどがあります。私は数ヶ月前にこのテーマについて話をしました-それはあなたにアルゴリズムとそれらの制限についてのより多くのアイデアを与えるかもしれません。ビデオは次の場所にあります:https ://www.youtube.com/watch?v = SrOM2z6h_RQ
表形式データの異常:これらは、何かを説明する特徴ベクトルがある場合です(たとえば、電子メールを、それを説明する特徴ベクトルに変換します:受信者の数、単語の数、大文字の単語の数、キーワードの数など)。 ..)。このような特徴ベクトルのセットが大きい場合、残りの部分と比較して異常なものを検出する必要があります(「外れ値検出」と呼ばれることもあります)。これらの場合、ほとんどすべてのクラスタリングアルゴリズムが適していますが、どちらが最適かは、機能のタイプとその動作(実数値の機能、通常、名目、その他)によって異なります。機能のタイプによって、特定の距離関数が適切かどうかが決まり(ほとんどのクラスタリングアルゴリズムの基本要件)、一部のアルゴリズムは、特定のタイプの機能で他のアルゴリズムよりも優れています。試すのが最も簡単なアルゴリズムはk-meansクラスタリングです。この場合、異常サンプルは非常に小さいクラスターか、すべてのクラスター中心から遠く離れたベクトルになります。片側SVMは外れ値も検出でき、さまざまなカーネル(および事実上さまざまな距離関数)を選択できる柔軟性があります。もう1つの人気のあるアルゴはDBSCANです。
(免責事項:私は、時系列データのリアルタイム異常検出を行う商業会社であるAnodotのチーフデータサイエンティストです)。