datawhaletask2異常検出-統計的手法

主な内容は次のとおりです。

  • ガウス分布
  • 箱ひげ図

1。概要

統計的手法は、データの正規性について仮定を立てます。**通常のデータオブジェクトは統計モデルによって生成され、モデルに準拠していないデータは異常なポイントであると想定しています。**統計手法の有効性は、特定のデータに対して行われた統計モデルの仮定が正しいかどうかに大きく依存します。

2.パラメータ方式

2.1正規分布に基づく単項外れ値の検出

1つの属性または変数のみを含むデータは、単項データと呼ばれます。データは正規分布で生成されていると仮定し、入力データから正規分布のパラメーターを学習し、確率の低い点を異常点として特定することができます。

しきい値は経験値であり、検証セットの評価指標値を最大化するしきい値(つまり、最良の効果)を最終しきい値として選択できます。

たとえば、一般的に使用される3シグマの原理では、データポイントが範囲(μ−3σ、μ+3σ)(\ mu-3 \ sigma、\ mu + 3 \ sigma)(μμを超える場合+ )の場合、これらの点は異常点である可能性があります。

この方法は、視覚化にも使用できます。箱ひげ図は、データセットの上位および下位の四分位数(Q1およびQ3)と中点を使用して、データ分布の単純な統計的視覚化を行います。外れ値は、多くの場合、Q1-1.5IQR未満またはQ3 + 1.5IQRより大きいデータとして定義されます。

2.2複数の外れ値の検出

2つ以上の属性または変数を含むデータは、多変量データと呼ばれます。多くの単項外れ値検出方法を拡張して、多変量データを処理できます。中心的なアイデアは、多変量外れ値検出タスクを1次元の外れ値検出問題に変換することです。たとえば、正規分布に基づく単項外れ値の検出を多変量の場合に拡張すると、各次元の平均と標準偏差を取得できます。
これは、各次元の特徴が互いに独立している場合です。特徴間に相関がある場合は、多変量ガウス分布を使用する必要があります。

3.ノンパラメトリック法

異常検出のノンパラメトリック手法では、「正規データ」のモデルは、事前に仮定するのではなく、入力データから学習します。一般に、ノンパラメトリック手法はデータに関する仮定が少ないため、より多くの状況で使用できます。

例:ヒストグラムを使用して異常なポイントを検出します。

ヒストグラムは、異常なポイントを検出するために使用できる、頻繁に使用されるノンパラメトリック統計モデルです。このプロセスには、次の2つのステップが含まれます。

ステップ1:ヒストグラムを作成します。入力データ(トレーニングデータ)を使用してヒストグラムを作成します。ヒストグラムは、単変量または多変量にすることができます(入力データが多次元の場合)。

ノンパラメトリック手法は、以前の統計モデルを想定していませんが、通常、ユーザーはデータから学習するためのパラメーターを提供する必要があります。たとえば、ユーザーはヒストグラムのタイプ(幅または深さが等しい)およびその他のパラメーター(ヒストグラム内のビンの数または各ビンのサイズなど)を指定する必要があります。パラメトリック法とは異なり、これらのパラメーターはデータ分布のタイプを指定しません。

ステップ2:異常なポイントを検出します。オブジェクトが異常点であるかどうかを判断するために、ヒストグラムと照合することができます。最も単純な方法では、オブジェクトがヒストグラムのボックスに分類される場合、オブジェクトは正常であると見なされ、そうでない場合は異常なポイントと見なされます。

より複雑な方法では、ヒストグラムを使用して各オブジェクトに外れ値スコアを与えることができます。たとえば、オブジェクトの異常なポイントスコアを、オブジェクトが入るボックスの体積の逆数とします。

外れ値検出のノンパラメトリックモデルとしてヒストグラムを使用することの1つの欠点は、適切なボックスサイズを選択することが難しいことです。一方では、ボックスサイズが小さすぎると、多くの通常のオブジェクトが空のボックスまたはまばらなボックスに分類されるため、異常なポイントとして誤認されます。一方、ボックスのサイズが大きすぎると、異常なポイントオブジェクトがいくつかの頻繁なボックスに侵入し、通常どおり「ふり」をする可能性があります。

4、HBOS

HBOSのフルネーム:ヒストグラムベースの外れ値スコア。これは単変量法の組み合わせであり、特徴間の依存関係をモデル化することはできませんが、計算速度が速く、大規模なデータセットに適しています。基本的な仮定は、データセットの各次元が互いに独立しているということです。次に、各ディメンションがビンに分割されます。ビンの密度が高いほど、異常スコアは低くなります。

HBOSアルゴリズムフロー:

1.データディメンションごとにデータヒストグラムを作成します。カテゴリデータの各値の頻度をカウントし、相対頻度を計算します。異なる分布による数値データには、次の2つの方法が使用されます
。2。独立したヒストグラムが各次元に対して計算されます。ここで、各ボックスの高さは密度の推定値を表します。次に、最大の高さを1にするために(各特徴の重みと異常値が等しくなるようにするため)、ヒストグラムが正規化されます。

5.まとめ

1.異常検出の統計的手法は、データ学習モデルに基づいて、正常なデータオブジェクトと異常なポイントを区別します。統計的手法を使用する利点の1つは、異常検出が統計的に議論の余地がないことです。もちろん、それは、データに対して行われた統計的仮定が実際の制約を満たしている場合にのみ当てはまります。

2. HBOSは、グローバルな異常検出ではうまく機能しますが、ローカルな異常を検出することはできません。ただし、HBOSは、特に大規模なデータセットでは、標準のアルゴリズムよりもはるかに高速です。

6.コード

from pyod.models.hbos import HBOS
from pyod.utils.data import generate_data
from pyod.utils.data import evaluate_print
from pyod.utils.example import visualize

#  sample data
X_train, y_train, X_test, y_test = \
    generate_data(n_train=1000,    
                  n_test=300,     
                  n_features=2,
                  contamination=0.01,   #预估的 percentage of outliers
                  random_state=123)

# train HBOS detector
clf_name = 'HBOS'
clf = HBOS()
clf.fit(X_train)

y_train_pred = clf.labels_ 
y_train_scores = clf.decision_scores_  


y_test_pred = clf.predict(X_test)  # 
y_test_scores = clf.decision_function(X_test) 
evaluate_print(clf_name, y_train, y_train_scores)
evaluate_print(clf_name, y_test, y_test_scores)

visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred,y_test_pred, show_figure=True, save_figure=False)

## 参考资料

**关于Datawhale**:

> Datawhale 异常检测学习

おすすめ

転載: blog.csdn.net/huochuangchuang/article/details/112691204