이상과 이상치는 무엇일까요?

Python으로 배우는 이상치 탐지

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

인라이어 vs. 아웃라이어

  • 이상 탐지: 비정상 데이터 포인트 식별
  • 인라이어(inlier):
    • “정상” 데이터 포인트
    • 대다수를 대표
  • 아웃라이어(outlier):
    • 매우 드묾
    • 통계적으로 다름

두 가지 이상치 예시: 초록 들판의 빨간 튤립, 흰 막대 무리와 떨어진 검은 막대 하나

Python으로 배우는 이상치 탐지

이상으로서의 지구

모든 행성은 인라이어

매우 멀리서 본 은하수 이미지.

지구만 아웃라이어

대기의 렌즈 효과로 생명 존재를 암시하는 지구의 흥미로운 이미지.

Python으로 배우는 이상치 탐지

통계적 정의

  • 비정상적으로 다름
  • 특성이 크게 다름
  • 관찰자가 데이터 포인트의 이상치 여부를 판단함
Python으로 배우는 이상치 탐지

이상 탐지의 활용

"security" 텍스트에 마우스 포인터가 올라간 이미지.

Python으로 배우는 이상치 탐지

이상 탐지의 활용

파란 장갑을 낀 손이 파란 액체가 든 작은 화학 용기를 들고 있는 이미지.

Python으로 배우는 이상치 탐지

이상 탐지의 활용

남성이 자신의 비자 카드를 결제 단말기를 든 여성에게 건네는 이미지.

Python으로 배우는 이상치 탐지

예시 데이터

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
Python으로 배우는 이상치 탐지

평균과 분산에 미치는 영향

이상치를 제거한 데이터

numbers_a = pd.Series([24, 46, ...])
numbers_a.mean()
33.33
numbers_a.var()
114.5

이상치를 포함한 데이터

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
Python으로 배우는 이상치 탐지

훈련 데이터의 이상치

  • 이상치는 노이즈를 만듭니다
  • 새 하위 집단으로 오인될 수 있습니다
  • 실제 패턴의 강조를 약화시킵니다
Python으로 배우는 이상치 탐지

이상치 vs. 신규성 탐지

이상치 탐지

  • 이상치는 훈련 데이터에만 존재합니다

신규성 탐지

  • 신규성은 새 데이터에만 존재합니다
Python으로 배우는 이상치 탐지

5수치 요약

import pandas as pd

big_mart = pd.read_csv("big_mart.csv")
sales = big_mart['sales']
sales.describe()
count     8523.000000
mean      2181.288914
std       1706.499616
min         33.290000
25%        834.247400
50%       1794.331000
75%       3101.296400
max      13086.964800
Python으로 배우는 이상치 탐지

히스토그램 그리기

import numpy as np
import matplotlib.pyplot as plt

# Find the square root of the length of sales
n_bins = np.sqrt(len(sales))
# Cast to an integer
n_bins = int(n_bins)


# Plot plt.figure(figsize=(8, 4)) plt.hist(sales, bins=n_bins, color='red')
Python으로 배우는 이상치 탐지

결과 히스토그램

빨간 막대와 오른쪽으로 긴 꼬리를 가진 제품 매출 히스토그램.

Python으로 배우는 이상치 탐지

산점도 그리기

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
Python으로 배우는 이상치 탐지

결과 산점도

아래쪽에 점 구름이 밀집하고 위로 갈수록 성김을 보이는 산점도.

Python으로 배우는 이상치 탐지

Vamos praticar!

Python으로 배우는 이상치 탐지

Preparing Video For Download...