Czym są anomalie i wartości odstające?

Wykrywanie anomalii w Pythonie

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Inliers a outliers

  • Wykrywanie anomalii: identyfikacja nieprawidłowych punktów danych
  • Inliers:
    • „Normalne" punkty danych
    • Stanowią większość
  • Outliers:
    • Występują bardzo rzadko
    • Statystycznie odmienne

Dwa przykłady wartości odstających: czerwony tulipan na tle zielonego pola oraz pojedynczy czarny patyk oddzielony od grupy białych patyków

Wykrywanie anomalii w Pythonie

Ziemia jako anomalia

Wszystkie planety są inlierami

Obraz Drogi Mlecznej widzianej z bardzo daleka.

Tylko Ziemia jest outlierem

Niecodzienny obraz Ziemi ukazujący atmosferę planety jako soczewkę świadczącą o życiu.

Wykrywanie anomalii w Pythonie

Definicja statystyczna

  • Nieprawidłowo odmienne
  • Mają znacząco różne cechy
  • Obserwator decyduje, czy punkt danych jest outlierem
Wykrywanie anomalii w Pythonie

Zastosowania wykrywania anomalii

Obraz napisu „security" z kursorem myszy nad nim.

Wykrywanie anomalii w Pythonie

Zastosowania wykrywania anomalii

Obraz przedstawiający dłoń w niebieskiej rękawiczce trzymającą mały pojemnik z niebieskim płynem.

Wykrywanie anomalii w Pythonie

Zastosowania wykrywania anomalii

Obraz mężczyzny podającego kartę Visa kobiecie trzymającej terminal płatniczy.

Wykrywanie anomalii w Pythonie

Przykładowe dane

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
Wykrywanie anomalii w Pythonie

Wpływ na średnią i wariancję

Dane bez wartości odstającej

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

Dane z wartością odstającą

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
Wykrywanie anomalii w Pythonie

Anomalie w danych treningowych

  • Anomalie generują szum
  • Mogą być mylone z nową podgrupą
  • Odwracają uwagę od rzeczywistych wzorców
Wykrywanie anomalii w Pythonie

Wykrywanie outlierów a nowości

Wykrywanie wartości odstających

  • Outliers występują tylko w danych treningowych

Wykrywanie nowości

  • Nowości występują tylko w nowych danych
Wykrywanie anomalii w Pythonie

Podsumowanie 5-liczbowe

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
Wykrywanie anomalii w Pythonie

Tworzenie 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')
Wykrywanie anomalii w Pythonie

Wynikowy histogram

Histogram sprzedaży produktów z czerwonymi słupkami i długim prawym ogonem.

Wykrywanie anomalii w Pythonie

Tworzenie wykresu rozrzutu

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
Wykrywanie anomalii w Pythonie

Wynikowy wykres rozrzutu

Wykres rozrzutu pokazujący skupisko punktów w dolnej części, rzedniejsze ku górze

Wykrywanie anomalii w Pythonie

Czas na ćwiczenia!

Wykrywanie anomalii w Pythonie

Preparing Video For Download...