LOF 알고리즘을 이용한 이상치 탐지

Beginner

This tutorial is from open-source community. Access the source code

소개

지역 이상치 탐지 (LOF) 알고리즘은 데이터에서 이상치를 감지하는 비지도 머신 러닝 방법입니다. 주어진 데이터 포인트의 이웃에 대한 지역 밀도 편차를 계산하고, 이웃보다 현저히 낮은 밀도를 가진 샘플을 이상치로 간주합니다.

이 실습에서는 LOF 를 사용하여 데이터 세트에서 이상치를 감지할 것입니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접속합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업 검증은 자동화될 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 가져오기

데이터 조작 및 시각화를 위해 각각 numpymatplotlib를 가져올 것입니다. 또한 이상치 탐지를 위해 sklearn.neighbors에서 LocalOutlierFactor를 가져올 것입니다.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import LocalOutlierFactor

이상치가 포함된 데이터 생성

100 개의 내부 데이터 포인트와 20 개의 이상치 데이터 포인트를 가진 120 개의 데이터 포인트로 구성된 데이터 세트를 생성합니다. 그런 다음 데이터를 플롯하여 이상치를 시각화합니다.

np.random.seed(42)

X_inliers = 0.3 * np.random.randn(100, 2)
X_inliers = np.r_[X_inliers + 2, X_inliers - 2]
X_outliers = np.random.uniform(low=-4, high=4, size=(20, 2))
X = np.r_[X_inliers, X_outliers]

plt.scatter(X[:, 0], X[:, 1], color="k", s=3.0)
plt.axis("tight")
plt.xlim((-5, 5))
plt.ylim((-5, 5))
plt.xlabel("데이터 포인트")
plt.title("이상치가 포함된 데이터")
plt.show()

이상치 탐지 모델 적용

LocalOutlierFactor를 사용하여 이상치 탐지 모델을 적용하고 학습 샘플의 예측 레이블을 계산합니다.

clf = LocalOutlierFactor(n_neighbors=20, contamination=0.1)
y_pred = clf.fit_predict(X)
X_scores = clf.negative_outlier_factor_

결과 시각화

이상치 점수에 비례하는 반경을 가진 원으로 데이터 포인트를 플롯합니다.

plt.scatter(X[:, 0], X[:, 1], color="k", s=3.0, label="Data points")
## 이상치 점수에 비례하는 반경으로 원을 플롯합니다.
radius = (X_scores.max() - X_scores) / (X_scores.max() - X_scores.min())
scatter = plt.scatter(
    X[:, 0],
    X[:, 1],
    s=1000 * radius,
    edgecolors="r",
    facecolors="none",
    label="Outlier scores",
)
plt.axis("tight")
plt.xlim((-5, 5))
plt.ylim((-5, 5))
plt.xlabel("이상치 탐지")
plt.legend(
    handler_map={scatter: HandlerPathCollection(update_func=update_legend_marker_size)}
)
plt.title("Local Outlier Factor (LOF)")
plt.show()

요약

이 실습에서는 이상치 탐지를 위해 Local Outlier Factor (LOF) 를 사용하는 방법을 배웠습니다. 이상치가 포함된 데이터셋을 생성하고, 이상치 탐지 모델을 적용하고, 결과를 시각화했습니다. LOF 는 다양한 분야에서 이상 징후를 감지하는 데 사용할 수 있는 강력한 비지도 학습 방법입니다.