Mi pregunta se refiere al ajuste de hiperparámetros para algoritmos ML. Tiene más que ver con los aspectos teóricos que con la codificación propiamente dicha.
Supongamos que hay un conjunto de datos extremadamente desequilibrado, como en los casos de detección de fraudes, robos de electricidad, etc., con muy pocas clases positivas (fraudes) en comparación con las clases negativas (casos normales). Para este tipo de casos, tenemos que entrenar el modelo con datos remuestreados y probarlo con datos de prueba reales.
Sin embargo, para el ajuste de parámetros (sin utilizar GridSearchCV), ¿cómo probamos el rendimiento del modelo sin exponerlo a los datos de retención reales, ya que puede dar lugar a un ajuste excesivo puesto que le estamos mostrando los datos de prueba reales, y por lo tanto todo el propósito es derrotado.
He leído que podemos dividir los datos de entrenamiento en un conjunto de entrenamiento (para el entrenamiento del modelo)+eval (para el ajuste de parámetros) y luego seleccionar los parámetros basándonos en este conjunto de validación y finalmente construir el modelo en los conjuntos combinados de entrenamiento+eval.
Pero, ¿puede aplicarse este enfoque también a conjuntos de datos desequilibrados, ya que parece sospechoso en este caso, puesto que estaríamos ajustando nuestros parámetros basándonos en datos remuestreados? ¿O hay alguna otra solución?
Respuesta
¿Demasiados anuncios?A menos que tenga razones para no hacerlo, probablemente debería utilizar la validación cruzada para el ajuste de hiperparámetros. El enfoque que describe (y, de hecho, prácticamente cualquier preprocesamiento que desee realizar en los datos) puede aplicarse dentro de la validación cruzada; el concepto importante que hay que entender es que debe aplicar sus transformaciones en los pliegues de validación cruzada (con pocas excepciones). Es decir, si quiere aumentar la muestra de casos positivos, hágalo en los datos de entrenamiento del conjunto de validación cruzada de forma aislada, como si no supiera nada de los datos que no están en el conjunto de entrenamiento de su actual pliegue de validación cruzada.
En otras palabras, trate los conjuntos de validación como trataría los conjuntos de prueba: déjelos como están y no les saque punta. Transforme los conjuntos de entrenamiento (en su caso, vuelva a muestrearlos) sin utilizar la información de los conjuntos de validación. A continuación, puede evaluar su modelo en los conjuntos de validación y obtener una estimación razonablemente insesgada de su rendimiento. Una vez ajustado el modelo, puede evaluarlo en el conjunto de pruebas, pero hágalo una sola vez; no ajuste el modelo basándose en los resultados del conjunto de pruebas.