Evalml: Haga que automl ajuste automáticamente la mejor canalización en todos los datos de entrenamiento

Creado en 11 dic. 2020  ·  3Comentarios  ·  Fuente: alteryx/evalml

Fondo
Hoy, para obtener una canalización entrenada de automl, debe llamar a fit en la canalización, porque automl siempre devuelve copias no capacitadas de la canalización:

automl.search(X_train, y_train)
best_pipeline = automl.best_pipeline
best_pipeline.fit(X_train, y_train)
best_pipeline.score(X_test, y_test, objectives=['MSE'])
pipeline = automl.get_pipeline(42)
pipeline.fit(X_train, y_train)
pipeline.score(X_test, y_test, objectives=['MSE'])

Desafío
Nos gustaría que sea lo más fácil posible para las personas ejecutar automl, seleccionar una canalización y usar esa canalización para iterar y depurar, generar información y desplegar en producción.

Propuesta
A corto plazo (es decir, este problema): haga que el best_pipeline acceso

automl.search(X_train, y_train)
best_pipeline = automl.best_pipeline
best_pipeline.score(X_test, y_test, objectives=['MSE'])

Si la búsqueda automática aún no se ha ejecutado, ese descriptor de acceso debería generar un error.

Mi recomendación sobre cómo implementar esto es actualizar la búsqueda automática para que se ajuste a la mejor canalización al final y guardar una referencia a esa canalización entrenada.

¡No olvide actualizar la guía del usuario!

También hay implicaciones para las pruebas de rendimiento: deberíamos actualizar Looking Glass para registrar el tiempo de búsqueda automática y el tiempo para adaptarse a la mejor canalización por separado, porque son operaciones independientes.

Futuro
A largo plazo, me gustaría que creáramos una abstracción para mantener una referencia a los datos fuera de la llamada a search . Esto nos permitiría hacer cosas como tener get_pipeline return pipelines entrenados también, sin que tengamos que entrenar todos los pipelines durante la llamada a automl search .

enhancement

Comentario más útil

¿Deberíamos agregar también una bandera train_best_pipeline a search() o __init__ para permitir que el usuario desactive esto? Creo que sería bueno, ya que podrían agregar un tiempo y memoria adicionales significativos para una acción que el usuario podría no querer que ocurra.

Todos 3 comentarios

Entonces, el plan es agregar argumentos para X_test y y_test a la AutoMLSearch.search api? ¿O cabrá en los X y y pasados ​​a search ?

¿Deberíamos agregar también una bandera train_best_pipeline a search() o __init__ para permitir que el usuario desactive esto? Creo que sería bueno, ya que podrían agregar un tiempo y memoria adicionales significativos para una acción que el usuario podría no querer que ocurra.

@freddyaboulton Creo que debería encajar en todos los datos de entrenamiento que se proporcionaron a search

@ kmax12 buen punto, de acuerdo, podemos agregar una bandera train_best_pipeline , por defecto True. En ese caso, TBD qué debería hacer la API si es False. Mi instinto sería simplemente hacer que best_pipeline devuelva una tubería no capacitada, pero si alguien tiene una mejor idea, soy todo oídos. @ bchen1116 FYI

¿Fue útil esta página
0 / 5 - 0 calificaciones