Що таке аномалії та викиди?

Виявлення аномалій у Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Inliers vs. outliers

  • Виявлення аномалій: пошук нетипових точок даних
  • Inliers:
    • «Нормальні» точки даних
    • Складають більшість
  • Outliers:
    • Трапляються дуже рідко
    • Статистично відрізняються

Два приклади викидів: перший — червоний тюльпан у полі зелених, другий — одна чорна паличка, відокремлена від групи білих

Виявлення аномалій у Python

Планета Земля як аномалія

Усі планети — inliers

Зображення галактики Чумацький Шлях з великої відстані.

Лише Земля — outlier

Цікавий образ планети Земля, що показує наявність життя через атмосферу як лінзу.

Виявлення аномалій у Python

Статистичне визначення

  • Нетипово відрізняються
  • Мають суттєво інші ознаки
  • Спостерігач вирішує, чи є точка даних викидом
Виявлення аномалій у Python

Застосування виявлення аномалій

Зображення слова «security», на яке наведено курсор миші.

Виявлення аномалій у Python

Застосування виявлення аномалій

Рука в синій рукавичці тримає невелику хімічну колбу з блакитною рідиною.

Виявлення аномалій у Python

Застосування виявлення аномалій

Чоловік передає свою картку Visa жінці з терміналом оплати.

Виявлення аномалій у 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

П'ятирядкове резюме

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

# Знайдіть квадратний корінь з довжини sales
n_bins = np.sqrt(len(sales))
# Перетворіть на ціле число
n_bins = int(n_bins)


# Побудова графіка 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

Давайте потренуємось

Виявлення аномалій у Python

Preparing Video For Download...