異常検出:使用するアルゴリズムは?


10

コンテキスト:私は、臨床データを分析して、タイプミスの可能性がある妥当ではないデータを除外するシステムを開発しています。

これまでに行ったこと:

妥当性を定量化するために、これまでの私の試みは、データを正規化し、セットD(=トレーニングセット)の既知のデータポイントまでの距離に基づいてポイントpの妥当性値を計算することでした:

plausibility(p)=qDGauss(distance(p,q))

その定量化により、妥当なデータと妥当でないデータを区別するしきい値を選択できます。私はpython / numpyを使用しています。

私の問題:

  1. このアルゴリズムは、独立した次元を検出できません。理想的には、レコードについて知っていることなら何でもアルゴリズムに入れて、次元Xがレコードの妥当性に影響を及ぼさないことをそれ自体で見つけることができます。
  2. このアルゴリズムは、ブール値や選択入力などの離散値には実際には機能しません。それらは連続値にマッピングできますが、選択1が選択3よりも選択2に近いというのは直観に反しています。

質問:

このタスクにはどのようなアルゴリズムを検討する必要がありますか?最近傍に基づく、クラスタリングに基づく、および統計的アプローチを含む多くのオプションがあるようです。また、この複雑さの異常検出に関する論文を見つけるのも困難です。

アドバイスは大歓迎です。

[編集]例:

データが人の身長、人の体重、タイムスタンプで構成されているとしましょう。つまり、3Dデータです。体重と身長は相関していますが、タイムスタンプは完全に独立しています。ユークリッド距離を考慮する場合、交差検証データのほとんどに適合するように小さなしきい値を選択する必要があります。タイムスタンプは他のディメンションとまったく相関しないため、レコードが妥当であるかどうかを判断することは重要ではないため、アルゴリズムはタイムスタンプディメンションを無視するのが理想的です。どんなタイムスタンプももっともらしいです。

一方、タイムスタンプが重要な例を構成することができます。たとえば、フィーチャXの値Yは、特定の日付より前ではなく特定の日付より後に測定された場合に妥当である可能性があります。


この厄介な(いくつかの!への)質問を扱っているため、stats.stackexchange.com / questions / 97946 / changepoints-in-rに対する私の応答を参照してください。
IrishStat 2014年

stats.stackexchange.com/questions/213あなたが探しているものの一種であること?
whuber

ブール演算でこれを機能させることはできません。
Aksakal 2014年

@whuberよくわかりませんが、無関係な次元を無視する方法はカバーされていないようです。
Georg

1
ちなみに、私が説明したアプローチの正式化を見つけるのにも苦労しています。正式な用語を知っていれば、それも私の研究に役立ちます。このアルゴリズムには、少なくとも独立した/無関係な次元の問題に対処するバリエーションがあるかもしれません。
Georg

回答:


7

mxxip(x)

p(x)=i=1mp(xi;μi,σi2)

xixiN(μi,σi2)

p(x)<ϵ

xixiloglog(xi)xi

q=μ

決定ϵ

ϵF1

F1=2PrecisionRecallPrecision+Recall

しかし、F1を計算するには、何が異常で何が異常でないかを知る必要があります。つまり、真陽性はシステムが異常を予測し、それが実際には異常である場合であり、偽陽性は実際には異常でないと予測される異常などです。したがって、それがなければ、当て推量にフォールバックする必要があるかもしれません。

相関する特徴の問題

mΣ

p(x)=1(2π)m2(detΣ)1/2e12(xμ)TΣ1(xμ)

ϵΣ


多変量ガウス分布を含めて、私はすでにこのアプローチを試しました。実際、無関係な機能は、このアプローチではそれほど問題になりません。私が見つけたのは、このアプローチは複雑なモデルには適していないということです。たとえば、F1とF2の特徴を持つ2Dデータセットがあり、F2 = F1 ^ 3の場合、多変量ガウス分布はデータの周りに楕円を描き、データを大まかにモデル化するだけです。それが私が質問に記載されているアプローチを選んだ理由です(qは1つではなく、多数あります)。
Georg

では、多変量ガウスアプローチを採用して、より複雑なデータモデルを取得するためにそれを適用する方法はありますか?たとえば、この場合、混合モデルが役立ちますか?私はそれらについて私の研究で少し読みましたが、それらをどのように適用するかまだ完全には理解していませんでした。
Georg

(F1,F2)(F1,F21/3)

はい、アンダーフィッティングとは私が言いたいことです。そして、はい、それはうまくいきますが、私はアルゴリズムにそれを自動的に検出させたいです。機能を手動で変更することはできません。どのような場合でも機能するはずです。
Georg

次に例を示します。2つのプロットは、高さ(x軸)と重量(y軸)のデータを表示します(ドイツ語のキャプションは申し訳ありません;))。最初のプロットは多変量ガウスアプローチの結果を示し、2番目のプロットは質問で説明したアプローチの結果を示しています。どちらの場合も、CVデータの97%がもっともらしいと見なされるようにしきい値が選択されました。2番目のアプローチは、データの複雑さをより適切に捉えることができます。1:dl.dropboxusercontent.com/u/26034024/anomaly/gauss.png 2:dl.dropboxusercontent.com/u/26034024/anomaly/distance.png
Georg

3

私はこれらの問題を解決する必要があるプロジェクトをほぼ終了しました。誰かが同じ問題を抱えている場合に備えて、私の解決策を共有したいと思います。

まず、私が説明したアプローチは、カーネル密度推定と非常に似ています。だから、それは研究のために知って良かった...

独立した機能

||x1x2||distance(x1,x2)

警告:相関係数は線形相関のみを測定できます。詳細については、リンクされているWikiページを参照してください。データの相関関係が線形で近似できる場合、これはうまく機能します。そうでない場合は、このペーパーの最後のページを見て、相関関係の測定値を使用してスケーリング係数を作成できるかどうかを確認してください。

離散値

説明したアルゴリズムは、連続値にのみ使用しました。離散値を使用して、トレーニングセットをフィルター処理しました。したがって、私が人の身長と体重を知っていて、彼女が女性であることがわかっている場合、異常をチェックするために他の女性のサンプルのみを調べます。

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