0% encontró este documento útil (0 votos)
13 vistas19 páginas

Métodos de Ensemble Learning en ML

Este documento explica los métodos de ensemble learning en machine learning. Discuten tres enfoques: bagging, boosting y stacking. Bagging entrena múltiples modelos en subconjuntos de datos y promedia los resultados. Boosting construye modelos secuencialmente para corregir los errores de los anteriores. Stacking combina diferentes tipos de modelos y un modelo supervisor elige la salida. También describen el algoritmo Random Forest como una aplicación de bagging y Adaboost como una variante de boosting.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas19 páginas

Métodos de Ensemble Learning en ML

Este documento explica los métodos de ensemble learning en machine learning. Discuten tres enfoques: bagging, boosting y stacking. Bagging entrena múltiples modelos en subconjuntos de datos y promedia los resultados. Boosting construye modelos secuencialmente para corregir los errores de los anteriores. Stacking combina diferentes tipos de modelos y un modelo supervisor elige la salida. También describen el algoritmo Random Forest como una aplicación de bagging y Adaboost como una variante de boosting.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Machine Learning

Ensemble Learning

Jenny Fajardo Calderín ([Link]@[Link])


Iker Pastor López ([Link]@[Link])
Índice

1. Motivación e ideas básicas


2. Modelos de ensemble
○ Bagging
○ Boosting
○ Stacking

3. Random Forest
Motivación

● Imaginemos que quiero un sistema de predicción de peso


● ¿Cuánto pesan estas naranjas?
○ Podemos indagar en la clase y que hable la democracia…
■ ¿Quién suele cocinar? ¿Quién come fruta? ¿Quién hace las compras normalmente? ¿Quién compra fruta
al peso? ¿A quién le gustan las naranjas? ¿Alguien ha trabajado en una frutería?..

■ De esta forma podemos escoger a la persona (sistema) que mejor prediga

○ También podemos preguntar a todos y tomar el promedio

● ¿Ventajas e inconvenientes de cada enfoque?


Motivación

● Buscar un “experta/o”
○ Se necesita bastante tiempo para elegirlo
○ Su precisión puede que no sea buena (no tiene el día inspirado)

● Preguntar al grupo
○ Es relativamente rápido
○ Es relativamente sencillo
Motivación

● Haciendo números
○ Imaginemos que tenemos 25 modelos de clasificación (binaria)
■ Cada uno tiene una tasa de acierto del 65% (son un bastante malos)

■ Son independientes entre sí

■ Todos votan sobre el resultado a dar

■ La probabilidad de que la mayoría (13 o más) se equivoque en su predicción es del 6%

● Entre todos, tienen una tasa de acierto del 94%!


○ Es más sencillo encontrar 25 modelos con un 65% de acierto que un único
modelo con un 94%
Idea básica

● Idea básica
○ Construir un conjunto de sistemas diferentes
○ Preguntarle a todos y tomar una decisión
■ Por lo general, mejora la capacidad de predicción

■ (Muy) Fácilmente paralelizable

○ Principal inconveniente
■ El resultado puede ser difícilmente analizable
Idea básica
Dataset original de entrenamiento

Paso1: Crear
múltiples
datasets D1 D2 Dt-1 Dt

Paso2:
Entrenamos
diferentes C2 C2 Ct-1 Ct
modelos

