IsolationForest#

class sklearn.ensemble.IsolationForest(*, n_estimators=100, max_samples='auto', contamination='auto', max_features=1.0, bootstrap=False, n_jobs=None, random_state=None, verbose=0, warm_start=False)[Quelle]#

Isolation Forest Algorithmus.

Gibt den Anomalie-Score jedes Samples mit dem IsolationForest-Algorithmus zurück.

Der IsolationForest „isoliert“ Beobachtungen, indem zufällig ein Merkmal ausgewählt und dann ein zufälliger Aufteilungswert zwischen dem Maximum und Minimum des ausgewählten Merkmals gewählt wird.

Da rekursives Partitionieren durch eine Baumstruktur dargestellt werden kann, entspricht die Anzahl der Teilungen, die zur Isolierung eines Samples erforderlich sind, der Pfadlänge vom Wurzelknoten zum Endknoten.

Diese Pfadlänge, gemittelt über einen Wald solcher zufälliger Bäume, ist ein Maß für die Normalität und unsere Entscheidungsfunktion.

Zufällige Partitionierung erzeugt für Anomalien merklich kürzere Pfade. Wenn also ein Wald von Zufallsbäumen gemeinsam kürzere Pfadlängen für bestimmte Samples erzeugt, ist es sehr wahrscheinlich, dass es sich um Anomalien handelt.

Lesen Sie mehr im Benutzerhandbuch.

Hinzugefügt in Version 0.18.

Parameter:
n_estimatorsint, Standard=100

Die Anzahl der Basisschätzer im Ensemble.

max_samples„auto“, int oder float, Standardwert = „auto“

Die Anzahl der aus X zu ziehenden Samples, um jeden Basisschätzer zu trainieren.

  • Wenn int, dann werden max_samples Samples gezogen.

  • Wenn float, dann werden max_samples * X.shape[0] Samples gezogen.

  • Wenn „auto“, dann max_samples=min(256, n_samples).

Wenn max_samples größer ist als die Anzahl der bereitgestellten Samples, werden alle Samples für alle Bäume verwendet (kein Sampling).

contamination„auto“ oder float, Standardwert = „auto“

Der Grad der Kontamination des Datensatzes, d. h. der Anteil der Ausreißer im Datensatz. Wird beim Anpassen verwendet, um die Schwelle für die Scores der Samples zu definieren.

  • Wenn „auto“, wird die Schwelle wie im Originalpapier bestimmt.

  • Wenn float, sollte die Kontamination im Bereich (0, 0.5] liegen.

Geändert in Version 0.22: Der Standardwert von contamination wurde von 0.1 auf 'auto' geändert.

max_featuresint oder float, Standardwert=1.0

Die Anzahl der aus X zu ziehenden Merkmale, um jeden Basisschätzer zu trainieren.

  • Wenn int, dann werden max_features Merkmale gezogen.

  • Wenn float, dann werden max(1, int(max_features * n_features_in_)) Merkmale gezogen.

Hinweis: Die Verwendung einer Gleitkommazahl kleiner als 1.0 oder einer Ganzzahl kleiner als die Anzahl der Merkmale aktiviert das Merkmalsubsampling und führt zu einer längeren Laufzeit.

bootstrapbool, Standard=False

Wenn True, werden einzelne Bäume auf zufälligen Teilmengen der Trainingsdaten mit Ersetzung trainiert. Wenn False, wird Sampling ohne Ersetzung durchgeführt.

n_jobsint, default=None

Die Anzahl der parallel auszuführenden Jobs für fit. None bedeutet 1, es sei denn, es befindet sich in einem joblib.parallel_backend-Kontext. -1 bedeutet die Verwendung aller Prozessoren. Siehe Glossar für weitere Details.

random_stateint, RandomState-Instanz oder None, default=None

Steuert die Pseudozufälligkeit der Auswahl der Merkmals- und Aufteilungswerte für jeden Verzweigungsschritt und jeden Baum im Wald.

Geben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg an. Siehe Glossar.

verboseint, default=0

Steuert die Ausführlichkeit des Baumaufbauprozesses.

warm_startbool, Standard=False

Wenn auf True gesetzt, wird die Lösung des vorherigen Aufrufs von fit wiederverwendet und dem Ensemble weitere Schätzer hinzugefügt, andernfalls wird einfach ein komplett neuer Wald angepasst. Siehe das Glossar.

Hinzugefügt in Version 0.21.

Attribute:
estimator_ExtraTreeRegressor-Instanz

Die Kind-Estimator-Vorlage, die zum Erstellen der Sammlung von angepassten Unter-Estimators verwendet wird.

Hinzugefügt in Version 1.2: base_estimator_ wurde in estimator_ umbenannt.

estimators_Liste von ExtraTreeRegressor-Instanzen

Die Sammlung der angepassten Unter-Estimators.

estimators_features_Liste von ndarray

Die Teilmenge der für jeden Basisschätzer gezogenen Merkmale.

