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