본문 바로가기
AI, 빅데이터/Anomaly Detection

Anomaly Detection_PCA

by Foxy현 2023. 5. 3.
728x90
반응형

PCA(Principal Component Analysis)는 데이터셋에서 가장 중요한 변수를 추출하고 차원을 축소하는 데에 널리 사용되는 방법입니다. 이 기법은 고차원 데이터를 저차원으로 축소하여 시각화 및 분석을 용이하게 하며, 불필요한 정보를 제거하여 노이즈를 감소시키는 효과가 있습니다.

 

PCA 기반 이상탐지는 PCA를 사용하여 데이터의 차원을 축소한 후, 축소된 차원에서 이상값을 탐지하는 방식입니다. PCA는 데이터의 고유값(eigenvalues)과 고유벡터(eigenvectors)를 계산하여 이들을 이용하여 데이터를 재배치합니다. 이렇게 재배치된 데이터에서는 상위 고유값에 해당하는 고유벡터가 가장 중요한 변수를 나타내므로, 이를 기반으로 데이터의 차원을 축소할 수 있습니다.

 

장점:

  • 변수 선택과 해석이 용이함: PCA는 주성분이라는 새로운 변수를 추출하여 기존 변수들보다 더욱 해석하기 쉬운 변수를 생성합니다. 이를 통해 변수 선택과 해석이 용이해지며, 데이터셋의 복잡도를 감소시키는 효과가 있습니다.
  • 차원 축소 및 시각화: PCA는 데이터의 차원을 축소하여 데이터를 시각화 및 분석하기 용이하게 합니다. 차원 축소를 통해 불필요한 정보를 제거하여 노이즈를 감소시키는 효과도 있습니다.
  • 높은 이상탐지율: PCA는 데이터의 구조를 보존하면서도 이상값을 탐지할 수 있는 높은 이상탐지율을 가지고 있습니다.

단점:

  • 변수간 상관관계 고려가 어려움: PCA는 변수들 간의 상관관계를 고려하지 않고 각 변수를 독립적인 변수로 취급합니다. 이는 변수간의 의존성이 높은 경우 추출된 주성분이 변수들의 상관관계를 제대로 반영하지 못할 수 있다는 점입니다.
  • 변수 해석의 어려움: PCA는 주성분이라는 새로운 변수를 추출하므로, 추출된 변수의 해석이 어려울 수 있습니다. 이 주성분 변수는 기존 변수들의 선형 결합으로 생성되므로, 이 변수의 의미를 직관적으로 이해하기 어려울 수 있습니다.
  • 비선형 구조에 대한 한계: PCA는 데이터가 선형적으로 구성되어 있을 때 가장 효과적입니다. 하지만 데이터가 비선형적으로 구성되어 있는 경우에는 PCA 기반 이상탐지가 제대로 동작하지 않을 수 있습니다.

 

구현한 코드는 아래와 같습니다.

 

from sklearn.decomposition import PCA
import numpy as np


# PCA 모델 생성
pca = PCA(n_components=2)

# 주성분 계산
principal_components = pca.fit_transform(data)

# 잔차 계산
residuals = data - pca.inverse_transform(principal_components)

# 이상값 탐지
threshold = 3 # 임계값 설정
outliers = np.argwhere(np.abs(residuals) > threshold)

# 결과 출력
print("이상값의 개수: ", len(outliers))
print("이상값 인덱스: ", outliers)

 

 

 

728x90
반응형