¿Qué es AdaBoost?

Considere Machine Learning University. Consiguen 10 solicitantes por cada puesto de primer año disponible. El comité de solicitud de 6 profesionales (A, B, C, D, E, F) se encarga de decidir a quién aceptar. Han estado haciendo esto durante años y su principal preocupación es: “¿Quién tendrá éxito en MLU?”

El primer año, simplemente hicieron que todos votaran sí o no. Pero después de unos años, podrían mirar sus registros de votación y compararlos con la forma en que los estudiantes realmente lo hicieron (para este ejemplo, un pase binario o no).

Como se trata de MLU, descubrieron que el Administrador C tenía el mayor poder predictivo. Consideremos su voto más alto. Desafortunadamente, ella solo tuvo éxito en predecir el 60% del tiempo.

El siguiente predictor más poderoso fue el administrador D, pero las respuestas de D estaban muy correlacionadas con C. Era como si estuvieran considerando el mismo criterio, pero C era mejor en eso. Así que dejemos de lado a D por ahora.

D es mejor que F, pero F parece estar mirando algunos criterios diferentes que C o D (quizás centrándose en actividades extra curriculares en lugar de académicas). El poder predictivo de F es menor que C o D, pero combinado con C, F agrega más información que D. Es decir, C y F es un mejor clasificador que C y D a pesar de que D es mejor que F. ¿Obtuviste eso?

Y así continúa. Incluso encontramos que la predicción de B se correlaciona negativamente con el éxito del estudiante. Pero eso está bien. No la despediremos. En MLU se valora cualquier cosa diferente al azar. Simplemente pondremos un coeficiente negativo frente a su suposición. Sin embargo, decidimos que D no estaba agregando nada nuevo y lo dejamos volver a investigar.

Así que ahora, en lugar de sumar los votos por igual A + B + C + D + E + F y elegir el mejor, ponderamos estos clasificadores débiles para hacer uno mucho más fuerte.

Eso, mi amigo, es AdaBoost.

Para un tratamiento más técnico, consulte Wikipedia o este Tutorial de Raul Rojas.

AdaBoost es un tipo de “Ensemble Learning” donde se emplean múltiples estudiantes para construir un algoritmo de aprendizaje más fuerte. AdaBoost funciona al elegir un algoritmo base (por ejemplo, árboles de decisión) y mejorarlo iterativamente contabilizando los ejemplos clasificados incorrectamente en el conjunto de entrenamiento.

Asignamos pesos iguales a todos los ejemplos de entrenamiento y elegimos un algoritmo base. En cada paso de la iteración, aplicamos el algoritmo base al conjunto de entrenamiento y aumentamos los pesos de los ejemplos clasificados incorrectamente. Repetimos n veces, cada vez que aplicamos el alumno base en el conjunto de entrenamiento con pesas actualizadas. El modelo final es la suma ponderada de los n alumnos.

AdaBoost es un método de aprendizaje automático extremadamente exitoso y Schapire y Freund ganaron el Premio Godel en 2003 por su construcción del algoritmo AdaBoost.

La esencia del refuerzo adaptativo es la siguiente. Por ahora, consideremos el caso de clasificación binaria. Esta es una versión súper simplificada que evita todas las matemáticas, pero le da el sabor:

1. Tome su algoritmo de aprendizaje favorito.
2. Aplíquelo en sus datos. Digamos que tenemos 100 ejemplos. Obtendrá algunas de las etiquetas de clase incorrectas. Digamos que lo tienes 90 correcto, 10 incorrecto.
3. Vuelva a evaluar o muestrear las instancias en el conjunto de entrenamiento para que su algoritmo de aprendizaje ahora tenga una tasa de error del 50%. Entonces, por ejemplo, podría decir algo como “Voy a copiar los que me equivoqué 9 veces para la próxima iteración”. Esto hace que el conjunto de datos 90 sea correcto y 90 incorrecto.
4. Vuelva al paso 2, pero aplíquelo al nuevo conjunto de datos del paso 3. Siga repitiendo este proceso, cada vez que produzca un nuevo clasificador.
5. Deténgase cuando (a) haya hecho esto suficientes veces (b) obtendrá el 100% de precisión.
Esto le da, digamos, 7 clasificadores diferentes.
6. Para clasificar, haga un “voto” en todos los algoritmos de aprendizaje que creó en los pasos 2 a 4.

La idea clave aquí es que al centrarnos en los casos marginales (los que están cerca del límite de decisión), podemos “aumentar” nuestra precisión de clasificación.

El concepto básico detrás de AdaBoost es crear un clasificador fuerte mediante la coyuntura de muchos clasificadores débiles (tasa de aciertos apenas superior al 50%). Si lo está utilizando para la selección de características para el reconocimiento de expresiones faciales, siempre puede mirar el tutorial de implementación del complemento de entrenamiento de OpenCV: Entrenamiento de OpenCV (Detección rápida de objetos con una cascada de clasificadores potenciados basados ​​en características similares a Haar) para inspirarse.

Si desea aprender a implementar AdaBoost, siempre puede buscar el artículo original de Freund y Schapire: http://cseweb.ucsd.edu/~yfreund/

Si desea utilizar Adaboost para la detección en sí, puede ver este artículo que utiliza Adaboost para el reconocimiento facial: http://www.face-rec.org/algorith

Sí, se puede encontrar una muy buena explicación en AdaBoost Tutorial. De hecho, este algoritmo cambia los pesos dinámicamente en función del rendimiento de los clasificadores débiles. Este algoritmo sigue la función de tipo sigmoide (0.5 * ln ((1-x) / x)) durante la suma o resta de pesos.

Digamos que la tarea es clasificar el género M / F de un conjunto de puntos de datos 3D. Cada punto de datos tiene la altura, el peso y la edad de las personas. Digamos que tenemos una regla / hipótesis de clasificación simple h1: vamos a asignar el género en función de la altura umbral. Si la altura de una persona es mayor a 170 cms, asignamos masculino, de lo contrario lo clasificamos como femenino. Este es un ejemplo de un clasificador débil cuyos resultados serían mejores que una clasificación aleatoria del género (por supuesto, suponemos una gran muestra representativa de alturas). Podemos tener otra hipótesis estúpida h2: calcular el IMC y asignar hombres o mujeres según algunos umbrales basados ​​en el IMC y la edad. Este es otro clasificador débil. Lo que AdaBoost nos da es un clasificador maestro o hipótesis H cuyos resultados de clasificación serían mejores que usar h1 o h2.

Una muy buena explicación se puede encontrar aquí:
Tutorial AdaBoost y
Página en princeton.edu

Excelente explicación de Janu Verma. Un enfoque diferente sería: la idea de AdaBoost es que en ciertos tipos de conjuntos de datos, un solo clasificador puede no ser suficiente para determinar la clase. AdaBoost trabaja en la fase de entrenamiento, viendo cómo se debe prestar mayor atención a un clasificador que falló durante la clasificación (aumentar el peso) porque ‘se ocupa de casos especiales de clasificación’.