13.10.2016 Views

AdaBoost (boosting) v1.1

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ADABOOST (BOOSTING)<br />

Lic. Diego Gabriel Suárez<br />

Santiago<br />

13 de octubre de 2016 1


CLASIFICADORES DÉBILES<br />

•En inglés son llamados weak learners, los cuales pueden ser clasificadores o<br />

predictores.<br />

•Son moderadamente precisos (simples y funcionan solo ligeramente mejor que una<br />

clasificación aleatoria).<br />

•Algunos ejemplos de ellos son [1] :<br />

• Stub<br />

• Histogramas<br />

• Naïve Bayes<br />

• Regresión logística<br />

• Decision stumps (o árboles de decisión poco profundos).<br />

13 de octubre de 2016 2


BOOSTING<br />

•Fue propuesto por Freund y Schapire en 1989 [2] .<br />

•La idea del <strong>boosting</strong> es generar un clasificador muy preciso a partir de<br />

clasificadores débiles (weak) [3] o simples [2] , en lugar de tener un solo clasificador<br />

complejo [2] .<br />

•Por ejemplo, en lugar de entrenar una red neural grande, se entrenan varias<br />

pequeñas y se combina su salida con el fin de producir la salida final [2] .<br />

•El <strong>boosting</strong> es relacionado con otras técnicas, tales como el bootstrap y el bagging.<br />

Nota: A los clasificadores se les llaman también hipótesis.<br />

13 de octubre de 2016 3


BOOSTING<br />

•Difiere del bagging en el sentido que no permite reemplazo (prueba de precisión<br />

estadística, deja los mejores clasificadores).<br />

•La clasificación final se realiza por un voto mayoritario (3 clasificadores).<br />

13 de octubre de 2016 4


ESTRUCTURA DEL BOOSTING<br />

•H 1 (x), …, H M (x) son clasificadores débiles.<br />

•La decisión de clasificación de salida es<br />

dada por H (x)<br />

•Cada clasificador H m tiene una contribución<br />

α m asociada.<br />

H x = sign σ M<br />

m=1<br />

α m H m x<br />

Clasificadores<br />

débiles<br />

Combinación de<br />

clasificadores<br />

Figura: Diagrama del <strong>boosting</strong> [2] .<br />

13 de octubre de 2016 5


BOOSTING (ALGORITMO)<br />

Entrada:<br />

•Conjunto de entrenamiento Z={z 1 , z 2 , …, z N }, con z i =(x i ,y i ).<br />

Salida:<br />

•H(x), un clasificador adecuado para el conjunto de entrenamiento.<br />

Paso 1 – Dibuja, sin reemplazo, L < N muestras del conjunto de entrenamiento Z,<br />

obteniendo Z *1 ; el entrenamiento con el clasificador H 1 sobre Z *1<br />

Paso 2 - Selecciona L 2 < N muestras de Z con la mitad de las muestras mal<br />

clasificadas por H 1 para obtener Z *2 ; entrena el clasificador débil H 2 en él.<br />

13 de octubre de 2016 6


BOOSTING (ALGORITMO)<br />

Paso 3 – Selecciona todas las muestras de Z que H 1 y H 2 están en desacuerdo;<br />

entrena el clasificador débil H 3 usando estas muestras.<br />

Paso 4 – Se produce el clasificador final como un voto de tres clasificadores débiles.<br />

H x = sgn σ3 n=1 H n x<br />

13 de octubre de 2016 7


BOOSTING<br />

13 de octubre de 2016 8


VENTAJAS Y DESVENTAJAS<br />

1. Rápido.<br />

2. Simple (fácil para programar).<br />

3. No hay parámetros para sintonizar (que no sea el tiempo de parada).<br />

4. Demostrablemente efectivo, siempre y cuando podamos encontrar buenos<br />

clasificadores débiles.<br />

13 de octubre de 2016 9


ADABOOST<br />

•Adaboost (adaptative <strong>boosting</strong>) es un nuevo algoritmo de <strong>boosting</strong> presentado por<br />

Freund y Schapire en el artículo “A Decision-Theoretic Generalization of On-Line<br />

Learning and an Application to Boosting” [1] en 1996.<br />

•El término Adaptive hace alusión a su principal diferencia con su predecesor.<br />

•Ambos algoritmos buscan crear un clasificador fuerte cuya base sea la combinación<br />

de clasificadores débiles h t (x).<br />

13 de octubre de 2016 10


ADABOOST<br />

•<strong>AdaBoost</strong> propone entrenar una serie de clasicadores débiles de manera iterativa,<br />

de modo que cada nuevo clasicador o “weak learner" se enfoque en los datos que<br />

fueron erróneamente clasificados por su predecesor.<br />

•De esta manera el algoritmo se adapta y logra obtener mejores resultados<br />

•Puede haber <strong>AdaBoost</strong> binario y multiclase.<br />

