13

バックグラウンド

ここに問題があります:

  1. ブラックボックスは毎日新しい番号を出力します。
  2. これらの数値は一定期間記録されています。
  3. ブラックボックスからの新しい番号が、期間中に確立された番号のパターンから外れることを検出します。

数値は整数で、期間は1年です。

質問

どのアルゴリズムが数字のパターンを識別しますか?

パターンは、常に昇順または常に降順のように単純な場合もあれば、数値が狭い範囲内にある場合もあります。

アイデア

私にはいくつかのアイデアがありますが、最善のアプローチ、またはどのような解決策がすでに存在するかについては不明です。

  • 機械学習アルゴリズム?
  • 神経網?
  • 正常な数値と異常な数値を分類しますか?
  • 統計分析?
4

3 に答える 3

5

データをクラスター化します

データに含まれるモードの数がわからない場合は、ガウス混合モデル (GMM) のようなものをスコアリング関数 (ベイジアン情報量基準 (BIC) など) とともに使用して、クラスターの可能性の高い数を自動的に検出できるようにします。あなたのデータ。どのような値になる可能性があるかわからない場合は、k-means の代わりにこれをお勧めkします。過去 1 年間のデータの GMM を構築したら、新しい datapointxを指定すると、それがクラスターのいずれかによって生成された確率を計算できます (GMM のガウスによってモデル化されます)。新しいデータ ポイントがクラスターのいずれかによって生成される可能性が低い場合、それは真の外れ値である可能性が非常に高くなります。

これが少し複雑に聞こえる場合は、自動クラスター識別のための GMM + BIC 手順全体がRの優れた MCLUSTパッケージに実装されていることを知って喜んでください。私はそのような問題に大きな成功を収めるために何度か使用しました。

外れ値を特定できるだけでなく、ある時点でこの機能が必要な場合 (または必要な場合) に、外れ値であるポイントに p 値を設定することができます。

于 2010-09-29T01:27:39.847 に答える
3

線形回帰を使用してライン フィッティング予測を試してみて、それがどのようになるかを確認できます。選択した言語で実装するのはかなり簡単です。データに線を当てはめた後、線に沿って平均標準偏差を計算できます。新規ポイントがトレンド ライン+ - 標準偏差上にある場合は、異常とは見なされません。

PCAは、このタイプのデータを扱うときに頭に浮かぶ別の手法です。

また、教師なし学習を調べることもできます。これは、より大きなデータセットの違いを検出するために使用できる機械学習手法です。

楽しい問題ですね!幸運を

于 2010-09-23T08:51:39.727 に答える
3

あなたが言及したすべてのテクニックには魔法はほとんどありません。最初に、遭遇する可能性のある典型的な異常を絞り込むことを試みる必要があると思います。これは、物事を単純に保つのに役立ちます.

次に、それらの機能に関連する派生量を計算することができます。例: 「急に方向が変わる数値を検出したい」 => u_{n+1} - u_n を計算し、一定の符号を持つか、ある範囲に収まることを期待します。これを柔軟に保ち、コード設計を拡張できるようにしたい場合があります (OOP を行う場合は、戦略パターンを検討する価値があります)。

次に、関心のある派生量がある場合は、それらに対して統計分析を行います。たとえば、派生量 A の場合、分布 P(a, b) (uniform([a, b])、または Beta(a, b)、おそらくもっと複雑) が必要であると仮定し、先験的な法則を置きます。 a、b で、連続する情報に基づいてそれらを調整します。次に、追加された最後のポイントによって提供される情報の事後尤度により、それが正常かどうかについての洞察が得られるはずです。各ステップでの事後法則と事前法則の間の相対エントロピーも監視するのに適しています。詳細については、ベイズ法に関する本を参照してください。

外れ値を検出したい場合、複雑な従来の機械学習 (パーセプトロン層または SVM のみを引用する) にはほとんど意味がありません。これらの方法は、適度にクリーンであることがわかっているデータを分類する場合に効果的です。

于 2010-09-23T09:27:04.173 に答える