AdaBoost (abreviatura de Adaptive Boosting ) es un metaalgoritmo de clasificación estadística formulado por Yoav Freund y Robert Schapire en 1995, quienes ganaron el Premio Gödel en 2003 por su trabajo. Se puede utilizar junto con muchos tipos de algoritmos de aprendizaje para mejorar el rendimiento. La salida de múltiples aprendices débiles se combina en una suma ponderada que representa la salida final del clasificador potenciado. Por lo general, AdaBoost se presenta para la clasificación binaria , aunque se puede generalizar a múltiples clases o intervalos acotados de valores reales . [1] [2]
AdaBoost es adaptativo en el sentido de que los aprendices débiles subsiguientes (modelos) se ajustan en favor de las instancias clasificadas incorrectamente por los modelos anteriores. En algunos problemas, puede ser menos susceptible al sobreajuste que otros algoritmos de aprendizaje. Los aprendices individuales pueden ser débiles, pero siempre que el rendimiento de cada uno sea ligeramente mejor que la suposición aleatoria, se puede demostrar que el modelo final converge hacia un aprendiz fuerte.
Aunque AdaBoost se utiliza normalmente para combinar aprendices de base débiles (como árboles de decisión ), se ha demostrado que también combina de forma eficaz aprendices de base fuertes (como árboles de decisión más profundos ), lo que produce un modelo aún más preciso. [3]
Cada algoritmo de aprendizaje tiende a adaptarse mejor a algunos tipos de problemas que a otros, y normalmente tiene muchos parámetros y configuraciones diferentes que ajustar antes de lograr un rendimiento óptimo en un conjunto de datos . AdaBoost (con árboles de decisión como aprendices débiles) a menudo se conoce como el mejor clasificador listo para usar. [4] [5] Cuando se utiliza con el aprendizaje de árboles de decisión, la información recopilada en cada etapa del algoritmo AdaBoost sobre la "dureza" relativa de cada muestra de entrenamiento se introduce en el algoritmo de crecimiento de árboles de modo que los árboles posteriores tienden a centrarse en ejemplos más difíciles de clasificar.
AdaBoost se refiere a un método particular de entrenamiento de un clasificador mejorado. Un clasificador mejorado es un clasificador de la forma donde cada uno es un aprendiz débil que toma un objeto como entrada y devuelve un valor que indica la clase del objeto. Por ejemplo, en el problema de dos clases, el signo de la salida del aprendiz débil identifica la clase de objeto predicha y el valor absoluto brinda la confianza en esa clasificación. De manera similar, el clasificador -ésimo es positivo si la muestra está en una clase positiva y negativo en caso contrario.
Cada aprendiz débil produce una hipótesis de salida que fija una predicción para cada muestra en el conjunto de entrenamiento. En cada iteración , se selecciona un aprendiz débil y se le asigna un coeficiente de modo que se minimice el error de entrenamiento total del clasificador mejorado de la etapa resultante.
Aquí está el clasificador mejorado que se ha construido hasta la etapa anterior de entrenamiento y es el alumno débil que se está considerando para agregarlo al clasificador final.
En cada iteración del proceso de entrenamiento, se asigna un peso a cada muestra del conjunto de entrenamiento igual al error actual de esa muestra. Estos pesos se pueden utilizar en el entrenamiento del alumno débil. Por ejemplo, se pueden crear árboles de decisión que favorezcan la división de conjuntos de muestras con pesos elevados.
Esta derivación sigue a Rojas (2009): [6]
Supongamos que tenemos un conjunto de datos donde cada elemento tiene una clase asociada y un conjunto de clasificadores débiles, cada uno de los cuales genera una clasificación para cada elemento. Después de la iteración -ésima, nuestro clasificador mejorado es una combinación lineal de los clasificadores débiles de la forma: donde la clase será el signo de . En la iteración -ésima, queremos extender esto a un clasificador mejorado mejor agregando otro clasificador débil , con otro peso :
Por lo tanto, queda determinar qué clasificador débil es la mejor opción para , y cuál debería ser su peso . Definimos el error total de como la suma de su pérdida exponencial en cada punto de datos, dada de la siguiente manera:
Dejando y para , tenemos:
Podemos dividir esta suma entre aquellos puntos de datos que están correctamente clasificados por (por lo que ) y aquellos que están mal clasificados (por lo que ):
Dado que la única parte del lado derecho de esta ecuación que depende de es , vemos que el que minimiza es el del conjunto que minimiza [suponiendo que ], es decir, el clasificador débil con el error ponderado más bajo (con pesos ).
Para determinar el peso deseado que se minimiza con el que acabamos de determinar, diferenciamos:
Afortunadamente, el mínimo se produce al establecerlo en cero y, luego, al resolverlo, se obtiene lo siguiente:
porque no depende de
Calculamos que la tasa de error ponderada del clasificador débil es , por lo que se deduce que: que es la función logit negativa multiplicada por 0,5. Debido a la convexidad de como función de , esta nueva expresión para da el mínimo global de la función de pérdida.
Nota: Esta derivación solo se aplica cuando , aunque puede ser una buena estimación inicial en otros casos, como cuando el alumno débil es parcial ( ), tiene múltiples hojas ( ) o es alguna otra función .
De esta manera, hemos derivado el algoritmo AdaBoost: en cada iteración, elija el clasificador que minimice el error ponderado total , utilícelo para calcular la tasa de error , utilícelo para calcular el peso y, finalmente, utilícelo para mejorar el clasificador potenciado a .
El boosting es una forma de regresión lineal en la que las características de cada muestra son los resultados de algún alumno débil aplicado a .
Mientras que la regresión intenta ajustarse con la mayor precisión posible sin pérdida de generalización, generalmente utilizando el error de mínimos cuadrados , la función de error de AdaBoost tiene en cuenta el hecho de que solo se utiliza el signo del resultado final, por lo que puede ser mucho mayor que 1 sin aumentar el error. Sin embargo, el aumento exponencial del error para la muestra a medida que aumenta, lo que da como resultado que se asignen pesos excesivos a los valores atípicos.
Una característica de la elección de la función de error exponencial es que el error del modelo aditivo final es el producto del error de cada etapa, es decir, . De este modo, se puede observar que la actualización de peso en el algoritmo AdaBoost es equivalente a recalcular el error después de cada etapa.
Se permite una gran flexibilidad en la elección de la función de pérdida. Mientras la función de pérdida sea monótona y continuamente diferenciable , el clasificador siempre se orienta hacia soluciones más puras. [7] Zhang (2004) proporciona una función de pérdida basada en mínimos cuadrados, una función de pérdida de Huber modificada :
Esta función se comporta mejor que LogitBoost para valores cercanos a 1 o -1, no penaliza las predicciones "excesivamente confiadas" ( ), a diferencia de los mínimos cuadrados no modificados, y solo penaliza las muestras mal clasificadas con una confianza mayor a 1 de forma lineal, en lugar de cuadrática o exponencial, y por lo tanto es menos susceptible a los efectos de los valores atípicos.
El impulso se puede ver como la minimización de una función de pérdida convexa sobre un conjunto convexo de funciones. [8] Específicamente, la pérdida que se minimiza con AdaBoost es la pérdida exponencial , mientras que LogitBoost realiza una regresión logística, minimizando
En la analogía del descenso de gradiente, la salida del clasificador para cada punto de entrenamiento se considera un punto en un espacio n-dimensional, donde cada eje corresponde a una muestra de entrenamiento, cada aprendiz débil corresponde a un vector de orientación y longitud fijas, y el objetivo es alcanzar el punto objetivo (o cualquier región donde el valor de la función de pérdida sea menor que el valor en ese punto), en la menor cantidad de pasos. Por lo tanto, los algoritmos AdaBoost realizan una optimización de Cauchy (encuentra con el gradiente más pronunciado, elige minimizar el error de prueba) o Newton (elige un punto objetivo, encuentra el que se acerca más a ese punto) del error de entrenamiento.
Con:
Para en :
El resultado de los árboles de decisión es una estimación de probabilidad de clase , la probabilidad que se encuentra en la clase positiva. [7] Friedman, Hastie y Tibshirani derivan un minimizador analítico para algún error fijo (generalmente elegido utilizando el error de mínimos cuadrados ponderado):
De este modo, en lugar de multiplicar la salida de todo el árbol por un valor fijo, cada nodo hoja se modifica para generar la mitad de la transformación logit de su valor anterior.
LogitBoost representa una aplicación de técnicas de regresión logística establecidas al método AdaBoost. En lugar de minimizar el error con respecto a y, se eligen estudiantes débiles para minimizar el error (mínimos cuadrados ponderados) de con respecto a donde
Esta es la aproximación de Newton-Raphson del minimizador del error de log-verosimilitud en la etapa , y el alumno débil se elige como el alumno que mejor se aproxima mediante mínimos cuadrados ponderados.
A medida que p se acerca a 1 o 0, el valor de se vuelve muy pequeño y el término z , que es grande para muestras mal clasificadas, puede volverse numéricamente inestable debido a errores de redondeo de precisión de la máquina. Esto se puede superar imponiendo algún límite al valor absoluto de z y al valor mínimo de w
Mientras que los algoritmos de boosting anteriores eligen con avidez, minimizando el error general de prueba tanto como sea posible en cada paso, GentleBoost presenta un tamaño de paso acotado. se elige para minimizar , y no se aplica ningún coeficiente adicional. Por lo tanto, en el caso en que un aprendiz débil exhibe un rendimiento de clasificación perfecto, GentleBoost elige exactamente igual a , mientras que los algoritmos de descenso más empinado intentan establecer . Las observaciones empíricas sobre el buen rendimiento de GentleBoost parecen respaldar la observación de Schapire y Singer de que permitir valores excesivamente grandes de puede conducir a un rendimiento de generalización deficiente. [9] [10]
Una técnica para acelerar el procesamiento de clasificadores potenciados, la terminación temprana se refiere a probar cada objeto potencial solo con tantas capas del clasificador final como sea necesario para cumplir con un umbral de confianza, acelerando el cálculo para los casos en los que la clase del objeto se puede determinar fácilmente. Uno de estos esquemas es el marco de detección de objetos introducido por Viola y Jones: [11] en una aplicación con significativamente más muestras negativas que positivas, se entrena una cascada de clasificadores potenciados separados, la salida de cada etapa se sesga de tal manera que una fracción aceptablemente pequeña de muestras positivas se etiqueta incorrectamente como negativa, y todas las muestras marcadas como negativas después de cada etapa se descartan. Si el 50% de las muestras negativas se filtran en cada etapa, solo una cantidad muy pequeña de objetos pasaría por todo el clasificador, lo que reduce el esfuerzo de cálculo. Este método se ha generalizado desde entonces, con una fórmula proporcionada para elegir umbrales óptimos en cada etapa para lograr una tasa deseada de falsos positivos y falsos negativos. [12]
En el campo de las estadísticas, donde AdaBoost se aplica más comúnmente a problemas de dimensionalidad moderada, la detención temprana se utiliza como una estrategia para reducir el sobreajuste . [13] Un conjunto de validación de muestras se separa del conjunto de entrenamiento, el rendimiento del clasificador en las muestras utilizadas para el entrenamiento se compara con el rendimiento en las muestras de validación y el entrenamiento finaliza si se observa que el rendimiento en la muestra de validación disminuye incluso cuando el rendimiento en el conjunto de entrenamiento continúa mejorando.
Para las versiones de descenso más pronunciado de AdaBoost, donde se elige en cada capa t para minimizar el error de prueba, se dice que la siguiente capa agregada es máximamente independiente de la capa t : [14] es poco probable elegir un aprendiz débil t+1 que sea similar al aprendiz t . Sin embargo, existe la posibilidad de que t+1 produzca información similar a alguna otra capa anterior. Los algoritmos totalmente correctivos, como LPBoost , optimizan el valor de cada coeficiente después de cada paso, de modo que las nuevas capas agregadas siempre sean máximamente independientes de cada capa anterior. Esto se puede lograr mediante retroajuste, programación lineal o algún otro método.
La poda es el proceso de eliminar clasificadores débiles de bajo rendimiento para mejorar la memoria y el costo de tiempo de ejecución del clasificador mejorado. Los métodos más simples, que pueden ser particularmente efectivos junto con un entrenamiento totalmente correctivo, son el recorte de peso o de margen: cuando el coeficiente, o la contribución al error total de prueba, de algún clasificador débil cae por debajo de un cierto umbral, ese clasificador se descarta. Margineantu y Dietterich [15] sugirieron un criterio alternativo para el recorte: los clasificadores débiles deben seleccionarse de manera que se maximice la diversidad del conjunto. Si dos aprendices débiles producen resultados muy similares, se puede mejorar la eficiencia eliminando uno de ellos y aumentando el coeficiente del aprendiz débil restante. [16]
{{cite journal}}
: Requiere citar revista |journal=
( ayuda ){{cite journal}}
: Requiere citar revista |journal=
( ayuda ){{cite journal}}
: Requiere citar revista |journal=
( ayuda ){{cite journal}}
: Requiere citar revista |journal=
( ayuda ){{cite journal}}
: Requiere citar revista |journal=
( ayuda )