13 de octubre de 2016 11


ESTRUCTURA DEL ADABOOST<br />

Estructura 1 del <strong>AdaBoost</strong> [2] .<br />

13 de octubre de 2016 12


ESTRUCTURA DEL ADABOOST<br />

Estructura 2 del <strong>AdaBoost</strong> [4] .<br />

13 de octubre de 2016 13


ADABOOST (ALGORITMO)<br />

•Inicialmente, cuando T=1 (T=Tiempo) todos los ejemplos son igualmente<br />

probables.<br />

•En las siguientes iteraciones, es más probable seleccionar los ejemplos más<br />

difíciles (los que hacen fallar al clasificador).<br />

•Sea ε t el error asociado a h t<br />

•El valor de α t (peso) surge de intentar optimizar dicho error y es:<br />

13 de octubre de 2016 14


ADABOOST (ALGORITMO)<br />

Algoritmo de <strong>AdaBoost</strong> [4] .<br />

13 de octubre de 2016 15


ACTUALIZA LOS PESOS<br />

Actualización de pesos [2] .<br />

13 de octubre de 2016 16


EJEMPLO DE ADABOOST<br />

13 de octubre de 2016 17


EJEMPLO DE ADABOOST<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

13 de octubre de 2016 18


EJEMPLO DE ADABOOST<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

Vertical or horizontal<br />

half planes (decision<br />

stumps)<br />

ε n = error<br />

α n = valor de confianza<br />

sign = obtiene el signo de un número<br />

ቐ<br />

−1 si número < 0,<br />

0 si número = 0,<br />

1 si número > 0.<br />

13 de octubre de 2016 19


EJEMPLO DE ADABOOST<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

ε n = error<br />

α n = valor de confianza<br />

sign = obtiene el signo de un número<br />

13 de octubre de 2016 20


EJEMPLO DE ADABOOST<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

ε n = error<br />

α n = valor de confianza<br />

sign = obtiene el signo de un número<br />

13 de octubre de 2016 21


EJEMPLO DE ADABOOST<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

0.1<br />

ε n = error<br />

α n = valor de confianza<br />

sign = obtiene el signo de un número<br />

13 de octubre de 2016 22


EJEMPLO DE ADABOOST<br />

0.153<br />

0.153<br />

0.07 0.153<br />

0.07 0.07<br />

0.07<br />

0.07<br />

0.07<br />

0.07<br />

ε n = error<br />

α n = valor de confianza<br />

sign = obtiene el signo de un número<br />

13 de octubre de 2016 23


EJEMPLO DE ADABOOST<br />

0.153<br />

0.153<br />

0.07 0.153<br />

0.07 0.07<br />

0.07<br />

0.07<br />

0.07<br />

0.07<br />

ε n = error<br />

α n = valor de confianza<br />

sign = obtiene el signo de un número<br />

13 de octubre de 2016 24


EJEMPLO DE ADABOOST<br />

0.153<br />

0.153<br />

0.07 0.153<br />

0.07 0.07<br />

0.07<br />

0.07<br />

0.07<br />

0.07<br />

ε n = error<br />

α n = valor de confianza<br />

sign = obtiene el signo de un número<br />

13 de octubre de 2016 25


EJEMPLO DE ADABOOST<br />

0.153<br />

0.153<br />

0.07 0.153<br />

0.07 0.07<br />

0.07<br />

0.07<br />

0.07<br />

0.07<br />

ε n = error<br />

α n = valor de confianza<br />

sign = obtiene el signo de un número<br />

13 de octubre de 2016 26


EJEMPLO DE ADABOOST<br />

ε n = error<br />

α n = valor de confianza<br />

sign = obtiene el signo de un número<br />

13 de octubre de 2016 27


EJEMPLO DE ADABOOST<br />

ε n = error<br />

α n = valor de confianza<br />

sign = obtiene el signo de un<br />

número<br />

13 de octubre de 2016 28


EJEMPLO DE ADABOOST<br />

Por ejemplo<br />

13 de octubre de 2016 29


EJEMPLO DE ADABOOST<br />

Por ejemplo<br />

sign( (0,42*-1) + (0,65*1) + (0,92*1) ) = sign(1,15) = 1<br />

13 de octubre de 2016 30


EJEMPLO DE ADABOOST<br />

-1 1 1<br />

Por ejemplo<br />

sign( (0,42*-1) + (0,65*1) + (0,92*1) ) = sign(1,15) = 1<br />

13 de octubre de 2016 31


EJEMPLO DE ADABOOST<br />

-1 1 1<br />

Por ejemplo<br />

sign( (0,42*-1) + (0,65*1) + (0,92*1) ) = sign(1,15) = 1<br />

13 de octubre de 2016 32


EJEMPLO DE ADABOOST<br />

-1 1 1<br />

Por ejemplo<br />

