Neuentdeckungs- und Ausreißererkennung mit Scikit-Learn

Machine LearningMachine LearningBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Neuerungs- und Ausreißererkennung sind Techniken, die dazu verwendet werden, zu bestimmen, ob eine neue Beobachtung zur gleichen Verteilung wie die vorhandenen Beobachtungen gehört oder ob sie als unterschiedlich betrachtet werden sollte. Diese Techniken werden allgemein verwendet, um reale Datensätze zu bereinigen, indem abnorme oder ungewöhnliche Beobachtungen identifiziert werden.

Es gibt zwei wichtige Unterscheidungen in diesem Zusammenhang:

  1. Ausreißererkennung: Die Trainingsdaten enthalten Ausreißer, die Beobachtungen sind, die weit von den anderen entfernt sind. Ausreißererkennungsschätzer versuchen, die Regionen anzupassen, in denen die Trainingsdaten am konzentriertesten sind, und ignorieren die abweichenden Beobachtungen.
  2. Neuerungsdetektion: Die Trainingsdaten sind nicht von Ausreißern kontaminiert, und das Ziel ist, zu erkennen, ob eine neue Beobachtung ein Ausreißer ist. In diesem Zusammenhang wird ein Ausreißer auch als Neuerung bezeichnet.

Das scikit-learn-Projekt bietet eine Reihe von Machine-Learning-Tools, die sowohl für die Neuerungs- als auch für die Ausreißererkennung verwendet werden können. Diese Tools werden mit unüberwachten Lernalgorithmen implementiert, was bedeutet, dass sie Muster aus den Daten lernen, ohne dass gelabelte Beispiele erforderlich sind.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-71120{{"Neuentdeckungs- und Ausreißererkennung mit Scikit-Learn"}} end

Importieren der erforderlichen Bibliotheken

Zunächst müssen wir die erforderlichen Bibliotheken importieren. In diesem Beispiel werden wir das sklearn-Modul von scikit-learn verwenden.

from sklearn import neighbors

Lade den Datensatz

Als nächstes müssen wir den Datensatz laden, auf dem wir die Ausreißererkennung durchführen möchten. Sie können einen beliebigen Datensatz Ihrer Wahl verwenden oder einen benutzerdefinierten Datensatz erstellen. In diesem Beispiel werden wir einen Beispiel-Datensatz namens X_train verwenden.

X_train = [0.5, 1.5, 2.5, 3.5, 4.5, 10.5, 11.5, 12.5, 13.5, 14.5]

Erstelle einen Ausreißererkennungsschätzer

Jetzt können wir ein Ausreißererkennungsschätzerobjekt aus der Klasse neighbors.LocalOutlierFactor erstellen. Diese Klasse implementiert den Local Outlier Factor-Algorithmus, der eine beliebte Methode zur Ausreißererkennung ist.

estimator = neighbors.LocalOutlierFactor()

Passt das Modell an die Trainingsdaten an

Als nächstes können wir den Ausreißererkennungsschätzer an unsere Trainingsdaten anpassen, indem wir die fit-Methode verwenden.

estimator.fit(X_train)

Vorhersage von Ausreißern

Sobald das Modell trainiert ist, können wir die predict-Methode verwenden, um vorherzusagen, ob neue Beobachtungen Ausreißer sind oder nicht. Die predict-Methode gibt 1 für Innenelemente und -1 für Ausreißer zurück.

X_test = [5.5, 8.5]
predictions = estimator.predict(X_test)
print(predictions)

Zugang zu Ausreißerscores

Neben der Vorhersage von Ausreißern können wir auch die Ausreißerscores für jede Beobachtung über das Attribut negative_outlier_factor_ zugreifen. Niedrigere Ausreißerscores deuten auf eine höhere Abnormalität hin.

outlier_scores = estimator.negative_outlier_factor_
print(outlier_scores)

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit der scikit-learn-Bibliothek Neuentdeckungs- und Ausreißererkennung durchführt. Wir haben einen Ausreißererkennungsschätzer erstellt, ihn an die Trainingsdaten angepasst, Ausreißer in neuen Beobachtungen vorhergesagt und auf die Ausreißerscores zugegriffen. Diese Techniken können verwendet werden, um abnormale oder ungewöhnliche Beobachtungen in einem Datensatz zu identifizieren und werden häufig für Anomalieerkennungstasks eingesetzt.