By: Fernando Velasco, Alberto Ezpondaburu
Cóctel de modelos
¿Quiénes somos? ¿De dónde venimos?¿A dónde vamos?
- Stratians- Data Scientists- Con formación matemática- Proyectos en común: Mediaset
Í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
Regresión y Clasificación
Errores y Medidas
Trade off :
● Over-Fitting : ○ Bias bajo, Varianza alta.○ Modelo complejo y flexible.
● Under-Fitting :○ Bias alto, Varianza baja.○ Modelo simple y rígido.
Normalmente:
Aumentando la complejidad
THANK YOU!
Complejidad y errores
¿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
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
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
Combinación de modelos
Número de modelos entrenadosSampleadoIteracionesEntrenamientoEnsemble de modelos
THANK YOU!
Bagging Boosting
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 mediante un sampleado aleatorio
● 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
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
StratianStratianStratianSomething elseSomething else
Jorge*
Something else
Á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
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
Á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
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:
Bagging: Random ForestBaggins in the forest Bagging: 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
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
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: 801: 120
0: 70 1: 10
0: 10 1: 110
Posteriormente, podemos hacer un ranking de
variables por importancia para hacer la feature
selection
Dudas, preguntas, peticiones...
THANK YOU!