Scikit-Learn 을 이용한 신규성 및 이상치 탐지

Beginner

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

소개

새로운 관측치가 기존 관측치와 같은 분포에 속하는지, 아니면 다른 분포에 속하는지를 식별하는 기술인 신규성 및 이상치 탐지가 있습니다. 이러한 기술은 일반적으로 실제 데이터 세트를 정리하여 비정상적이거나 특이한 관측치를 식별하는 데 사용됩니다.

이 맥락에서 두 가지 중요한 차이점이 있습니다.

  1. 이상치 탐지: 학습 데이터에는 다른 관측치들로부터 멀리 떨어져 있는 이상치가 포함되어 있습니다. 이상치 탐지 추정치는 학습 데이터가 가장 집중된 영역에 맞추려고 시도하며, 이탈 관측치는 무시합니다.
  2. 신규성 탐지: 학습 데이터는 이상치로 오염되지 않았으며, 새로운 관측치가 이상치인지 탐지하는 것이 목표입니다. 이 맥락에서 이상치는 신규성 (novelty) 이라고도 합니다.

scikit-learn 프로젝트는 신규성 및 이상치 탐지를 위해 사용할 수 있는 머신 러닝 도구 세트를 제공합니다. 이러한 도구는 지도 학습 알고리즘을 사용하여 구현됩니다. 즉, 레이블이 지정된 예시 없이 데이터에서 패턴을 학습합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 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 메서드는 내부 데이터 (inlier) 에 대해서는 1, 이상치 (outlier) 에 대해서는 -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 라이브러리를 사용하여 신규성 및 이상치 탐지 방법을 배웠습니다. 이상치 탐지 추정기를 생성하고, 학습 데이터에 맞추고, 새로운 관측치에서 이상치를 예측하고, 이상치 점수에 접근했습니다. 이러한 기법은 데이터 세트에서 비정상적이거나 특이한 관측치를 식별하는 데 사용될 수 있으며, 일반적으로 이상 탐지 작업에 사용됩니다.