Cosa sono anomalie e outlier?

Rilevamento delle anomalie in Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Inlier vs outlier

  • Rilevamento di anomalie: individuare punti dati anomali
  • Inlier:
    • Punti dati “normali”
    • Rappresentano la maggioranza
  • Outlier:
    • Molto rari
    • Statisticamente diversi

Due esempi di outlier: un tulipano rosso in un campo verde e un singolo bastoncino nero separato da un gruppo di bianchi

Rilevamento delle anomalie in Python

La Terra come anomalia

Tutti i pianeti sono inlier

Immagine della Via Lattea da molto lontano.

Solo la Terra è un outlier

Un’immagine curiosa della Terra che mostra la vita tramite l’atmosfera come lente.

Rilevamento delle anomalie in Python

Definizione statistica

  • Anormalmente diversi
  • Hanno caratteristiche molto diverse
  • L’osservatore decide se un punto è un outlier
Rilevamento delle anomalie in Python

Applicazioni del rilevamento di anomalie

Immagine della parola "security" con il puntatore del mouse sopra.

Rilevamento delle anomalie in Python

Applicazioni del rilevamento di anomalie

Immagine di una mano con guanto blu che tiene una piccola provetta con liquido blu.

Rilevamento delle anomalie in Python

Applicazioni del rilevamento di anomalie

Immagine di un uomo che porge la sua carta Visa a una donna con un POS.

Rilevamento delle anomalie in Python

Dati di esempio

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
Rilevamento delle anomalie in Python

Media e varianza influenzate

Dati con outlier rimosso

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

Dati con outlier

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
Rilevamento delle anomalie in Python

Anomalie nei dati di training

  • Le anomalie introducono rumore
  • Possono sembrare un nuovo sotto-gruppo
  • Distolgono dai pattern reali
Rilevamento delle anomalie in Python

Outlier vs novità

Rilevamento di outlier

  • Gli outlier esistono solo nei dati di training

Rilevamento di novità

  • Le novità compaiono solo nei nuovi dati
Rilevamento delle anomalie in Python

Riepilogo a 5 numeri

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
Rilevamento delle anomalie in Python

Disegna un istogramma

import numpy as np
import matplotlib.pyplot as plt

# Trova la radice quadrata della lunghezza di sales
n_bins = np.sqrt(len(sales))
# Convertila in intero
n_bins = int(n_bins)


# Grafico plt.figure(figsize=(8, 4)) plt.hist(sales, bins=n_bins, color='red')
Rilevamento delle anomalie in Python

Istogramma risultante

Un istogramma delle vendite con barre rosse e lunga coda a destra.

Rilevamento delle anomalie in Python

Disegna uno scatter plot

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
Rilevamento delle anomalie in Python

Scatter plot risultante

Uno scatter plot con una nuvola di punti densa nella metà inferiore e più rada verso l’alto

Rilevamento delle anomalie in Python

Ayo berlatih!

Rilevamento delle anomalie in Python

Preparing Video For Download...