La idea clave de AdaBoost es volver sobre los errores. Cada clasificador débil aporta una corrección parcial y la combinación ponderada de esas correcciones construye un clasificador final mucho más robusto.
Cuanto menor sea la tasa de aprendizaje, menor será el rango de las actualizaciones de pesos. Por el contrario, si es demasiado grande, es posible que no ocurra la convergencia.
N_estimators especifica el número de aprendices débiles. Normalmente, no es necesario hacer este parámetro más grande o más pequeño. Fija n_estimators en un número grande y luego ajusta los demás parámetros.
# NOTA: Modelo creado para verificar el sample_weight pasado al modelo# Este DummyClassifier no cambia los parámetros del AdaboostclassDummyClassifier:def__init__(self):self.model=DecisionTreeClassifier(max_depth=3)self.n_classes_=2self.classes_=["A","B"]self.sample_weight=None## sample_weightdeffit(self,X,y,sample_weight=None):self.sample_weight=sample_weightself.model.fit(X,y,sample_weight=sample_weight)returnself.modeldefpredict(self,X,check_input=True):proba=self.model.predict(X)returnprobadefget_params(self,deep=False):return{}defset_params(self,deep=False):return{}n_samples=500X_2,y_2=make_classification(n_samples=n_samples,n_features=2,n_informative=2,n_redundant=0,n_repeated=0,random_state=117,n_clusters_per_class=2,)plt.figure(figsize=(7,7,))plt.title(f"Scatter plots of sample data")plt.scatter(X_2[:,0],X_2[:,1],c=y_2)plt.show()
Peso después de que el proceso de arranque ha avanzado
#
Los datos con mayor peso se representan con un círculo más grande.
clf=AdaBoostClassifier(n_estimators=4,random_state=0,algorithm="SAMME",base_estimator=DummyClassifier())clf.fit(X_2,y_2)fori,estimators_iinenumerate(clf.estimators_):plt.figure(figsize=(7,7,))plt.title(f"Visualization of the {i}-th weighted sample")plt.scatter(X_2[:,0],X_2[:,1],marker="o",c=y_2,alpha=0.4,s=estimators_i.sample_weight*n_samples**1.65,)plt.show()