Contenu du cours
Apprentissage Ensembliste
Apprentissage Ensembliste
1. Principes de Base de la Construction de Modèles d'Ensemble
2. Modèles de Bagging Couramment Utilisés
Utilisation des Ensembles comme Modèles de Base
Utiliser des modèles d'ensemble comme modèles de base dans un cadre d'ensemble empilé est une approche sophistiquée en apprentissage automatique qui offre plusieurs avantages et inconvénients. Ici, nous examinons les détails de cette méthode.
Avantages de l'utilisation des ensembles comme modèles de base dans les ensembles empilés :
- Performance Prédictive Améliorée : Les modèles d'ensemble, tels que les Forêts Aléatoires, le Gradient Boosting ou AdaBoost, sont réputés pour leur capacité à améliorer la précision prédictive. En intégrant des modèles d'ensemble comme apprenants de base, l'empilement peut exploiter la puissance prédictive collective de ces modèles, ce qui se traduit souvent par une performance supérieure par rapport aux modèles individuels ;
- Approches de Modélisation Diversifiées : Les ensembles introduisent de la diversité dans les modèles de base d'un ensemble empilé. Différentes techniques d'ensemble ont des forces et des faiblesses distinctes. Les combiner élargit la gamme des approches de modélisation employées, rendant l'ensemble plus apte à gérer des motifs de données et des complexités diversifiés ;
- Robustesse Contre le Surapprentissage : L'empilement avec des modèles d'ensemble peut atténuer le surapprentissage. Les ensembles excellent à réduire l'impact du bruit ou des valeurs aberrantes dans les données, améliorant ainsi la capacité de l'ensemble empilé à bien généraliser aux données non vues.
Inconvénients de l'utilisation des ensembles comme modèles de base dans les ensembles empilés :
- Complexité Accrue du Modèle : Employer des modèles d'ensemble comme apprenants de base introduit de la complexité dans l'ensemble empilé. Gérer plusieurs modèles d'ensemble nécessite une considération attentive du réglage des hyperparamètres, des temps d'entraînement et des ressources informatiques ;
- Surcharge Computationnelle : Les ensembles, en particulier les ensembles profonds ou larges, peuvent être intensifs en calcul à entraîner et à évaluer. Cela peut entraîner des temps d'entraînement plus longs et peut ne pas convenir aux applications en temps réel ou avec des ressources limitées ;
- Préoccupations d'Interprétabilité : Les ensembles, en particulier les ensembles profonds, sont souvent considérés comme moins interprétables que les modèles individuels. Cette interprétabilité réduite peut entraver la compréhension des prédictions du modèle, limitant potentiellement l'utilité du modèle dans certains domaines où l'interprétabilité est cruciale.
Exemple
Nous utiliserons le jeu de données 'steel-plates-fault'
et tenterons de créer un Classificateur Empilé avec des ensembles comme modèles de base :
from sklearn.datasets import fetch_openml from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier from sklearn.neural_network import MLPClassifier from sklearn.ensemble import StackingClassifier from sklearn.metrics import f1_score import warnings warnings.filterwarnings('ignore') # Step 1: Load the dataset using fetch_openml dataset = fetch_openml("steel-plates-fault", version=1) # Extract features (X) and target variable (y) X = dataset.data y = dataset.target # Step 2: 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) # Step 3: Create base models rf_model = RandomForestClassifier(n_estimators=100, random_state=42) ada_model = AdaBoostClassifier(n_estimators=50, random_state=42) # Step 4: Create the meta model (neural network) meta_model = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=500) # Step 5: Create the stacking classifier base_models = [('rf', rf_model), ('ada', ada_model)] stacking_classifier = StackingClassifier(estimators=base_models, final_estimator=meta_model) # Step 6: Train the stacking classifier stacking_classifier.fit(X_train, y_train) # Step 7: Make predictions y_pred = stacking_classifier.predict(X_test) # Step 8: Evaluate the results using F1 score f1 = f1_score(y_test, y_pred, average='weighted') print('F1 Score:', f1)
Tout était clair ?
Merci pour vos commentaires !
Section 4. Chapitre 4