Kursinhalt
Ensemble-Lernen
Ensemble-Lernen
1. Grundprinzipien des Aufbaus von Ensemble-Modellen
Extrabäume
Extra Trees, kurz für Extremely Randomized Trees, ist eine Bagging-Ensemble-Lerntechnik, die auf dem Konzept der Entscheidungsbäume aufbaut, um ein robusteres und vielfältigeres Modell zu erstellen.
Wie funktioniert der ExtraTrees-Algorithmus?
Es ist eine Variation des Random-Forest-Algorithmus, die noch mehr Zufälligkeit in den Baumaufbau einführt:
- Der Extra-Trees-Algorithmus erstellt, wie der Random-Forests-Algorithmus, viele Entscheidungsbäume, aber das Sampling für jeden Baum erfolgt zufällig, ohne Zurücklegen;
- Eine bestimmte Anzahl von Merkmalen aus der Gesamtheit der Merkmale wird ebenfalls zufällig für jeden Baum ausgewählt;
- Das wichtigste und einzigartige Merkmal von Extra Trees ist die zufällige Auswahl eines Trennwerts für ein Merkmal. Anstatt einen lokal optimalen Wert mit Gini oder Entropie zu berechnen, um die Daten zu trennen, wählt der Algorithmus zufällig einen Trennwert aus. Dies macht die Bäume diversifiziert und unkorreliert.
Hinweis
Wir können auch das Attribut
.feature_importances_
verwenden, um die Auswirkungen der Merkmale auf das Ergebnis des Modells zu messen.
Beispiel
Wir können ExtraTrees in Python genauso wie Random Forest mit den Klassen ExtraTreesClassifier
oder ExtraTreesRegressor
verwenden:
# Import necessary libraries from sklearn.model_selection import train_test_split from sklearn.ensemble import ExtraTreesRegressor from sklearn.metrics import mean_squared_error import numpy as np # Generate example data with a more complex relationship np.random.seed(42) X = np.random.rand(100, 2) # 100 samples with 2 features y = 3*X[:, 0]**2 + 5*X[:, 1]**3 + np.random.normal(0, 2, 100) # Complex relationship with noise # Split the data into training and testing sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Create and train the ExtraTrees Regressor regressor = ExtraTreesRegressor(n_estimators=100, random_state=42) regressor.fit(X_train, y_train) # Make predictions y_pred = regressor.predict(X_test) # Calculate Mean Squared Error (MSE) as the evaluation metric mse = mean_squared_error(y_test, y_pred) print(f'Mean Squared Error: {mse:.4f}') # Get feature importances feature_importances = regressor.feature_importances_ # Print feature importances print('Feature Importances:') for feature, importance in enumerate(feature_importances): print(f'Feature {feature}: {importance:.4f}')
War alles klar?
Danke für Ihr Feedback!
Abschnitt 2. Kapitel 7