estimators_samples_Liste von ndarray

Die Teilmenge der gezogenen Samples für jeden Basis-Estimator.

max_samples_int

Die tatsächliche Anzahl von Samples.

offset_float

Offset, der verwendet wird, um die Entscheidungsfunktion aus den Roh-Scores zu definieren. Wir haben die Beziehung: decision_function = score_samples - offset_. offset_ ist wie folgt definiert: Wenn der Kontaminationsparameter auf „auto“ gesetzt ist, ist der Offset -0.5, da die Scores von Inlinern nahe 0 und die Scores von Auslinern nahe -1 liegen. Wenn ein anderer Kontaminationsparameter als „auto“ angegeben wird, wird der Offset so definiert, dass die erwartete Anzahl von Auslinern (Samples mit Entscheidungsfunktion < 0) beim Training erzielt wird.

Hinzugefügt in Version 0.20.

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

Hinzugefügt in Version 0.24.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der während fit gesehenen Merkmale. Nur definiert, wenn X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

Siehe auch

sklearn.covariance.EllipticEnvelope

Objekt zur Erkennung von Ausreißern in einem Gauß'schen Datensatz.

sklearn.svm.OneClassSVM

Unüberwachte Ausreißererkennung. Schätzt die Unterstützung einer hochdimensionalen Verteilung. Die Implementierung basiert auf libsvm.

sklearn.neighbors.LocalOutlierFactor

Unüberwachte Ausreißererkennung mittels Local Outlier Factor (LOF).

Anmerkungen

Die Implementierung basiert auf einem Ensemble von ExtraTreeRegressor. Die maximale Tiefe jedes Baumes ist auf ceil(log_2(n)) gesetzt, wobei \(n\) die Anzahl der zum Aufbau des Baumes verwendeten Samples ist (siehe [1] für weitere Details).

Referenzen

[1]

F. T. Liu, K. M. Ting und Z. -H. Zhou. „Isolation forest.“ 2008 Eighth IEEE International Conference on Data Mining (ICDM), 2008, S. 413–422.

[2]

F. T. Liu, K. M. Ting und Z. -H. Zhou. „Isolation-based anomaly detection.“ ACM Transactions on Knowledge Discovery from Data (TKDD) 6.1 (2012): 1-39.

Beispiele

>>> from sklearn.ensemble import IsolationForest
>>> X = [[-1.1], [0.3], [0.5], [100]]
>>> clf = IsolationForest(random_state=0).fit(X)
>>> clf.predict([[0.1], [0], [90]])
array([ 1,  1, -1])

Ein Beispiel für die Verwendung von Isolation Forest zur Anomalieerkennung finden Sie im IsolationForest-Beispiel.

decision_function(X)[Quelle]#

Durchschnittlicher Anomalie-Score von X der Basisklassifikatoren.

Der Anomalie-Score eines Eingabemusters wird als der mittlere Anomalie-Score der Bäume im Wald berechnet.

Das Maß für die Normalität einer Beobachtung, gegeben einen Baum, ist die Tiefe des Blattes, das diese Beobachtung enthält, was der Anzahl der Teilungen entspricht, die zur Isolierung dieses Punktes erforderlich sind. Bei mehreren Beobachtungen n_left im Blatt wird die durchschnittliche Pfadlänge eines Isolationsbaumes mit n_left Samples hinzugefügt.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Die Eingabestichproben. Intern wird sie in dtype=np.float32 konvertiert und, wenn eine Sparse-Matrix bereitgestellt wird, in eine Sparse- csr_matrix.

Gibt zurück:
scoresndarray der Form (n_samples,)

Der Anomalie-Score der Eingabemuster. Je niedriger, desto abnormaler. Negative Scores stellen Ausreißer dar, positive Scores stellen Inlier dar.

Anmerkungen

Die Methode decision_function kann durch die Einstellung eines joblib-Kontextes parallelisiert werden. Dies verwendet grundsätzlich NICHT den in der Klasse initialisierten n_jobs-Parameter, der während fit verwendet wird. Dies liegt daran, dass die Berechnung des Scores für eine kleine Anzahl von Samples, wie z. B. 1000 oder weniger, tatsächlich schneller ohne Parallelisierung sein kann. Der Benutzer kann die Anzahl der Jobs im joblib-Kontext festlegen, um die Anzahl der parallelen Jobs zu steuern.

from joblib import parallel_backend

# Note, we use threading here as the decision_function method is
# not CPU bound.
with parallel_backend("threading", n_jobs=4):
    model.decision_function(X)
fit(X, y=None, sample_weight=None)[Quelle]#

Schätzer anpassen.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Die Eingabemuster. Verwenden Sie dtype=np.float32 für maximale Effizienz. Sparse Matrizen werden ebenfalls unterstützt, verwenden Sie die Sparse csc_matrix für maximale Effizienz.

yIgnoriert

Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.

sample_weightarray-like der Form (n_samples,), Standardwert=None

