Por lo que sé, en términos generales, hay tres formas de tratar los conjuntos de datos binarios desequilibrados:
Opción 1 :
- Cree muestras de validación cruzada k-fold al azar (o incluso mejor, cree muestras k-fold utilizando k-fold estratificado: https://scikit-learn.org/0.16/modules/generated/sklearn.cross_validation.StratifiedKFold.html ).
- Para cada pliegue, aplique una técnica de remuestreo (remuestreo ascendente, remuestreo descendente o una combinación de ambos) por separado en los conjuntos de "entrenamiento" y "prueba".
- Utilizar una métrica "tradicional" para la evaluación: por ejemplo, el AUC de la curva ROC (tasa de TP frente a tasa de FP).
Opción 2 :
- Cree muestras de validación cruzada k-fold al azar (o incluso mejor, cree muestras k-fold utilizando k-fold estratificado).
- No aplique ninguna técnica de remuestreo.
- Utilizar una métrica "alternativa" para la evaluación: por ejemplo, el AUC de la curva Precisión-Recall o algo como la puntuación F (la media armónica de Precisión y Recall).
Opción 3 :
- Utilice algo como XGBoost y ajuste el
scale_pos_weight
( https://xgboost.readthedocs.io/en/latest/tutorials/param_tuning.html ). - Cree muestras de validación cruzada k-fold al azar (o incluso mejor, cree muestras k-fold utilizando k-fold estratificado).
- Utilizar una métrica "tradicional" para la evaluación: por ejemplo, el AUC de la curva ROC (tasa de TP frente a tasa de FP).
Mi pregunta principal es si interpreto correctamente cuáles son las opciones. ¿Hay algún error conceptual en lo que estoy diciendo? ¿Es adecuado utilizar el pliegue k estratificado en los tres casos cuando se trata de un desequilibrio? ¿No es necesario aplicar ningún remuestreo cuando se utiliza XGBoost y se afina scale_pos_weight
? Cuando se aplica algún remuestreo (opciones 1 y 3), ¿tiene sentido utilizar una métrica "tradicional" y no tiene sentido utilizar una métrica "alternativa"? En general, ¿el remuestreo debe aplicarse por separado en los conjuntos de entrenamiento y de prueba? etc.
Además, sería bueno si tienes alguna buena referencia de SMOTE y ROSE, respecto a cómo funcionan, cómo aplicarlos y cómo usarlos con python.