Rilevamento e trattamento anomali | Come gestire gli outlier

Contenuti

68925oddoneout_edit2-1337880
Oh, questi sono adorabili! In attesa, Da dove viene questo tulipano giallo?

introduzione:

Uno dei passaggi più importanti nell'ambito della preelaborazione dei dati è il rilevamento e la gestione dei valori anomali, in quanto possono influire negativamente sull'analisi statistica e sul processo di addestramento di un algoritmo di machine learning, con conseguente minore precisione.

1. Cosa sono gli outlier?? ?

Abbiamo tutti sentito parlare dell'idioma "strano", che significa qualcosa di insolito rispetto agli altri in un gruppo.

Allo stesso modo, un outlier è un'osservazione in un dato set di dati che è lontana dal resto delle osservazioni. Ciò significa che un valore anomalo è molto più grande o più piccolo dei valori rimanenti nel set..

2. Perché si verificano??

Un outlier può verificarsi a causa della variabilità dei dati, o a causa di un errore sperimentale / errore umano.

Può indicare un errore sperimentale o una grande asimmetria nei dati (distribuzione di colla pesante).

3. che influiscono?

Nelle statistiche, abbiamo tre misure di tendenza centrale: Media, Mediano & Moda. Aiutaci a descrivere i dati.

La media è il misura Accurato per descrivere i dati quando non sono presenti valori anomali.

La mediana viene utilizzata se c'è un valore anomalo nel set di dati.

La modalità viene utilizzata se c'è un valore anomalo E circa la metà o più dei dati è uguale.

Il “media” è l'unica misura della tendenza centrale che è influenzata da valori anomali, che a sua volta influenza la deviazione standard.

Esempio:

Considera un piccolo set di dati, campione = [15, 101, 18, 7, 13, 16, 11, 21, 5, 15, 10, 9]. guardandolo, puoi dire rapidamente che '101’ è un valore anomalo molto più grande degli altri valori.

