AdaBoost

AdaBoost entrena de forma secuencial un conjunto de aprendices débiles a partir de un algoritmo base común. Todos los aprendices son entrenados con el mismo conjunto de datos pero éstos van recibiendo pesos que dependen de los errores cometidos por cada aprendiz. Así, inicialmente todos las muestras reciben un peso inicial wi de 1/n (suponiendo que haya n muestras). El primer aprendiz es entrenado y se estima su tasa de error. Suponiendo que estemos trabajando en un problema de clasificación, esta tasa de error (en general, para el aprendiz j-ésimo) sería:

Tasa de error del aprendiz j-ésimo

Si no ha habido muestras mal clasificadas, esta tasa de error será 0. Por el contrario, si todas las muestras han sido mal clasificadas, esta tasa será 1.

A continuación, el aprendiz recibe un peso que será tenido en cuenta al final del proceso para estimar una predicción final. Este peso viene dado por la siguiente función:

Peso recibido por el aprendiz j-ésimo

Esta función, para diferentes valores de η, tiene la siguiente forma:

Peso del aprendiz en función de su tasa de error

Como vemos, cuanto menor es la tasa de error, mayor será el peso que el aprendiz reciba (en el límite, un error de 0 supone un peso infinito). η es la llamada tasa de aprendizaje, o learning rate, que determina la contribución de cada aprendiz: una tasa de aprendizaje menor supone una menor variación en los pesos asignados aun cuando el rendimiento haya sido muy diferente. Por el contrario, una tasa de aprendizaje mayor supone que pequeños cambios en la tasa de error se plasme en pesos muy diferentes.

Una vez entrenado el aprendiz y calculada su tasa de error y peso relativo, se actualizan los pesos de las muestras de forma que aquellas para las que la predicción fue incorrecta vean incrementado su peso:

Modificación de los pesos de las muestras

Es decir, las muestras bien clasificadas no ven modificado su peso. Por el contrario, aquellas mal clasificadas ven su peso multiplicado por la exponencial del peso del aprendiz. Esta función tiene la siguiente forma:

Incremento del peso de cada muestra en función del peso del aprendiz

Obsérvese que, cuando el aprendiz ha tenido un muy mal comportamiento (cuando su tasa de error ha sido próxima a 1, lo que supone un peso del aprendiz negativo), los pesos de las muestras mal clasificadas son multiplicados por valores próximos a cero. En circunstancias normales, con una tasa de error del aprendiz inferior a 0.5, las muestras mal clasificadas ven multiplicado su peso por un valor superior a 1 (mayor cuanto mayor haya sido el peso del aprendiz, según la gráfica anterior).

Una vez actualizados los pesos de las muestras, se normalizan dividiéndolos por la suma total de los pesos.

De esta forma, el siguiente aprendiz se ve obligado a concentrarse en aquellas muestras que hayan resultado más difíciles para el aprendiz anterior (aquellas con pesos mayores).

Cuando todos los aprendices han sido entrenados, AdaBoost realiza la predicción final dando a cada aprendiz un voto ponderado según el peso relativo que haya recibido.

Scikit-learn implementa este tipo de ensamblado en las clases sklearn.ensemble.AdaBoostClassifier y sklearn.ensemble.AdaBoostRegressor.