Paso3:
Combinamos
los C
clasificadores
3 Enfoques diferentes
● Bagging (Bootstrap Aggregating)
○ Dividimos el conjunto de datos en porciones
○ Utilizamos cada porción para entrenar un sistema (normalmente del mismo tipo)
● Boosting
○ Construimos diferentes modelos (del mismo tipo)
○ Cada uno intenta “enmendar” los errores de los previos
● Stacking
○ Construimos diferentes modelos (de diferentes tipos)
○ Se construye un “supervisor” que elija la salida a dar a partir de los votos
Bagging
● Mejora los resultados si el método es “inestable”
○ Un pequeño cambio en los datos puede variar mucho la salida del modelo
(árboles, redes neuronales,...)
● Extensión:
○ Se puede aleatorizar el método, en lugar de los datos
○ Pesos iniciales en redes neuronales
○ Dar a cada modelo ciertas “columnas” de los datos
Bagging Random Forest
● Es una variante de algoritmo Bagging basado en árboles
○ Se basa en la combinación de árboles de decisión
○ Cada árbol depende de los valores de datos elegidos aleatoriamente
○ Cada árbol se construye con una porción de todos los atributos disponibles
○ Observar que:
■ Los datos que entrena cada árbol pueden variar

■ Las variables que utiliza cada árbol pueden variar

○ Se evita el overfitting
Bagging Random Forest
import [Link] as plt

from sklearn import datasets

from sklearn.model_selection import train_test_split

from [Link] import plot_decision_regions

from [Link] import accuracy_score

from [Link] import RandomForestClassifier

# Cargamos el dataset IRIS

iris = datasets.load_iris()

X = [Link][:, 2:]

y = [Link]
Bagging Random Forest
#

# Creamos los conjuntos de train/test

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1, stratify=y)

# Creamos una instancia del clasificador RandomForest, en este caso para clasificar

forest = RandomForestClassifier(criterion='gini',

n_estimators=5,

random_state=1,

n_jobs=2)

# Fit the model


Bagging Random Forest
#

# Entrenamos el modelo

[Link](X_train, y_train)

# Realizamos la predicción del test, y obtenemos los resultados

y_pred = [Link](X_test)

print('Accuracy: %.3f' % accuracy_score(y_test, y_pred))


Boosting
● Analogía: votación donde cada votante sabe el voto de los votantes anteriores
● Funcionamiento
○ Asignamos pesos a los ejemplos
○ Se entrenan k clasificadores
○ Los pesos de los datos donde un clasificador acierta, disminuyen, los datos
donde falla, aumentan
○ La salida final es el voto ponderado (en función del acierto)
Boosting
● Ejemplo
○ Tenemos 5 ejemplos {1,2,3,4,5}
○ Inicialmente cada uno tiene un peso de 0.2
■ (probabilidad de ser elegidos)

○ Elegimos datos aleatoriamente {2, 4, 4, 3, 2}


○ Entrenamos un clasificador, lo probamos con los datos
■ Acierta en datos 2, 3 y 5 → reducimos sus pesos

■ Falla en 1 y 4 → aumentamos sus pesos

○ En la siguiente ronda, se vuelven a elegir 5 ejemplos, pero ahora, 1 y 4 se


escogerán con más probabilidad
■ El siguiente clasificador se “fijará” más en ellos
Boosting Adaboost
from [Link] import AdaBoostClassifier

from [Link] import make_classification

X, y = make_classification(n_samples=1000, n_features=4,

n_informative=2, n_redundant=0,

random_state=0, shuffle=False)

clf = AdaBoostClassifier(n_estimators=100, random_state=0)

[Link](X, y)

AdaBoostClassifier(n_estimators=100, random_state=0)

[Link]([[0, 0, 0, 0]])

[Link](X, y)
Resumen
● También utiliza un esquema de votos
● Pondera a los modelos según su calidad
● Iterativo: nuevos modelos se influencian de la calidad de los anteriores
○ Guían al nuevo modelo a ser “experto” en los datos para los que otros
fallan
○ Justificación intuitiva: los modelos deben de complementarse los unos a
los otros
○ Variantes:
■ Boosting por datos: los pesos influyen en los ejemplos para entrenar

■ Boosting por peso: los pesos son usados por el método de aprendizaje
Bibliografía
Machine Learning
Ensemble Learning

Jenny Fajardo Calderín ([Link]@[Link])


Iker Pastor López ([Link]@[Link])

También podría gustarte