Sample-Gewichte. Wenn None, dann sind die Samples gleichgewichtet.

Gibt zurück:
selfobject

Angepasster Schätzer.

fit_predict(X, y=None, **kwargs)[Quelle]#

Führt die Anpassung an X durch und gibt Labels für X zurück.

Gibt -1 für Ausreißer und 1 für Inlier zurück.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Die Eingabestichproben.

yIgnoriert

Wird nicht verwendet, ist aber aus Gründen der API-Konsistenz per Konvention vorhanden.

**kwargsdict

Argumente, die an fit übergeben werden sollen.

Hinzugefügt in Version 1.4.

Gibt zurück:
yndarray der Form (n_samples,)

1 für Inlier, -1 für Ausreißer.

get_metadata_routing()[Quelle]#

Holt das Metadaten-Routing dieses Objekts.

Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.

Hinzugefügt in Version 1.5.

Gibt zurück:
routingMetadataRouter

Ein MetadataRouter, der die Routing-Informationen kapselt.

get_params(deep=True)[Quelle]#

Holt Parameter für diesen Schätzer.

Parameter:
deepbool, default=True

Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.

Gibt zurück:
paramsdict

Parameternamen, zugeordnet ihren Werten.

predict(X)[Quelle]#

Vorhersagen, ob ein bestimmtes Sample ein Ausreißer ist oder nicht.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Die Eingabestichproben. Intern wird sie in dtype=np.float32 konvertiert und, wenn eine Sparse-Matrix bereitgestellt wird, in eine Sparse- csr_matrix.

Gibt zurück:
is_inlierndarray von Form (n_samples,)

Gibt für jede Beobachtung an, ob sie gemäß dem angepassten Modell als Inlier betrachtet werden sollte oder nicht (+1 oder -1).

Anmerkungen

Die Methode predict kann durch die Einstellung eines joblib-Kontextes parallelisiert werden. Dies verwendet grundsätzlich NICHT den in der Klasse initialisierten n_jobs-Parameter, der während fit verwendet wird. Dies liegt daran, dass die Vorhersage für eine kleine Anzahl von Samples, wie z. B. 1000 oder weniger, möglicherweise schneller ohne Parallelisierung ist. Der Benutzer kann die Anzahl der Jobs im joblib-Kontext festlegen, um die Anzahl der parallelen Jobs zu steuern.

from joblib import parallel_backend

# Note, we use threading here as the predict method is not CPU bound.
with parallel_backend("threading", n_jobs=4):
    model.predict(X)
score_samples(X)[Quelle]#

Gegenteil des im Originalpapier definierten Anomalie-Scores.

Der Anomalie-Score eines Eingabemusters wird als der mittlere Anomalie-Score der Bäume im Wald berechnet.

Das Maß für die Normalität einer Beobachtung, gegeben einen Baum, ist die Tiefe des Blattes, das diese Beobachtung enthält, was der Anzahl der Teilungen entspricht, die zur Isolierung dieses Punktes erforderlich sind. Bei mehreren Beobachtungen n_left im Blatt wird die durchschnittliche Pfadlänge eines Isolationsbaumes mit n_left Samples hinzugefügt.

Parameter:
X{array-like, sparse matrix} der Form (n_samples, n_features)

Die Eingabestichproben.

Gibt zurück:
scoresndarray der Form (n_samples,)

Der Anomalie-Score der Eingabemuster. Je niedriger, desto abnormaler.

Anmerkungen

Die Score-Funktionsmethode kann durch die Einstellung eines joblib-Kontextes parallelisiert werden. Dies verwendet grundsätzlich NICHT den in der Klasse initialisierten n_jobs-Parameter, der während fit verwendet wird. Dies liegt daran, dass die Berechnung des Scores für eine kleine Anzahl von Samples, wie z. B. 1000 oder weniger, möglicherweise schneller ohne Parallelisierung ist. Der Benutzer kann die Anzahl der Jobs im joblib-Kontext festlegen, um die Anzahl der parallelen Jobs zu steuern.

from joblib import parallel_backend

# Note, we use threading here as the score_samples method is not CPU bound.
with parallel_backend("threading", n_jobs=4):
    model.score(X)
set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') IsolationForest[Quelle]#

Konfiguriert, ob Metadaten für die fit-Methode angefordert werden sollen.

Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit enable_metadata_routing=True aktiviert ist (siehe sklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.

Die Optionen für jeden Parameter sind

  • True: Metadaten werden angefordert und, falls vorhanden, an fit übergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an fit.

  • None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.

  • str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.

Der Standardwert (sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.

Hinzugefügt in Version 1.3.

Parameter:
sample_weightstr, True, False, oder None, Standardwert=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter sample_weight in fit.

Gibt zurück:
selfobject

Das aktualisierte Objekt.

set_params(**params)[Quelle]#

Setzt die Parameter dieses Schätzers.

Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie Pipeline). Letztere haben Parameter der Form <component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.

Parameter:
**paramsdict

Schätzer-Parameter.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.