Co jsou anomálie a odlehlé hodnoty?

Detekce anomálií v Pythonu

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Inliery vs. odlehlé hodnoty

  • Detekce anomálií: identifikace abnormálních datových bodů
  • Inliery:
    • „Normální" datové body
    • Tvoří většinu
  • Odlehlé hodnoty:
    • Vyskytují se velmi zřídka
    • Statisticky odlišné

Dva příklady odlehlých hodnot: červený tulipán v poli zelených a jeden černý špejl oddělený od skupiny bílých

Detekce anomálií v Pythonu

Planet Earth as an anomaly

All planets are inliers

The image of the Milky Way galaxy from very far.

Only Earth is an outlier

A curious image of Planet Earth that reflects there is life on the planet through the atmosphere as lens.

Detekce anomálií v Pythonu

Statistical definition

  • Abnormally different
  • Have significantly different features
  • Observer decides whether a datapoint is an outlier
Detekce anomálií v Pythonu

Applications of anomaly detection

Image of the text "security" with a mouse point hovering over it.

Detekce anomálií v Pythonu

Aplikace detekce anomálií

Obrázek modře rukavičkou ruky držící malou chemickou nádobu s modrou kapalinou.

Detekce anomálií v Pythonu

Aplikace detekce anomálií

Obrázek muže podávajícího kartu Visa ženě držící platební terminál.

Detekce anomálií v Pythonu

Ukázková data

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
Detekce anomálií v Pythonu

Vliv na průměr a rozptyl

Data bez odlehlé hodnoty

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

Data s odlehlou hodnotou

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
Detekce anomálií v Pythonu

Anomálie v trénovacích datech

  • Anomálie vytvářejí šum
  • Mohou být zaměněny za novou podskupinu
  • Odvádějí pozornost od skutečných vzorů
Detekce anomálií v Pythonu

Odlehlé hodnoty vs. detekce novinek

Detekce odlehlých hodnot

  • Odlehlé hodnoty existují pouze v trénovacích datech

Detekce novinek

  • Novinky existují pouze v nových datech
Detekce anomálií v Pythonu

Pětičíselný souhrn

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
Detekce anomálií v Pythonu

Vykreslení histogramu

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')
Detekce anomálií v Pythonu

Výsledný histogram

Histogram prodeje produktů s červenými sloupci a dlouhým pravým chvostem.

Detekce anomálií v Pythonu

Vykreslení bodového grafu

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
Detekce anomálií v Pythonu

Výsledný bodový graf

Bodový graf zobrazující shluk bodů v dolní části grafu, který se směrem nahoru rozrůstá

Detekce anomálií v Pythonu

Let's practice

Detekce anomálií v Pythonu

Preparing Video For Download...