이상 탐지

Python으로 설계하는 Machine Learning 워크플로

Dr. Chris Anagnostopoulos

Honorary Associate Professor

이상과 이상치

지도학습

검은색으로 표시된 두 클러스터와 일부 고립된 빨간 점.

비지도학습

검은색으로 표시된 두 클러스터와 일부 고립된 검은 점.

Python으로 설계하는 Machine Learning 워크플로

이상과 이상치

검은색으로 표시된 두 클러스터와 일부 고립된 검은 점.

  • 두 클래스 중 하나가 매우 희귀
  • 데이터셋 시프트의 극단적 사례
  • 예:
    • 사이버보안
    • 사기 탐지
    • 자금세탁 방지
    • 고장 감지
Python으로 설계하는 Machine Learning 워크플로

비지도 워크플로우

검은색으로 표시된 두 클러스터와 빨간색으로 표시된 고립된 검은 점들.

  • 라벨 없이 모델을 어떻게 학습할까?
  • 성능은 어떻게 추정할까?

소수 라벨의 신중한 활용:

  • 과적합 없이 학습하기엔 부족
  • 모델 선택엔 충분
  • 정확도의 편향 없는 추정은 포기

학습/선택/검증으로 분할된 데이터셋. 라벨은 선택에만 존재.

Python으로 설계하는 Machine Learning 워크플로
  • 이상치: 대부분 데이터 범위 밖의 점

검은색으로 표시된 두 클러스터와 일부 고립된 검은 점. 가장 멀리 있는 점이 빨간색으로 표시됨.

  • 국소 이상치: 주변에 다른 점이 거의 없는 고립 영역의 점

검은색으로 표시된 두 클러스터와 일부 고립된 검은 점. 두 클러스터 사이의 고립된 점들이 빨간색으로 표시됨.

Python으로 설계하는 Machine Learning 워크플로

국소 이상치 계수(LoF)

검은색 두 클러스터와 일부 고립된 점. 두 클래스 사이의 한 점이 빨간색, 해당 점의 최근접 이웃(클러스터 근처)은 파란색으로 표시됨.

Python으로 설계하는 Machine Learning 워크플로

국소 이상치 계수(LoF)

from sklearn.neighbors import 
   LocalOutlierFactor as lof
clf = lof()
y_pred = clf.fit_predict(X)
y_pred[:4]
array([ 1,  1,  1, -1])
clf.negative_outlier_factor_[:4]
array([-0.99, -1.02, -1.08 , -0.97])
confusion_matrix(
   y_pred, ground_truth)
array([[  5,  16],
       [  0, 184]])

같은 클러스터와 고립된 점. 클러스터 내부와 고립된 영역 모두에서 많은 점이 빨간색으로 표시됨.

Python으로 설계하는 Machine Learning 워크플로

국소 이상치 계수(LoF)

clf = lof(contamination=0.02)
y_pred = clf.fit_predict(X)
confusion_matrix(
   y_pred, ground_truth)
array([[  5,   0],
       [  0, 200]])

같은 클러스터와 고립된 점. 고립된 점만 빨간색으로 표시됨.

Python으로 설계하는 Machine Learning 워크플로

라벨이 꼭 필요할까?

Python으로 설계하는 Machine Learning 워크플로

Preparing Video For Download...