Ce sunt anomaliile și valorile aberante?

Detecția anomaliilor în Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Inlieri vs. outlieri

  • Detectarea anomaliilor: identificarea punctelor de date anormale
  • Inlieri:
    • Puncte de date „normale"
    • Reprezintă majoritatea
  • Outlieri:
    • Apar foarte rar
    • Diferite din punct de vedere statistic

Două exemple de outlieri: o lalea roșie într-un câmp verde și un băț negru separat de un grup de bețe albe

Detecția anomaliilor în Python

Planeta Pământ ca anomalie

Toate planetele sunt inlieri

Imaginea galaxiei Calea Lactee de la mare distanță.

Doar Pământul este un outlier

O imagine a Planetei Pământ care reflectă existența vieții prin atmosfera sa.

Detecția anomaliilor în Python

Definiție statistică

  • Anormal diferit
  • Caracteristici semnificativ diferite
  • Observatorul decide dacă un punct de date este outlier
Detecția anomaliilor în Python

Aplicații ale detectării anomaliilor

Imaginea textului „security" cu un cursor de mouse deasupra.

Detecția anomaliilor în Python

Aplicații ale detectării anomaliilor

Imaginea unei mâini cu mănușă albastră care ține un recipient mic cu lichid albastru.

Detecția anomaliilor în Python

Aplicații ale detectării anomaliilor

Imaginea unui bărbat care înmânează cardul Visa unei femei cu un terminal de plată.

Detecția anomaliilor în Python

Date exemplu

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
Detecția anomaliilor în Python

Impactul asupra mediei și varianței

Date fără valoare aberantă

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

Date cu valoare aberantă

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
Detecția anomaliilor în Python

Anomalii în datele de antrenare

  • Anomaliile introduc zgomot
  • Pot fi confundate cu un subgrup nou
  • Distrag atenția de la tiparele reale
Detecția anomaliilor în Python

Outlieri vs. detectarea noutăților

Detectarea outlierilor

  • Outlierii există doar în datele de antrenare

Detectarea noutăților

  • Noutățile există doar în datele noi
Detecția anomaliilor în Python

Rezumatul cu 5 cifre

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
Detecția anomaliilor în Python

Reprezentarea unei histograme

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')
Detecția anomaliilor în Python

Histograma rezultată

O histogramă a vânzărilor de produse cu coloane roșii și o coadă lungă în dreapta.

Detecția anomaliilor în Python

Reprezentarea unui scatterplot

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
Detecția anomaliilor în Python

Scatterplot-ul rezultat

Un scatterplot cu puncte concentrate în jumătatea inferioară, mai rare spre partea superioară

Detecția anomaliilor în Python

Să exersăm!

Detecția anomaliilor în Python

Preparing Video For Download...