はじめに
新奇性検出とアウトライア検出は、新しい観測値が既存の観測値と同じ分布に属するか、それとも異なると考えられるかを識別するために使用される手法です。これらの手法は、異常または不尋常な観測値を識別することにより、実際のデータセットをクリーニングするために一般的に使用されます。
この文脈において、2 つの重要な区別があります:
- アウトライア検出:学習データにはアウトライアが含まれており、これは他のデータから離れた観測値です。アウトライア検出推定器は、学習データが最も集中している領域にフィットさせようとし、逸脱した観測値を無視します。
- 新奇性検出:学習データはアウトライアに汚染されておらず、目的は新しい観測値がアウトライアであるかどうかを検出することです。この文脈では、アウトライアはまた新奇性と呼ばれます。
scikit-learn プロジェクトは、新奇性検出とアウトライア検出の両方に使用できる一連の機械学習ツールを提供しています。これらのツールは、教師なし学習アルゴリズムを使用して実装されており、これはラベル付きの例が必要なく、データからパターンを学習することを意味します。
VM のヒント
VM の起動が完了した後、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に直面した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。そうすれば、迅速に問題を解決します。
必要なライブラリをインポートする
まず、必要なライブラリをインポートする必要があります。この例では、scikit-learn のsklearnモジュールを使用します。
from sklearn import neighbors
データセットを読み込む
次に、アウトライア検出を行いたいデータセットを読み込む必要があります。好きなデータセットを使用するか、カスタムデータセットを作成することができます。この例では、X_trainと呼ばれるサンプルデータセットを使用します。
X_train = [0.5, 1.5, 2.5, 3.5, 4.5, 10.5, 11.5, 12.5, 13.5, 14.5]
アウトライア検出推定器を作成する
ここで、neighbors.LocalOutlierFactorクラスからアウトライア検出推定器オブジェクトを作成することができます。このクラスは、アウトライア検出のための一般的な手法である Local Outlier Factor アルゴリズムを実装しています。
estimator = neighbors.LocalOutlierFactor()
モデルを学習データに適合させる
次に、fitメソッドを使用して、アウトライア検出推定器を学習データに適合させることができます。
estimator.fit(X_train)
アウトライアを予測する
モデルが適合させられたら、新しい観測値がアウトライアかどうかを予測するためにpredictメソッドを使用できます。predictメソッドは、内包値に対しては 1 を、アウトライアに対しては -1 を返します。
X_test = [5.5, 8.5]
predictions = estimator.predict(X_test)
print(predictions)
アウトライアスコアを取得する
アウトライアを予測するだけでなく、negative_outlier_factor_属性を使用して各観測値のアウトライアスコアにもアクセスできます。低いアウトライアスコアは、より高い異常性を示します。
outlier_scores = estimator.negative_outlier_factor_
print(outlier_scores)
まとめ
この実験では、scikit-learn ライブラリを使って新奇性検出とアウトライア検出を行う方法を学びました。アウトライア検出推定器を作成し、学習データに適合させ、新しい観測値におけるアウトライアを予測し、アウトライアスコアにアクセスしました。これらの手法は、データセット内の異常または不尋常な観測値を識別するために使用でき、アノマリ検出タスクに一般的に用いられます。