Mostrando entradas con la etiqueta Bagging. Mostrar todas las entradas
Mostrando entradas con la etiqueta Bagging. Mostrar todas las entradas

domingo, 11 de octubre de 2015

Bagging en Paralelo con foreach+doParallel


Si se quiere entrenar un modelo usando la tecnica de bagging (ver concepto de bagging AQUI) y se tienen muchos datos, puede que el proceso demore mucho tiempo.

Una forma de reducir el tiempo es paralelizando los procesos, asignando a cada procesador una parte de los modelos a entrenar y luego unificar los resultados en un único modelo.

Conceptuelmente seria así:





viernes, 6 de marzo de 2015

Bagging de Cluster Compensados

Si se tiene un escenario con datos desbalanceados (como en datos de fraude, por ejemplo) donde la cantidad de casos positivos es muy poca en comparación con los negativos, es probable que los algoritmos no puedan "aprender" a clasificar correctamente los casos positivos.

Existen diferentes técnicas para balancear los datos  (ver referencia 1, 2 y 3), que en algunos casos soluciona el problema y en otros no.

La siguiente técnica es una propuesta (aun sin validar en detalle) que intenta compensar datos desbalanceados y luego crear un clasificador. Consiste en crear cluster de los casos negativos y compensarlo con la totalidad de casos positivos, para luego crear grupos de algoritmos en cada cluster que puedan "aprender" las diferencias entre los positivos y los diferentes tipos de negativos. Esto crearía diferentes algoritmos "especialistas" en cada cluster.

Esta técnica parece funcionar en escenarios desbalanceados donde el costo del error de falsos positivos es compensado con la ganancia en predicción correcta de "algunos" verdaderos positivos, y donde los algoritmos con set normales predicen cerca del 0% de verdaderos positivos.



Conceptualmente sería así:


PASO 1
Creación y compensación de cluster:























PASO 2
Bagging de cluster compensados:





















martes, 3 de febrero de 2015

Modelo Bagging

Si se quiere crear un modelo bagging (ver concepto de bagging AQUI) para predecir distintos set de datos, teniendo algo como:








































sábado, 10 de enero de 2015

Bagging para Clasificador Binario


El siguiente script realiza una predicción usando la técnica bagging con un clasificador binario (ver ejemplo y concepto de bagging publicado AQUI). En este ejemplo se utilizó un Arbol de Decisión usando el package rpart. Para usar bagging con otro clasificador, solo debe cargarse la librería correspondiente y cambiar el funcion del modelo.

Conceptualmente el script sigue estos pasos:







































domingo, 14 de diciembre de 2014

Bagging para mejorar un modelo predictivo

Una forma de mejorar un modelo predictivo es usando la técnica creada por Leo Breiman que denominó Bagging (o Bootstrap Aggregating). Esta técnica consiste en crear diferentes modelos usando muestras aleatorias con reemplazo y luego combinar o ensamblar los resultados.

La técnica de Bagging sigue estos pasos:
1. Divide el set de Entrenamiento en distintos sub set de datos, obteniendo como resultado diferentes muestras aleatorias con las siguientes características:
   - Muestra uniforme (misma cantidad de individuos en cada set)
   - Muestras con reemplazo (los individuos pueden repetirse en el mismo set de datos).
   - El tamaño de la muestra es igual al tamaño del set de entrenamiento, pero no contiene a todos los individuos ya que algunos se repiten.
   - Si se usan muestras sin reemplazo, suele elegirse el 50% de los datos como tamaño de muestra
2. Luego se crea un modelo predictivo con cada set, obteniendo modelos diferentes
3. Luego se construye o ensambla un único modelo predictivo, que es el promedio de todos los modelos.