Vad är anomalier och avvikare?

Avvikelsedetektering i Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Inliggare vs. avvikare

  • Avvikelsedetektering: identifierar onormala datapunkter
  • Inliggare:
    • "Normala" datapunkter
    • Utgör majoriteten
  • Avvikare:
    • Förekommer mycket sällan
    • Statistiskt annorlunda

Två exempel på avvikare: en röd tulpan i ett fält av gröna, och en svart pinne separerad från en grupp vita pinnar

Avvikelsedetektering i Python

Planeten Jorden som en anomali

Alla planeter är inliggare

En bild av Vintergatan tagen på långt avstånd.

Endast Jorden är en avvikare

En bild av planeten Jorden som genom atmosfären som ett lins speglar att det finns liv på planeten.

Avvikelsedetektering i Python

Statistisk definition

  • Onormalt avvikande
  • Har markant annorlunda särdrag
  • Observatören avgör om en datapunkt är en avvikare
Avvikelsedetektering i Python

Tillämpningar av avvikelsedetektering

Bild av texten "security" med en muspekare som hovrar över den.

Avvikelsedetektering i Python

Tillämpningar av avvikelsedetektering

En blåhandskklädd hand som håller en liten kemikaliebehållare med blå vätska.

Avvikelsedetektering i Python

Tillämpningar av avvikelsedetektering

En man räcker sitt Visa-kort till en kvinna som håller en kassaterminal.

Avvikelsedetektering i Python

Exempeldata

import pandas as pd

numbers = pd.Series([24, 46, 30, 28, 1289, 25, 21, 31, 48, 47])
Avvikelsedetektering i Python

Påverkan på medelvärde och varians

Data utan avvikare

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

Data med avvikare

numbers_b = pd.Series([1289, 24, ...])
numbers_b.mean()
158.9
numbers_b.var()
157771.65
Avvikelsedetektering i Python

Anomalier i träningsdata

  • Anomalier skapar brus
  • Kan förväxlas med en ny undergrupp
  • Drar uppmärksamheten från de verkliga mönstren
Avvikelsedetektering i Python

Avvikardetektion vs. nyhetsdetektering

Avvikardetektion

  • Avvikare finns bara i träningsdata

Nyhetsdetektering

  • Nyheter finns bara i ny data
Avvikelsedetektering i Python

5-siffersammanfattning

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
Avvikelsedetektering i Python

Rita ett histogram

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')
Avvikelsedetektering i Python

Det resulterande histogrammet

Ett histogram över produktförsäljning med röda staplar och en lång högersvans.

Avvikelsedetektering i Python

Rita ett spridningsdiagram

integers = range(len(sales))

plt.figure(figsize=(16, 8))
plt.scatter(integers, sales, c='red', alpha=0.5)
Avvikelsedetektering i Python

Det resulterande spridningsdiagrammet

Ett spridningsdiagram med en tät punktmolna i den nedre halvan som glesas ut mot toppen

Avvikelsedetektering i Python

Nu kör vi en övning!

Avvikelsedetektering i Python

Preparing Video For Download...