Clasificación en H2O AutoML

Aug 28 2020

Acabo de empezar a aprender a usar H2O Auto ML y estoy probando un modelo de clasificación binaria.

Estoy tratando de entender por qué las clasificaciones del modelo cambian con cada ejecución.

Los 5 mejores modelos permanecen en el top 5, pero los modelos cambian ligeramente a un rango superior o inferior.

Mientras que DRF ocupó el segundo lugar una vez, la otra vez ocupó el tercer lugar.

Hay un par de razones por las que puedo especular que causan cambios.

  1. La semilla del algoritmo cambia cada vez
  2. No hay marco de tabla de clasificación asignado
  3. RF involucra muestreo aleatorio como parte del proceso que resulta en diferentes árboles construidos cada vez
  4. La tabla de clasificación no cambiará, algún otro cambio en los datos/código es responsable del cambio.

¿Podría ayudarme a entender esto mejor?

Respuestas

2 ErinLeDell Aug 31 2020 at 04:55

Parece que no está estableciendo una semilla, por lo que debe comenzar allí. Para que los algoritmos con aleatoriedad inherente (por ejemplo, XGBoost, GBM, Random Forest) produzcan la misma respuesta cada vez, se debe establecer una semilla aleatoria (como mínimo). En H2O AutoML, hay un solo seedargumento (que se canaliza a todos los algoritmos individuales) y si lo establece en el mismo valor cada vez, la mayoría de los modelos serán los mismos en ejecuciones repetidas. De forma predeterminada, AutoML también realizará una validación cruzada con pliegues aleatorios, por lo que esto también garantiza que se utilicen los mismos pliegues cada vez.

Hay algunas advertencias: H2O Deep Learning no es reproducible (de forma predeterminada) incluso si establece una semilla, por lo que esos modelos siempre cambiarán. Dado que el conjunto apilado "Todos los modelos" utiliza modelos de aprendizaje profundo además de muchos otros modelos, el conjunto final tampoco será reproducible.

Por último, debe usar max_modelsen lugar de max_runtime_secspara controlar cuánto tiempo se debe ejecutar AutoML; de lo contrario, puede obtener una cantidad diferente de modelos en la tabla de clasificación (y en el conjunto apilado de todos los modelos) en ejecuciones posteriores.