2

私は、次の要件を満たす機械学習アルゴリズムが必要になります。機械学習 - 1つのクラス分類/新規性検出/異常評価?

  • トレーニングデータは、すべての(私は負のデータサンプルを生成することができないと)同じ、「正」のクラスに属する、特徴ベクトルのセットです。
  • テストデータは、正のクラスに属するかどうかに関係なく、いくつかの特徴ベクトルです。
  • 予測値は正のサンプルからの距離を示すはずの連続値でなければなりません(0はテストサンプルが陽性クラスに明確に属していることを意味し、1は明白に負であることを意味しますが0.3はやや正の値を意味します) )

例: ここで、特徴ベクトルは2次元の特徴ベクトルです。

ポジティブトレーニングデータ:

  • (0,1)、(0,2)、(0,3)

試験データ:

  • (0、10 )は異常ではなく、別のものでなければなりません。
  • (1,0)は異常である必要がありますが、(0,10)より高い「ランク」を持つ必要があります。
  • (1,10)は異常である必要があります。さらに高い異常 "ランク"があります。
+0

アイデアは(異常検出におけるような)正例からの「距離」を検討することです。 私は実際に、異常検出アルゴリズムをパーセンテージで探しています(異常の規模は何ですか)。 – ido4848

+0

あなたのデータは何ですか?いくつかのサンプル入力データと結果として期待しているものを提供できますか? – miraculixx

+0

@miraculixx例を追加しました – ido4848

答えて

2

この問題は通常、異常値、異常またはノベルティ検出と呼ばれます。この問題に適用できる多くの手法があります。新規性検出技術の素晴らしい調査はhereで見つけることができます。記事は、技術の徹底的な分類とそれぞれの簡単な説明を与えるが、スタートとして、私は標準的なもののいくつかのリストが表示されます:

  • K-nearest neighbors - その通常のデータサンプルを想定して、単純な距離ベースの方法を他の正常なデータサンプルに近く、新規サンプルは正常な点から遠くに位置する。 KNNのPython実装はScikitLearnにあります。 (例えば、ガウス混合モデル) - データの生成確率密度関数をモデル化する確率モデル、例えば、ガウス分布の混合を使用する。通常のデータサンプルのセットが与えられた場合、目標は確率分布のパラメータを見つけて、サンプルが最もよく記述されるようにすることです。次に、新しいサンプルの確率を使用して、分布に属しているか外れ値であるかを判断します。 ScikitLearnはGaussian Mixture Modelsを実装し、Expectation Maximizationアルゴリズムを使用してそれを学習します。
  • 標準クラスのサポートベクトルマシン(SVM) - 標準サンプルを未知の新規サンプルと分離する境界を見つけることを試みるSVM classifier(古典的アプローチでは、境界は、通常のサンプルと空間の起源、いわゆる「フィーチャ空間」に投影される)。 ScikitLearnの実装はone-class SVMで、簡単に使用できます。exampleです。Iは、1クラスSVMは、「周りの」正常データサンプルを見つけた境界を示すために、その一例のプロットを取り付ける: enter image description here
+0

混合モデルについて、「新しいサンプルの確率を使って分布に属しているのか外れ値なのかを判断する」と言うと、正確にはどのような確率ですか?たとえば、sci-kit GMMのpredict_probaメソッド(http://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html#sklearn.mixture.GaussianMixture)は、1になる確率のベクトルを返します。私は、新規性が、すべての成分に対して非常に低い確率を持つベクトルを返すことを望んでいたので、必ずしも1に合計する必要はありません。 – felipeduque