Within the use of Machine Learning models for prediction, one of the sets of techniques that stands out is the model combination. We will study these combinations with Fernando Velasco, Data Scientist at Stratio, who will explain what they are, why and when to use them. Two of the main general techniques will be explained: boosting and bagging and, finally, how to make feature selection through ensembles.
10. ¿Por qué combinar modelos?
● Tenemos 20 clasificadores binarios independientes con probabilidad de acierto
del 55%
● La suma de ellos sigue una distribución binomial.
Modelo Único :
P(Acierto) = 0.55
σ = 0.49
Ensemble :
P(Acierto) = 0.75
σ = 0.11
11. ¿Por qué combinar modelos?
● Tenemos 20 clasificadores binarios independientes con probabilidad de acierto
del 55%
● La suma de ellos sigue una distribución binomial.
Modelo Único :
P(Acierto) = 0.55
σ = 0.49
Ensemble :
P(Acierto) = 0.75
σ = 0.11
12. Combinación de modelos: ensembles
● Entrenamiento, uniforme o no, de
diferentes modelos.
● Generalmente, los modelos se
entrenan sobre diferentes
muestras
● Combinación de las predicciones
de cada modelo.
● La predicción basada en
diferentes modelos aumenta la
estabilidad, reduciendo la
varianza y limitando los efectos
del ruido
● Dependiendo de la metodología
de la combinación, también
podemos reducir el bias
13. Tipos de ensemble
ENSEMBLES
HYBRID
LEARNING
● Resampling:
○ Bagging: “Bootstrap aggregation”
○ Boosting: Resampleado con pesos
● Hybrid learning:
○ Stacking: Uso de modelos diferentes
RESAMPLING
BoostingBagging
Modelos
heterogéneos
Modelos
homogéneos
Resampleado
uniforme con
repetición
Se asocia un peso a las
instancias en cada
entrenamiento
20. Semejanzas y diferencias entre Bagging y Boosting
● Ambos son ensembles que entrenan N modelos base
para obtener un modelo final...
… Pero aunque en bagging se construyen de manera
independiente, en boosting cada modelo se construye para
mejorar los errores del anterior.
Semejanzas Diferencias
● Ambos generan varios datasets para entrenar los N
modelos
● Ambos toman la decisión promediando los N
modelos entrenados (o mediante un voto mayoritario)
… Pero en el caso del boosting, la media viene pesada por
los resultados de cada modelo, para favorecer a los mejores
modelos base
● Ambos reducen la varianza y proporcionan una
mayor estabilidad
… Pero sólo el boosting reduce el bias. Por otro lado, el
bagging funciona mucho mejor para reducir el over-fit,
mientras que el boosting, en cambio, podría llegar a
aumentarlo
… Pero solo el boosting valora los datos en función de los
casos más complicados de predecir
21. Clasificación con árboles binarios
- Cada nodo sólo tiene dos
posibilidades
- El clasificador resulta en dos clases*
- Son simples y fácilmente
interpretables (caja blanca)
- Capturan estructuras complejas
- Con suficiente profundidad, tienen
poco bias
- Pueden verse afectados por la
varianza y por ruido => son
candidatos a un ensemble.
Laughs
out loud?
Dreams
big?Does the
right
thing?
Helps
others?
Dreams
big? Stratian Something else
Yes
Plays
fair?
Dreams
big?
Yes
Nice to
people?
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
NoYes No
StratianStratian
Stratian
Something else
Something else
Jorge*
Something else
22. Árboles de decisión: algoritmo base
1.- Comenzamos con un árbol vacío
2.- Selección de la variable para dividir el
árbol: - Impureza de Gini
- Ganancia de información
- ...
3.- Evaluar criterio de parada:
- Profundidad
- Separabilidad completa
- Split en todas las variables
4.- Si no paramos, continuar generando el
árbol en cada rama
23. AdaBoost: idea
Pesos ⍵i en las instancias:
Necesitamos calibrarlas para cada
entrenamiento
Pesos αj en los modelos:
También tienen que ser
calibrados para cada
entrenamiento
alpha
25. Árbol de decisión con pesos en las samples
1.- Comenzamos con un árbol vacío
2.- Selección de la variable para dividir el
árbol: - Impureza de Gini
- Ganancia de información
- ...
3.- Evaluar criterio de parada:
- Profundidad
- División completa
- Split en todas las variables
4.- Si no paramos, continuar generando el
árbol en cada rama
26. Árbol de decisión con pesos en las samples
1.- Comenzamos con un árbol vacío
2.- Selección de la variable para dividir el
árbol: - Impureza de Gini
- Ganancia de información
- ...
3.- Evaluar criterio de parada:
- Profundidad
- División completa
- Split en todas las variables
4.- Si no paramos, continuar generando el
árbol en cada rama
La selección se hace teniendo
en cuenta los pesos ⍵i de las
instancias
27. AdaBoost discreto sobre árboles: algoritmo base
● Entrenamiento del árbol
● Evaluación del modelo: cálculo de
los pesos de los errores
● Cómputo del peso αt del modelo
● Cómputo del peso ⍵i de cada
instancia
Inicializamos los pesos al mismo valor:
La selección se hace
teniendo en cuenta los
pesos ⍵i de las
instancias
● Normalización de los pesos
Ahora, para cada una de las iteraciones (modelos):
Finalmente, tomamos el ensemble de los modelos:
28. AdaBoost discreto sobre árboles: algoritmo base
● Entrenamiento del árbol
● Evaluación del modelo: cálculo de
los pesos de los errores
● Cómputo del peso αt del modelo
● Cómputo del peso ⍵i de cada
instancia
Inicializamos los pesos al mismo valor:
La selección se hace
teniendo en cuenta los
pesos ⍵i de las
instancias
● Normalización de los pesos
Ahora, para cada una de las iteraciones (modelos):
Finalmente, tomamos el ensemble de los modelos:
29. Bagging: Random Forest
Baggins in the forestBagging: Random Forest
● Cada árbol es entrenado con un
subconjunto de los datos totales.
● Las variables para cada árbol son un
subconjunto de las variables totales, y
son elegidas de manera aleatoria
30. Selección de variables con Random Forest: permutar variables
● Entrenamiento de un modelo f con
un conjunto de entrenamiento X
● Cálculo de performances (e.g: R²,
AUC, ...) en testing
● Permutación de variables
● Performances con el nuevo
conjunto
● Calculamos cómo afecta cada
variable:
Para cada
variable
31. Selección de variables con Random Forest: Gini
Criterio de split => métrica (Gini, Informacion, Varianza...)
Dreams big?
Yes No
Gini: donde es la proporción de la
clase i
Importancia de una variable en un split:
Importancia en el árbol:
Importancia en el modelo:
0: 80
1: 120
0: 70
1: 10
0: 10
1: 110
Posteriormente, podemos
hacer un ranking de
variables por importancia
para hacer la feature
selection
32. Índice Analítico
Introducción: ¿por qué combinar modelos?
Boosting & Bagging basics
Demo:
○ Implementación de Adaboost con árboles
binarios
○ Feature Selection con Random Forest
1
2
3
Not all that
wander are lost
Any Questions?
https://github.com/fervelasco/training-meetups
Esencialmente, de derivar el error exponencial:
si tenemos
C_m (x_i) = C_{m-1} (x_i) + \alpha_m \cdot k_m (x_i), el error exponencial es:
\sum e^{-y_ic_m (x_i)}
Cambiamos la notación para obtener las omegas
Esencialmente, de derivar el error exponencial:
si tenemos
C_m (x_i) = C_{m-1} (x_i) + \alpha_m \cdot k_m (x_i), el error exponencial es:
\sum e^{-y_ic_m (x_i)}
Cambiamos la notación para obtener las omegas