본문 바로가기
카테고리 없음

Anomaly Detection_ Mahalonobis 거리

by Foxy현 2023. 4. 11.
728x90
반응형

 

마할라노비스 거리는 다변량 데이터 분석에서 이상치를 탐지하는 방법 중 하나입니다. 이번 글에서는 마할라노비스 거리를 이용한 이상치 탐지에 대해 알아보겠습니다.

마할라노비스 거리란, 다변량 데이터 분석에서 관측치와 다른 관측치들 간의 거리를 계산하는 방법 중 하나입니다. 이 방법은 관측치가 얼마나 다른 관측치들과 다른지를 측정하고, 이를 이용하여 이상치를 탐지합니다. 이상치는 다른 관측치들과의 거리가 멀어지는 경우로 정의됩니다.

마할라노비스 거리를 이용한 이상치 탐지의 장점은 다음과 같습니다. 첫째, 마할라노비스 거리는 다변량 데이터에 대해 적용할 수 있으므로, 다양한 분야에서 활용이 가능합니다. 둘째, 마할라노비스 거리는 데이터 분포의 모양과 크기를 고려하여 이상치를 탐지할 수 있습니다. 셋째, 마할라노비스 거리는 다른 이상치 탐지 방법들과 함께 사용하여 분석 결과를 더욱 정확하게 할 수 있습니다.

하지만, 마할라노비스 거리를 이용한 이상치 탐지 방법에는 다음과 같은 단점이 있습니다. 첫째, 마할라노비스 거리는 데이터의 분포를 가우시안 분포로 가정해야 합니다. 둘째, 마할라노비스 거리는 이상치를 탐지하는 기준을 정확하게 설정하기 어렵습니다. 이때문에, 다른 이상치 탐지 방법들과 함께 사용하여 분석 결과를 더욱 신뢰성 있게 할 필요가 있습니다.

마할라노비스 거리를 이용한 이상치 탐지는 다음과 같은 방법으로 수행할 수 있습니다.

1. 데이터의 공분산 행렬을 계산합니다.
2. 공분산 행렬을 이용하여 마할라노비스 거리를 계산합니다.
3. 마할라노비스 거리가 특정 기준값을 초과하는 데이터를 이상치로 판단합니다.
4.이상치를 제거하거나 다른 값으로 대체합니다.

마할라노비스 거리를 이용한 이상치 탐지의 예시 코드는 다음과 같습니다.



EllipticEnvelope 모델은 scikit-learn의 이상치 감지 모델 중 하나입니다. 이 모델은 다변량 가우시안 분포에서 이상치를 감지하는 방식으로 동작합니다. 모델은 데이터의 분포가 가우시안 분포라고 가정하고, 이상치는 분포에서 벗어난 데이터로 간주합니다.

 

EllipticEnvelope 모델을 사용하여 이상치를 감지하는 방법은 다음과 같습니다.

  1. 데이터를 로드합니다.
  2. EllipticEnvelope 모델을 생성합니다.
  3. fit() 메서드를 사용하여 모델을 학습시킵니다.
  4. predict() 메서드를 사용하여 각 데이터 포인트가 이상치인지 여부를 예측합니다.
  5. 이상치를 시각화합니다.

 

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.covariance import EllipticEnvelope
from sklearn.datasets import make_blobs

X, _ = make_blobs(n_samples=30, n_features=2, centers=1, random_state=1)

X[0,0] = 10
X[0,1] = -10

outlier_detector = EllipticEnvelope(contamination=.05)
outlier_detector.fit(X)

pred = outlier_detector.predict(X)

df = pd.DataFrame(X, columns=['col1','col2'])
df['outlier']

 

728x90
반응형