Proposition: Dichteabschätzung einer Normalverteilung zur Anomalieerkennung

Sei ein Datensatz normaler Datenpunkte . Sei .

Sind die Merkmalsausprägungen der Vektoren

  • stochastisch unabhängig voneinander und
  • normalverteilt

so klassifizieren wir einen neuen Datenpunkt als abnormal, wenn für die gemeinsame Dichte gilt:


Ist die Menge der beobachteten -ten Merkmalsausprägungen, so erhalten wir die gemeinsame Dichte der durch

Mithilfe der Dichteabschätzung der Normalverteilung erhalten wir die jeweiligen Merkmalsdichten durch:

Anmerkung

Dichteabschätzung mit scikit-learn

Die Dichteabschätzung funktioniert in scikit-learn technisch noch etwas anders als hier beschrieben. Wir erhalten sie durch:

X = ((2, 7), (7.500, 0.500), (3, 3.300), (2.500, 7.500), (4, 3.800), (5, 2))
 
from sklearn.covariance import EllipticEnvelope
detector = EllipticEnvelope(contamination=0.1).fit(X)
 
detector.predict([(5,10)])

Den Mittelwertvektor und die Kovarianz-Matrix erhalten wir durch:

  • : detector.location_
  • : detector.covariance_