Copyright (c) 2021 grupos automl Friburg y Hannover
Si bien los primeros marcos AutomL se centraron en optimizar las tuberías ML tradicionales y sus hiperparametros, otra tendencia en AUTOML es centrarse en la búsqueda de arquitectura neural. Para reunir lo mejor de estos dos mundos, desarrollamos auto-pytorch , que optimiza conjuntamente y de manera robusta la arquitectura de red y los hiperparámetros de capacitación para habilitar el aprendizaje profundo totalmente automatizado (AUTODL).
Auto-Pytorch se desarrolla principalmente para admitir datos tabulares (clasificación, regresión) y datos de series de tiempo (pronóstico). Las características más recientes en auto-pytorch para datos tabulares se describen en el documento "Auto-Pytorch Tabular: Multi-fidelity metalearning para Autodl eficiente y robusto" (ver más abajo para la referencia de Bibtex). Los detalles sobre el pytorch automático para las tareas de pronóstico de series temporales multi-horizontales se pueden encontrar en el documento "aprendizaje profundo automatizado eficiente para la pronóstico de series de tiempo" (ver también a continuación para Bibtex REF).
Además, encuentre la documentación aquí.
Desde V0.1.0, AutopyTorch se ha actualizado para mejorar aún más la usabilidad, la robustez y la eficiencia mediante el uso de SMAC como el paquete de optimización subyacente y cambiar la estructura del código. Por lo tanto, pasar de V0.0.2 a V0.1.0 romperá la compatibilidad. En caso de que desee usar la API antigua, puede encontrarla en master_old .
La descripción aproximada del flujo de trabajo de Auto-Pytorch se dibuja en la siguiente figura.
En la figura, los datos son proporcionados por el usuario y la cartera es un conjunto de configuraciones de redes neuronales que funcionan bien en diversos conjuntos de datos. La versión actual solo admite la cartera codiciosa como se describe en el papel Tabular de auto-Pytorch: metal de fidelidad multi-fidelidad para Autodl eficiente y robusto Esta cartera se utiliza para calentar la optimización de SMAC. En otras palabras, evaluamos la cartera en un datos proporcionados como configuraciones iniciales. Luego, API comienza los siguientes procedimientos:
sklearn.dummy que representa el peor rendimiento posible.*1: Las líneas de base son un grupo predefinido de algoritmos de aprendizaje automático, por ejemplo, LightGBM y Sopking Vector Machine, para resolver la tarea de regresión o clasificación en el conjunto de datos proporcionado
*2: Una configuración de hiperparameter de la tubería especifica la elección de los componentes, por ejemplo, algoritmo objetivo, la forma de las redes neuronales, en cada paso y (que especifica la elección de los componentes en cada paso y sus hiperparámetros correspondientes.
pip install autoPyTorch
Auto-Pytorch para el pronóstico de series temporales requiere dependencias adicionales
pip install autoPyTorch[forecasting]
Recomendamos usar Anaconda para desarrollar lo siguiente:
# Following commands assume the user is in a cloned directory of Auto-Pytorch
# We also need to initialize the automl_common repository as follows
# You can find more information about this here:
# https://github.com/automl/automl_common/
git submodule update --init --recursive
# Create the environment
conda create -n auto-pytorch python=3.8
conda activate auto-pytorch
conda install swig
python setup.py install
Del mismo modo, para instalar todas las dependencias para auto-Pytorch-TimeseriesForecasting:
git submodule update --init --recursive
conda create -n auto-pytorch python=3.8
conda activate auto-pytorch
conda install swig
pip install -e[forecasting]
En una palabra:
from autoPyTorch . api . tabular_classification import TabularClassificationTask
# data and metric imports
import sklearn . model_selection
import sklearn . datasets
import sklearn . metrics
X , y = sklearn . datasets . load_digits ( return_X_y = True )
X_train , X_test , y_train , y_test =
sklearn . model_selection . train_test_split ( X , y , random_state = 1 )
# initialise Auto-PyTorch api
api = TabularClassificationTask ()
# Search for an ensemble of machine learning algorithms
api . search (
X_train = X_train ,
y_train = y_train ,
X_test = X_test ,
y_test = y_test ,
optimize_metric = 'accuracy' ,
total_walltime_limit = 300 ,
func_eval_time_limit_secs = 50
)
# Calculate test accuracy
y_pred = api . predict ( X_test )
score = api . score ( y_pred , y_test )
print ( "Accuracy score" , score )Para tareas de pronóstico de series de tiempo
from autoPyTorch . api . time_series_forecasting import TimeSeriesForecastingTask
# data and metric imports
from sktime . datasets import load_longley
targets , features = load_longley ()
# define the forecasting horizon
forecasting_horizon = 3
# Dataset optimized by APT-TS can be a list of np.ndarray/ pd.DataFrame where each series represents an element in the
# list, or a single pd.DataFrame that records the series
# index information: to which series the timestep belongs? This id can be stored as the DataFrame's index or a separate
# column
# Within each series, we take the last forecasting_horizon as test targets. The items before that as training targets
# Normally the value to be forecasted should follow the training sets
y_train = [ targets [: - forecasting_horizon ]]
y_test = [ targets [ - forecasting_horizon :]]
# same for features. For uni-variant models, X_train, X_test can be omitted and set as None
X_train = [ features [: - forecasting_horizon ]]
# Here x_test indicates the 'known future features': they are the features known previously, features that are unknown
# could be replaced with NAN or zeros (which will not be used by our networks). If no feature is known beforehand,
# we could also omit X_test
known_future_features = list ( features . columns )
X_test = [ features [ - forecasting_horizon :]]
start_times = [ targets . index . to_timestamp ()[ 0 ]]
freq = '1Y'
# initialise Auto-PyTorch api
api = TimeSeriesForecastingTask ()
# Search for an ensemble of machine learning algorithms
api . search (
X_train = X_train ,
y_train = y_train ,
X_test = X_test ,
optimize_metric = 'mean_MAPE_forecasting' ,
n_prediction_steps = forecasting_horizon ,
memory_limit = 16 * 1024 , # Currently, forecasting models use much more memories
freq = freq ,
start_times = start_times ,
func_eval_time_limit_secs = 50 ,
total_walltime_limit = 60 ,
min_num_test_instances = 1000 , # proxy validation sets. This only works for the tasks with more than 1000 series
known_future_features = known_future_features ,
)
# our dataset could directly generate sequences for new datasets
test_sets = api . dataset . generate_test_seqs ()
# Calculate test accuracy
y_pred = api . predict ( test_sets )
score = api . score ( y_pred , y_test )
print ( "Forecasting score" , score ) Para obtener más ejemplos, incluida la personalización del espacio de búsqueda, para parelizar el código, etc., consulte la carpeta examples
$ cd examples/ El código para el documento está disponible en examples/ensemble en la sucursal TPAMI.2021.3067763.
Si desea contribuir a auto-pytorch, clone el repositorio y consulte nuestra rama de desarrollo actual
$ git checkout developmentEste programa es un software gratuito: puede redistribuirlo y/o modificarlo bajo los términos de la licencia de Apache 2.0 (consulte el archivo de licencia).
Este programa se distribuye con la esperanza de que sea útil, pero sin ninguna garantía; Sin siquiera la garantía implícita de comerciabilidad o estado físico para un propósito particular.
Debería haber recibido una copia de la licencia APACHE 2.0 junto con este programa (ver archivo de licencia).
Consulte la rama TPAMI.2021.3067763 para reproducir el papel de pytorch de papel tabular: metal de fidelidad multifidelidad para autodl eficiente y robusto .
@article { zimmer-tpami21a ,
author = { Lucas Zimmer and Marius Lindauer and Frank Hutter } ,
title = { Auto-PyTorch Tabular: Multi-Fidelity MetaLearning for Efficient and Robust AutoDL } ,
journal = { IEEE Transactions on Pattern Analysis and Machine Intelligence } ,
year = { 2021 } ,
note = { also available under https://arxiv.org/abs/2006.13799 } ,
pages = { 3079 - 3090 }
} @incollection { mendoza-automlbook18a ,
author = { Hector Mendoza and Aaron Klein and Matthias Feurer and Jost Tobias Springenberg and Matthias Urban and Michael Burkart and Max Dippel and Marius Lindauer and Frank Hutter } ,
title = { Towards Automatically-Tuned Deep Neural Networks } ,
year = { 2018 } ,
month = dec,
editor = { Hutter, Frank and Kotthoff, Lars and Vanschoren, Joaquin } ,
booktitle = { AutoML: Methods, Sytems, Challenges } ,
publisher = { Springer } ,
chapter = { 7 } ,
pages = { 141--156 }
} @article { deng-ecml22 ,
author = { Difan Deng and Florian Karl and Frank Hutter and Bernd Bischl and Marius Lindauer } ,
title = { Efficient Automated Deep Learning for Time Series Forecasting } ,
year = { 2022 } ,
booktitle = { Machine Learning and Knowledge Discovery in Databases. Research Track
- European Conference, {ECML} {PKDD} 2022 } ,
url = { https://doi.org/10.48550/arXiv.2205.05511 } ,
}Auto-Pytorch es desarrollado por los grupos Automl de la Universidad de Friburgo y Hannover.