From 8bccc3e4bcaffba3c463586610cb6044cbe14902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Monta=C3=B1ana=20G=C3=B3mez?= Date: Tue, 27 Feb 2024 14:24:58 +0100 Subject: [PATCH] Update boostaode algorithm explain --- docs/BoostAODE.docx | Bin 18270 -> 0 bytes docs/BoostAODE.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) delete mode 100644 docs/BoostAODE.docx create mode 100644 docs/BoostAODE.md diff --git a/docs/BoostAODE.docx b/docs/BoostAODE.docx deleted file mode 100644 index ec04a7098264233664bdb50f187f6582144f4785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18270 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 diff --git a/docs/BoostAODE.md b/docs/BoostAODE.md new file mode 100644 index 0000000..648b224 --- /dev/null +++ b/docs/BoostAODE.md @@ -0,0 +1,44 @@ +# Descripción de funcionamiento del algoritmo BoostAODE + +El algoritmo se basa en el funcionamiento del algoritmo AdaBoost, y utilizando una serie de hiperparámetros se activan cada una de las posibles alternativas. + +## Hiperparámetros + +Los hiperparámetros que están definidos en el algoritmo son: + +- **_repeatSparent_ (boolean)**: Permite que se repitan variables del dataset como padre de un SPODE. Valor por defecto _false_. +- **_maxModels_ (int)**: número máximo de modelos (SPODEs) a construir. Este hiperparámetro únicamente es tenido en cuenta si “repeatSparent” se establece como verdadero. Valor por defecto 0. +- **order ({"asc", "desc", "rand"})**: Establece el orden (ascendente/descendente/aleatorio) en el que se procesarán las variables del dataset para elegir los padres de los SPODEs. Valor por defecto _"desc"_. +- **_convergence_ (boolean)**: Establece si se utilizará la convergencia del resultado como condición de finalización. En caso de establecer este hiperparámetro como verdadero, el conjunto de datos de entrenamiento que se pasa al modelo se divide en dos conjuntos uno que servirá como datos de entrenamiento y otro de test (por lo que la partición de test original pasará a ser en este caso una partición de validación). La partición se realiza tomando como la primera partición generada por un proceso de generación de 5 particiones estratificadas y con una semilla prefijada. La condición de salida es que la diferencia entre la precisión obtenida por el modelo actual, y la obtenida por el modelo anterior sea mayor que 1e-4, en caso contrario se sumará uno al número de modelos que empeora el resultado (ver siguiente hiperparámetro). Valor por defecto false. +- **_tolerance_ (int)**: Establece el número máximo de modelos que pueden empeorar el resultado sin suponer una condición de finalización. Valor por defecto 0. +- **_select_features_ ({“IWSS”, “FCBF”, “CFS”, “”})**: Selecciona en caso de establecerlo, el método de selección de variables que se utilizará para construir unos modelos iniciales para el ensemble que se incluirán sin tener en cuenta ninguna de las otras condiciones de salida. Estos modelos tampoco actualizan o utilizan los pesos que utiliza el algoritmo de Boosting y su significancia se establece en 1. +- **_threshold_ (double)**: Establece el valor necesario para los algoritmos IWSS y FCBF para poder funcionar. Los valores aceptados son: + - IWSS: \[0, 0.5\] + - FCBF: \[1e-7, 1\] +- **_predict_voting_ (boolean)**: Establece si el algoritmo de BoostAODE utilizará la votación de los modelos para predecir el resultado. En caso de establecerlo como falso, se utilizará la media ponderada de las probabilidades de cada predicción de los modelos. Valor por defecto _true_. +- **_predict_single_ (boolean)**: Establece si el algoritmo de BoostAODE utilizará la predicción de un solo modelo en el proceso de aprendizaje. En caso de establecerlo como falso, se utilizarán todos los modelos entrenados hasta ese momento para calcular la predicción necesaria para actualizar los pesos en el proceso de aprendizaje. Valor por defecto _true_. + +## Funcionamiento + +El algoritmo realiza los siguientes pasos: + +- Si se ha establecido select_features se crean tantos SPODEs como variables selecciona el algoritmo correspondiente y se marcan como utilizadas estas variables +- Se establecen los pesos iniciales de los ejemplos como 1/m +- Bucle principal de entrenamiento + - Ordena las variables por orden de información mutua con la variable clase y se procesan en orden ascente o descendente según valor del hiperparámetro. En caso de ser aleatorio se barajan las variables + - Si no se ha establecido la repetición de padres, se marca la variable como utilizada + - Crea un Spode utilizando como padre la variable seleccionada + - Entrena el modelo y calcula la variable clase correspondiente al dataset de entenamiento. El cálculo lo podrá hacer utilizando el último modelo entrenado o el conjunto de modelos entrenados hasta ese momento. + - Actualiza los pesos asociados a los ejemplos de acuerdo a la expresión: + + - **wi · eαt** (si el ejemplo ha sido mal clasificado) + + - **wi · et** (si el ejemplo ha sido bien clasificado) + + - Establece la significancia del modelo como αt + - Si se ha establecido el hiperparámetro de convergencia, se calcula el valor de la precisión sobre el dataset de test que hemos separado en un paso inicial + - Condiciones de salida: + - εt > 0,5 => se penaliza a los ejemplos mal clasificados + - Número de modelos con precisión peor mayor que tolerancia y convergencia establecida + - No hay más variables para crear modelos y no repeatSparent + - Número de modelos > maxModels si repeatSparent está establecido