88471con_senza_valori anomali-6426600
calcolo con e senza outlier (Immagine dell'autore)

Dai calcoli di cui sopra, possiamo dire chiaramente che la Media è più colpita della Mediana.

4. Rilevamento di valori atipici

Se il nostro set di dati è piccolo, possiamo rilevare il valore anomalo semplicemente guardando il set di dati. Ma, E se avessimo un grande set di dati?, come identifichiamo gli outlier? Dobbiamo usare tecniche di visualizzazione e matematica.

Di seguito sono riportate alcune delle tecniche per rilevare i valori anomali.

  • Diagrammi scatolari
  • Punteggio Z
  • Intervallo tra quantili (IQR)

4.1 Rilevamento di anomalie tramite Boxplot:

Il codice Python per il diagramma box è:

import matplotlib.pyplot as plt
plt.boxplot(campione, vert=Falso)
plt.titolo("Rilevamento di valori anomali utilizzando Boxplot")
plt.xlabel('Campione')
71843outlier_bp-5203065
Rilevamento di anomalie tramite Boxplot (Immagine dell'autore)

4.2 Rilevamento di valori anomali utilizzando i punteggi Z

Criteri: qualsiasi punto dati il cui punteggio Z non rientra nella 3a deviazione standard è un valore anomalo.

Passi:

  • passare attraverso tutti i punti dati e calcolare il punteggio Z utilizzando la formula (Xi-media) / standard.
  • Impostare un valore soglia di 3 e contrassegnare i punti dati il cui valore Z-score assoluto è maggiore della soglia come valori anomali.
import numpy as np
outliers = []
def detect_outliers_zscore(dati):
    thres = 3
    media = np.mean(dati)
    std = np.std(dati)
    # Stampa(Significare, standard)
    per i dati:
        z_score = (i-mean)/std
        if (np.abs(z_score) > thres):
            outliers.append(io)
    return outliers# Driver code
sample_outliers = detect_outliers_zscore(campione)
Stampa("Valori anomali del metodo Z-scores: ", sample_outliers)

I risultati del codice precedente: Valori anomali del metodo Z-score: [101]

4.3 Rilevamento di valori anomali utilizzando l'intervallo tra quantili (IQR)

12311Iqr-9027010
IQR per rilevare valori anomali

Criteri: I punti dati che si trovano 1,5 volte l'IQR sopra Q3 e sotto Q1 sono valori anomali.

Passi:

  • Ordinare il set di dati in ordine crescente
  • calcolare il primo e il terzo quartile (Q1, Q3)
  • calcola IQR = Q3-Q1
  • calcola limite inferiore = (Q1–1,5 * IQR), limite superiore = (Q3 + 1.5 * IQR)
  • Esaminare i valori nel set di dati e controllare quelli che scendono al di sotto del limite inferiore e superiore e contrassegnarli come valori anomali

Codice Python:

valori anomali = []
def detect_outliers_iqr(dati):
    dati = ordinati(dati)
    q1 = np.percentile(dati, 25)
    q3 = np.percentile(dati, 75)
    # Stampa(Q1, Q3 ·)
    IQR = q3-q1
    lwr_bound = q1-(1.5*IQR)
    upr_bound = q3+(1.5*IQR)
    # Stampa(lwr_bound, upr_bound)
    per i dati: 
        Se (io<lwr_bound o i>upr_bound):
            outliers.append(io)
    return outliers# Driver code
sample_outliers = detect_outliers_iqr(campione)
Stampa("Valori anomali del metodo IQR: ", sample_outliers)

I risultati del codice precedente: Valori anomali del metodo IQR: [101]

5. Gestione degli outlier

Finora abbiamo appreso del rilevamento dei valori anomali. La domanda principale è COSA facciamo con i valori anomali??

Ecco alcuni dei metodi per gestire gli outlier.

  • Ordinare / rimuovi valori anomali
  • Rivestimenti e pavimentazioni a base quantile
  • imputazione media / mediano

5.1 Ritagliare / Rimozione dei valori anomali

In questa tecnica, rimuoviamo gli outlier dal set di dati. Anche se non è una buona pratica da seguire.

Codice Python per rimuovere l'outlier e copiare il resto degli elementi in un'altra matrice.

# Trimming
for i in sample_outliers:
    a = np.delete(campione, np.dove(campione==i))
Stampa(un)
# Stampa(len(campione), len(un))

Outlier '101’ viene eliminato e il resto dei punti dati viene copiato in un'altra matrice 'a'.

5.2 Rivestimenti e pavimenti a base di quantili

In questa tecnica, Il valore anomalo è limitato a un determinato valore superiore al valore percentile 90 o è ridotto a un fattore inferiore al valore percentile 10.

Codice Python:

# Informatica 10, 90th percentiles and replacing the outliers
tenth_percentile = np.percentile(campione, 10)
ninetieth_percentile = np.percentile(campione, 90)
# Stampa(tenth_percentile, ninetieth_percentile)b = np.where(campione<tenth_percentile, tenth_percentile, campione)
b = np.where(B>ninetieth_percentile, ninetieth_percentile, B)
# Stampa("Campione:", campione)
Stampa("Nuovo array:",B)

I risultati del codice precedente: Nuova matrice: [15, 20.7, 18, 7.2, 13, 16, 11, 20.7, 7.2, 15, 10, 9]

Punti dati più piccoli del percentile 10 vengono sostituiti con il valore percentile 10 e punti dati più grandi del percentile 90 vengono sostituiti con il valore percentile 90.

5.3 imputazione media / mediano

Poiché il valore medio è fortemente influenzato dai valori anomali, Si consiglia di sostituire i valori anomali con il valore mediano.

Codice Python:

mediana = np.mediana(campione)# Replace with median
for i in sample_outliers:
    c = np.where(campione==i, 14, campione)
Stampa("Campione: ", campione)
Stampa("Nuovo array: ",C)
# Stampa(x.dtype)

Visualizzazione dei dati dopo aver eseguito l'outlier

plt.boxplot(C, vert=Falso)
plt.titolo("Boxplot del campione dopo aver trattato i valori anomali")
plt.xlabel("Campione")
14520trattatobp-2415663
Immagine dell'autore

Riepilogo:

In questo blog, abbiamo appreso di un'importante fase di pre-elaborazione dei dati che è l'elaborazione anomala. Ora conosciamo diversi metodi per rilevare e trattare i valori anomali.

Riferimenti:

Z-score per il rilevamento di valori anomali

IQR per il rilevamento di anomalie

Metodo Python numpy.where ()

Repository GitHub per consultare il notebook Jupyter

Spero che questo blog ti aiuti a capire il concetto di outlier. Per favore, vota se ti piace. Buon apprendimento !! ?

Il supporto mostrato in questo articolo non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.