Skip to content

forteg/tesis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

tesis

Tesis de la maestria en ciencia de los datos FOC

Generación de datos sintéticos y comparación de métodos de oversampling con R-GAN

Este proyecto implementa un marco experimental para evaluar métodos de oversampling en problemas de clasificación binaria con fuertes desbalances de clase, comparando:

  • Métodos clásicos:
    • SMOTE
    • Borderline-SMOTE
    • KMeans-SMOTE
    • ADASYN
    • Random OverSampler
    • Sin oversampling (none)
  • Una R-GAN tabular (GAN robusta) diseñada para generar muestras sintéticas de la clase minoritaria.

El código está pensado como soporte empírico para una tesis de maestría sobre generación de muestras sintéticas en bases desbalanceadas con GANs.


Objetivos

  1. Generar escenarios sintéticos controlados variando:

    • número de muestras,
    • número de características,
    • grado de correlación,
    • solapamiento entre clases,
    • nivel de desbalance,
    • nivel de complejidad cualitativa (baja, media, alta).
  2. Evaluar, en cada escenario, el desempeño de distintos métodos de oversampling.

  3. Entrenar varios modelos de clasificación:

    • Logistic Regression
    • Perceptron
    • Random Forest
    • SVM
    • XGBoost

    con búsqueda de hiperparámetros mediante RandomizedSearchCV y validación cruzada estratificada.

  4. Realizar tuning específico de la R-GAN, eligiendo configuraciones de hiperparámetros que maximizan el F1-Score de la clase minoritaria.


Estructura general del proyecto

La estructura puede lucir (aprox.) así:

.
├── GAN.py                    # Implementación de la R-GAN y pipeline de oversampling
├── metodos.py                # Función resampling_method con SMOTE/ADASYN/etc. y GAN
├── modelos.py                # Definición de modelos base (get_modelos)
├── main.py                   # Script principal de experimentos
├── generacion.py             # Función data_sintetica_make_classification, Bases de prueba
├── modelos_hiperparam.py     # Grid de hiperparametros de modelos
├── metricas.py               # evaluar_modelos, results_to_dataframe, etc.
├── input/
│   └── escenarios_full.csv  # Definición de escenarios sintéticos
└── output/
    └── results/                 # Archivos de resultados por escenario


Dependencias

Python >= 3.9 (recomendado)
NumPy
Pandas
scikit-learn
imbalanced-learn
xgboost
PyTorch


## Escenarios sintéticos

El archivo ./input/escenarios_full.csv describe los escenarios a simular. Cada fila representa un escenario y típicamente incluye:

muestras: número de instancias totales

caracteristicas: número de features

correlacion: grado de correlación entre variables

solapamiento: solapamiento entre clases

proporcion: proporción de la clase minoritaria (antes de simular)

nivel: complejidad cualitativa (baja, media, alta)



## La generación de datos se hace con la función:

dataset = data_sintetica_make_classification(
    muestras,
    caracteristicas,
    correlacion,
    solapamiento,
    proporcion
)

Flujo completo del experimento (main.py)

Para cada escenario:

Se lee la fila de escenarios_full.csv.

Se genera el dataset sintético (data_sintetica_make_classification).

Se divide en train/test (70/30).

Para cada método de oversampling:

Si es GAN → tuning de la GAN .

Se obtienen X_res, y_res (train re-balanceado).

Se hace tuning de modelos (RandomizedSearchCV) usando validación cruzada.

Se evalúa cada modelo en el test original:

  F1-Score (clase 1),
  
  Precision, Recall,
  
  Balanced accuracy,
  
  PR (Average Precision / PR-AUC).

Se consolidan los resultados en un DataFrame y se guardan en:
./output/results/<nivel>_<muestras>_<caracteristicas>_<correlacion>_<solapamiento>_<proporcion>.csv

Si hay errores, se registran en ./output/maya/errores.csv.

About

Tesis de la maestria en ciencia de los datos FOC

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors