Contenu du cours
Apprentissage Ensembliste
Apprentissage Ensembliste
Classificateur AdaBoost
AdaBoost est un algorithme d'apprentissage par ensemble qui se concentre sur l'amélioration des performances des apprenants faibles. Il fonctionne en entraînant de manière itérative une séquence de classificateurs faibles sur des versions pondérées des données d'entraînement. La prédiction finale est une combinaison pondérée des prédictions faites par ces classificateurs faibles. AdaBoost attribue des poids plus élevés aux échantillons mal classés, permettant aux modèles suivants de se concentrer sur les instances difficiles à classer.
Comment fonctionne AdaBoost ?
- Initialiser les poids : Attribuer des poids égaux à tous les échantillons d'entraînement ;
- Entraîner un classificateur faible : Entraîner un classificateur faible sur les données d'entraînement en utilisant les poids actuels des échantillons. Le classificateur faible vise à minimiser le taux d'erreur pondéré, où les poids mettent l'accent sur les échantillons mal classés ;
- Calculer le poids du classificateur : Calculer le poids du classificateur entraîné en fonction de sa précision. Les meilleurs classificateurs se voient attribuer des poids plus élevés ;
- Mettre à jour les poids des échantillons : Mettre à jour les poids des échantillons, en donnant des poids plus élevés aux échantillons mal classés du classificateur actuel ;
- Répéter : Répéter les étapes 2-4 pour un nombre prédéfini d'itérations (ou jusqu'à ce qu'un certain seuil soit atteint) ;
- Prédiction finale : Combiner les prédictions de tous les classificateurs faibles en additionnant les prédictions pondérées. La classe avec la majorité des votes devient la prédiction finale.
Exemple
Nous pouvons utiliser la classe AdaBoostClassifier
en Python pour entraîner un modèle AdaBoost et fournir des prédictions sur des données réelles :
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.ensemble import AdaBoostClassifier from sklearn.metrics import f1_score # Load the Iris dataset data = load_iris() X = data.data y = data.target # 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 a Logistic Regression base model base_model = LogisticRegression() # Create and train the AdaBoost Classifier with Logistic Regression as base model classifier = AdaBoostClassifier(base_model, n_estimators=50) classifier.fit(X_train, y_train) # Make predictions y_pred = classifier.predict(X_test) # Calculate F1 score f1 = f1_score(y_test, y_pred, average='weighted') print(f'F1 Score: {f1:.4f}')
Merci pour vos commentaires !