sign( (0,42*-1) + (0,65*1) + (0,92*1) ) = sign(1,15) = 1<br />

13 de octubre de 2016 33


EJEMPLO DE ADABOOST<br />

-1 1 1<br />

Por ejemplo<br />

sign( (0,42*-1) + (0,65*-1) + (0,92*1) ) = sign(-0,15) = -1<br />

13 de octubre de 2016 34


EJEMPLO DE ADABOOST<br />

-1 1 1<br />

Por ejemplo<br />

sign( (0,42*-1) + (0,65*-1) + (0,92*1) ) = sign(-0,15) = -1<br />

13 de octubre de 2016 35


EJEMPLO DE ADABOOST<br />

-1 1 1<br />

Por ejemplo<br />

sign( (0,42*-1) + (0,65*1) + (0,92*-1) ) = sign(-0,69) = -1<br />

13 de octubre de 2016 36


EJEMPLO DE ADABOOST<br />

-1 1 1<br />

Por ejemplo<br />

sign( (0,42*-1) + (0,65*1) + (0,92*-1) ) = sign(-0,69) = -1<br />

13 de octubre de 2016 37


EJEMPLO DE ADABOOST<br />

-1 1 1<br />

Por ejemplo<br />

sign( (0,42*1) + (0,65*1) + (0,92*-1) ) = sign(0,15) = 1<br />

13 de octubre de 2016 38


EJEMPLO DE ADABOOST<br />

-1 1 1<br />

Por ejemplo<br />

sign( (0,42*1) + (0,65*1) + (0,92*-1) ) = sign(0,15) = 1<br />

13 de octubre de 2016 39


EJEMPLO DE ADABOOST<br />

-1 1 1<br />

Por ejemplo<br />

sign( (0,42*-1) + (0,65*1) + (0,92*1) ) = sign(1,15) = 1<br />

sign( (0,42*-1) + (0,65*-1) + (0,92*1) ) = sign(-0,15) = -1<br />

sign( (0,42*-1) + (0,65*1) + (0,92*-1) ) = sign(-0,69) = -1<br />

sign( (0,42*1) + (0,65*1) + (0,92*-1) ) = sign(0,15) = 1<br />

13 de octubre de 2016 40


OTRO EJEMPLO CON ADABOOST<br />

13 de octubre de 2016 Clasificación con más objetos utilizando la técnica de <strong>AdaBoost</strong> [7] .<br />

41


VENTAJAS Y DESVENTAJAS<br />

Ventajas<br />

Simple y sencillo de programar.<br />

El único parámetro a establecer son las<br />

iteraciones.<br />

El clasificador débil no requiere conocimiento<br />

previo.<br />

Versátil y rápido.<br />

Desventajas<br />

Clasificadores débiles complejos pueden llevar a<br />

overtting.<br />

Clasificadores débiles demasiado débiles pueden<br />

producir un bajo margen y overtting.<br />

Es vulnerable al ruido.<br />

Ventajas y desventajas del <strong>AdaBoost</strong> [5,6] .<br />

13 de octubre de 2016 42


APLICACIONES CON ADABOOST<br />

•Detección de rostros.<br />

•Reconocimiento de dígitos.<br />

Diversos trabajos en donde utilizaron <strong>AdaBoost</strong> [2] .<br />

13 de octubre de 2016 43


VARIANTES DE ADABOOST<br />

Variantes del <strong>AdaBoost</strong> [2] .<br />

13 de octubre de 2016 44


COMPARACIÓN ENTRE BOOSTING Y ADABOOST<br />

Característica Boosting <strong>AdaBoost</strong><br />

Procesamiento de datos Muestreo al azar sin<br />

reemplazamiento<br />

Número de clasificadores 3 Hasta M<br />

Decisión Voto mayoritario Voto ponderado<br />

Tabla de comparación [2] .<br />

Ponderación (sin toma de<br />

muestras)<br />

13 de octubre de 2016 45


REFERENCIAS BIBLIOGRÁFICAS<br />

[1]<br />

http://www.cs.cmu.edu/~10701/lecture/<strong>boosting</strong>.pdf<br />

[2]<br />

http://www.slideshare.net/kangdaeki/<strong>boosting</strong><br />

[3]<br />

https://eva.fing.edu.uy/file.php/514/ARCHIVO/2008/TrabajosFinales2008/Nest<br />

orPaz2008_informe.pdf<br />

[4]<br />

http://jboost.sourceforge.net/presentations/BoostingLightIntro.pdf<br />

[5]<br />

http://www.robots.ox.ac.uk/~az/lectures/cv/adaboost_matas.pdf<br />

[6]<br />

http://catarina.udlap.mx/u_dl_a/tales/documentos/lmt/morales_s_aa/capitulo3.p<br />

df<br />

[7]<br />

http://srl.informatik.uni-freiburg.de/videos<br />

13 de octubre de 2016 46

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!