AdaBoostClassifier / AdaBoostRegressor
API Reference
Signature
clf = sp.AdaBoostClassifier(
n_estimators=50, learning_rate=1.0
)
reg = sp.AdaBoostRegressor(
n_estimators=50, learning_rate=1.0
)
model.fit(X, y)
model.predict(X) -> list[int] | list[float]
model.predict_proba(X) -> ndarray (n, K) # classifier only
model.score(X, y) -> float
model.get_params() -> dict
model.set_params(n_estimators=..., learning_rate=...)
Constructor parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
n_estimators | int | 50 | Maximum number of weak learners |
learning_rate | float | 1.0 | Shrinkage applied to each weak learner's contribution |
Attributes
| Attribute | Type | Description |
|---|---|---|
classes_ | list[int] | Unique class labels (classifier only) |
estimator_weights_ | list[float] | Weight $\alpha_m$ assigned to each weak learner |
estimator_errors_ | list[float] | Weighted error of each weak learner |
Example
import seraplot as sp
import numpy as np
X = np.random.randn(300, 4)
y = np.sign(X[:, 0] * X[:, 1]).astype(int)
clf = sp.AdaBoostClassifier(n_estimators=100, learning_rate=0.5)
clf.fit(X, y)
print(f"Accuracy: {clf.score(X, y):.4f}")
Algorithmic Functioning
AdaBoost (Adaptive Boosting) builds a weighted sum of weak classifiers by iteratively re-weighting misclassified samples.
Initialisation — uniform sample weights:
Boosting iteration $m = 1, \ldots, M$:
1. Fit a weak learner $h_m$ to the weighted dataset.
2. Compute the weighted error:
3. Compute the learner weight (contribution of $h_m$):
where $\nu$ is the learning_rate. A perfect classifier ($\varepsilon_m = 0$) receives $\alpha_m \to \infty$; a random guesser ($\varepsilon_m = 0.5$) receives $\alpha_m = 0$.
4. Update and renormalise sample weights, down-weighting correctly classified samples:
Final classifier — weighted majority vote:
Regressor (AdaBoost.R2) — weak learners are fitted to the residuals weighted by a loss-based sample reweighting scheme, and the ensemble prediction is the weighted median.
Stopping condition: if $\varepsilon_m \geq 0.5$, the iteration is stopped early (the current learner is no better than random).
Référence API
Signature
clf = sp.AdaBoostClassifier(
n_estimators=50, learning_rate=1.0
)
reg = sp.AdaBoostRegressor(
n_estimators=50, learning_rate=1.0
)
model.fit(X, y)
model.predict(X) -> list[int] | list[float]
model.predict_proba(X) -> ndarray (n, K) # classificateur seulement
model.score(X, y) -> float
model.get_params() -> dict
model.set_params(n_estimators=..., learning_rate=...)
Paramètres du constructeur
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
n_estimators | int | 50 | Nombre maximum d'apprenants faibles |
learning_rate | float | 1.0 | Rétrécissement appliqué à la contribution de chaque apprenant faible |
Attributs
| Attribut | Type | Description |
|---|---|---|
classes_ | list[int] | Labels de classes uniques (classificateur seulement) |
estimator_weights_ | list[float] | Poids $\alpha_m$ attribué à chaque apprenant faible |
estimator_errors_ | list[float] | Erreur pondérée de chaque apprenant faible |
Exemple
import seraplot as sp
import numpy as np
X = np.random.randn(300, 4)
y = np.sign(X[:, 0] * X[:, 1]).astype(int)
clf = sp.AdaBoostClassifier(n_estimators=100, learning_rate=0.5)
clf.fit(X, y)
print(f"Précision : {clf.score(X, y):.4f}")
Fonctionnement algorithmique
AdaBoost (Adaptive Boosting) construit une somme pondérée de classificateurs faibles en ré-pondérant itérativement les échantillons mal classifiés.
Initialisation — poids d'échantillons uniformes :
Itération de boosting $m = 1, \ldots, M$ :
1. Ajuster un apprenant faible $h_m$ au jeu de données pondéré.
2. Calculer l'erreur pondérée :
3. Calculer le poids de l'apprenant (contribution de $h_m$) :
où $\nu$ est le learning_rate. Un classificateur parfait ($\varepsilon_m = 0$) reçoit $\alpha_m \to \infty$ ; un devineur aléatoire ($\varepsilon_m = 0,5$) reçoit $\alpha_m = 0$.
4. Mettre à jour et renormaliser les poids des échantillons, en réduisant le poids des échantillons correctement classifiés :
Classificateur final — vote majoritaire pondéré :
Régresseur (AdaBoost.R2) — les apprenants faibles sont ajustés aux résidus pondérés par un schéma de ré-pondération basé sur la perte, et la prédiction de l'ensemble est la médiane pondérée.
Condition d'arrêt : si $\varepsilon_m \geq 0,5$, l'itération s'arrête prématurément (l'apprenant courant n'est pas meilleur qu'aléatoire).