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

Anomaly Detection_t-SNE

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

t-SNE(t-Distributed Stochastic Neighbor Embedding)는 고차원 데이터를 저차원으로 축소하고 시각화하는 데에 널리 사용되는 방법입니다. t-SNE는 PCA와 달리 비선형 구조에 대해서도 효과적으로 처리할 수 있습니다. 이 방법은 데이터의 분포를 보존하면서 데이터 간의 거리를 최대한 보존하는 데에 중점을 둡니다.

 

t-SNE 기반 이상탐지는 t-SNE를 사용하여 데이터의 차원을 축소한 후, 축소된 차원에서 이상값을 탐지하는 방식입니다. t-SNE는 데이터의 구조를 보존하면서도 차원을 축소하기 때문에, 데이터의 비선형 구조를 보존할 수 있습니다.

 

t-SNE 기반 이상탐지의 장단점은 다음과 같습니다.

장점:

  • 비선형 구조에 대한 처리: t-SNE는 비선형 구조에 대해서도 효과적으로 처리할 수 있습니다. 이를 통해 비선형적인 데이터에서도 이상값을 탐지할 수 있습니다.
  • 데이터 시각화: t-SNE는 데이터를 시각화하기 용이하게 축소할 수 있습니다. 이를 통해 데이터의 구조를 시각적으로 파악할 수 있습니다.
  • 높은 이상탐지율: t-SNE는 데이터 간의 거리를 최대한 보존하는 방법으로 차원을 축소하기 때문에, 이상값을 탐지하는 데에 높은 이상탐지율을 가집니다.

단점:

  • 계산 리소스가 많이 필요함: t-SNE는 시간 및 계산 리소스가 많이 필요한 알고리즘이므로, 대규모 데이터셋에서는 사용하기 어려울 수 있습니다.
  • 데이터셋의 구성에 따라 결과가 달라짐: t-SNE는 확률 기반 방법이므로, 데이터셋의 구성에 따라 결과가 달라질 수 있습니다.
  • 이상값 탐지의 어려움: t-SNE는 임베딩 벡터(embedding vector)를 생성하므로, 이 벡터에서 이상값을 탐지하기 어려울 수 있습니다. 이러한 경우에는 추가적인 이상탐지 기법이 필요합니다.

 

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

 

from sklearn.manifold import TSNE
import numpy as np


# t-SNE 모델 생성
tsne = TSNE(n_components=2)

# 임베딩 벡터 생성
embedding_vector = tsne.fit_transform(data)

# 잔차 계산
residuals = data - tsne.inverse_transform(embedding_vector)

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

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

 

 

 

728x90
반응형