外れ値の検出
次の演習では、K-means アルゴリズムで不正を予測し、保存されている実際のラベルと比較して結果の妥当性を確認します。
不正な取引は、通常、クラスタのセントロイドから最も離れた観測としてフラグ付けされます。この演習では、その方法とカットオフの決め方を学びます。次の演習で結果を確認します。
スケーリング済みの観測値 X_scaled と、変数 y に保存されたラベルが利用できます。
この演習はコースの一部です
Pythonで学ぶ不正検知
演習の手順
- スケーリング済みデータとラベル
yを学習用とテスト用に分割します。 - 3 クラスタの MiniBatch K-means モデルを定義し、学習用データにフィットさせます。
- テストデータからクラスタ予測を取得し、クラスタのセントロイドを得ます。
- 不正と非不正の境界を、距離分布の 95% 以上に設定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Split the data into training and test set
X_train, X_test, y_train, y_test = ____(____, ____, test_size=0.3, random_state=0)
# Define K-means model
kmeans = ____(n_clusters=____, random_state=42).fit(____)
# Obtain predictions and calculate distance from cluster centroid
X_test_clusters = ____.____(X_test)
X_test_clusters_centers = ____.____
dist = [np.linalg.norm(x-y) for x, y in zip(X_test, X_test_clusters_centers[X_test_clusters])]
# Create fraud predictions based on outliers on clusters
km_y_pred = np.array(dist)
km_y_pred[dist >= np.percentile(dist, ____)] = 1
km_y_pred[dist < np.percentile(dist, ____)] = 0