sklearn.ensemble._weight_boosting.BaseWeightBoosting.fit
for iboost in range(self.n_estimators):
# Boosting step
sample_weight, estimator_weight, estimator_error = self._boost(
iboost,
X, y,
sample_weight,
random_state)
sample_weight_sum = np.sum(sample_weight)
if iboost < self.n_estimators - 1:
# Normalize
sample_weight /= sample_weight_sum
sklearn.ensemble._weight_boosting.AdaBoostClassifier._boost_discrete
estimator.fit(X, y, sample_weight=sample_weight)
sample_weight
Es wmi w_ {mi}wmi, Ajuste según el peso de la muestra
# Instances incorrectly classified
incorrect = y_predict != y
# Error fraction
estimator_error = np.mean(
np.average(incorrect, weights=sample_weight, axis=0))
La tasa de clasificación errónea es la suma de los pesos de las muestras clasificadas erróneamente: em = ∑ i = 1 N wmi I (G m (xi) ≠ yi) e_m = \ sum_ {i = 1} ^ {N} w_ {mi} I (G_m (x_i) \ neq y_i)mim=∑i = 1NwmiYo ( Gm( xyo)=yyo)
Si el efecto del alumno débil ni siquiera es aleatorio, deténgase temprano.
Calcular G m G_mGRAMOmEl coeficiente de α m = 1 2 log 1 - emem \ alpha_m = \ frac {1} {2} log \ frac {1-e_m} {e_m}am=21l o gmim1 - em
SAMME
El algoritmo considera múltiples clasificaciones y las multiplica por la atenuación de learning_rate para lograr la regularización.
wmi = exp (- yi α m - 1 G m - 1 (xi)) w_ {mi} = exp (-y_i \ alpha_ {m-1} G_ {m-1} (x_i)) wmi=exp(−yyoam - 1GRAMOm - 1( xyo) )
试想, y × y ^ y\times \hat{y} y×y^, En la segunda clasificación, solo si los dos son diferentes, será 1
De hecho, este escrito también tiene en cuenta la situación de múltiples categorías. Para multicategoría , solo necesita modificar α m \ alpha_mamEse es estimator_weight
el cálculo en el código .