Evalml: AutoMLSearch get_pipeline siempre devuelve canalizaciones con el mismo nombre

Creado en 2 mar. 2021  ·  3Comentarios  ·  Fuente: alteryx/evalml

Repro:

from evalml.automl import AutoMLSearch
from evalml.demos import load_breast_cancer

X, y = load_breast_cancer()
automl = AutoMLSearch(X, y, problem_type="binary", max_batches=1)
automl.search()

pipelines = [automl.get_pipeline(i) for i in range(3)]
assert [p.name for p in pipelines] == ['LightGBM Classifier w/ Imputer', 'LightGBM Classifier w/ Imputer', 'LightGBM Classifier w/ Imputer']

No todas las canalizaciones deben tener el mismo nombre. Los estimadores son diferentes:

[p.estimator.name for p in pipelines]
['Baseline Classifier', 'Decision Tree Classifier', 'LightGBM Classifier']
bug needs design

Comentario más útil

Creo que esto proviene del # 1400. Creo que estamos en un aprieto (juego de palabras): nuestro diseño de canalización se basa en la configuración de atributos de clase para definir las canalizaciones, lo que conduce a tener clases de canalización generadas dinámicamente como lo hacemos en la búsqueda. El problema es que estas canalizaciones no se pueden "exportar" fuera de AutoMLSearch.

Puede haber una solución fácil que estoy pasando por alto, pero creo que esto requerirá una discusión profunda sobre el diseño si queremos solucionar este problema y mantener nuestras tuberías automáticas en condiciones de encurtir.

Todos 3 comentarios

No son solo los nombres; los hiperparámetros (y sospecho que otros valores que se almacenan en la clase) también se actualizan. Esto se debe a que estamos usando la clase GeneratedPipelineBinary y actualizando sus variables de clase. Dado que cada canalización es un GeneratedPipelineBinary , lo actualizará para toda la clase y afectará a todas las instancias.

Creo que esto proviene del # 1400. Creo que estamos en un aprieto (juego de palabras): nuestro diseño de canalización se basa en la configuración de atributos de clase para definir las canalizaciones, lo que conduce a tener clases de canalización generadas dinámicamente como lo hacemos en la búsqueda. El problema es que estas canalizaciones no se pueden "exportar" fuera de AutoMLSearch.

Puede haber una solución fácil que estoy pasando por alto, pero creo que esto requerirá una discusión profunda sobre el diseño si queremos solucionar este problema y mantener nuestras tuberías automáticas en condiciones de encurtir.

Plan
Corto plazo: este problema rastrea la reversión del cambio de # 1400 para resolver el comportamiento defectuoso. Nuestras canalizaciones no admitirán python pickle pero seguirán siendo serializables usando la funcionalidad existente save / load que usa cloudpickle .

A largo plazo: después de la reversión, # 1956 realiza un seguimiento para averiguar cómo deberíamos ayudar a guardar las canalizaciones de evaluación utilizando python pickle .

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